Resource Allocation
This document is a suggested guide for allocating ISLE host resources based on your ISLE environment.
-
Note: These are recommended defaults which sometimes include a range. Your needs may require more resources to be added. It is not recommended to go below the defaults for the Staging and Production environments.
-
For the Production and Staging storage needs, ISLE End users should plan on these numbers increasing over time as their collections grow.
-
It is generally recommended that Staging and Production mirror each other in size.
Resource Allocation by ISLE Environment / System
| Resource | Demo | Local | Test | Staging | Production |
|---|---|---|---|---|---|
| OS | Mac/Windows/Linux | Mac/Windows/Linux | Mac/Windows/Linux | Ubuntu / CentOS | Ubuntu / CentOS |
| RAM | 4 GB | 4 - 8+ GB | 4 GB | 16 GB | 16 - 32+ GB |
| CPU | 1 | 1 - 2 | 1 - 2 | 2 - 4 | 2 - 4+ |
| Storage - OS | 3 - 5+ GB | 6 - 10+ GB | 3 - 5+ GB | 50 - 100+ GB | 50 - 100+ GB |
| Storage - Fed data | 5 - 10+ GB | 5 - 10+ GB | 5 - 10+ GB | 3 - 6+ TB | 3 - 6+ TB |
- For Fed data storage, it is recommended that a minimum overhead of about
100 - 250 GBof free space is kept on the disk so that Fedora's ActiveMQ system doesn't shutdown due to a lack of space. You might be able to get away with less overhead. - If using Blazegraph, add an additional mandatory minimum of
4 GBto any system's RAM resource requirements to the overall total. - If using Varnish, you may find the system will be more performant if you increase the system memory by an additional
1 -2 GBof memory to the overall total. -
For Production and Staging ISLE host servers, a minimum of an additional
4 - 8GB should be used for a swapfile. -
KEY
OS= Operating SystemRAM= MemoryCPU= Processor(s) / CoresFed data= Fedora datastreamStore (/mnt/data/fedora/datastreamStore) storageStorage - OSincludes the Docker volumes that store additional data
Memory Allocation and Tuning Concepts
The tuning and configuration of ISLE can vary based on system resources and traffic, it is recommended that you start out with the default memory allocations and test the results as you increase or decrease in key areas.
| Container | Ranges | Demo | Local | Test | Staging | Production |
|---|---|---|---|---|---|---|
| isle-fedora | MIN | 128M | 128M | 128M | 1024M | 1024M |
| MAX | 768M | 768M | 768M | 4096M | 4096M | |
| isle-solr | MIN | 0 | 0 | 0 | 1024M | 1024M |
| MAX | 512M | 512M | 512M | 2048M | 2048M | |
| isle-images | MIN | 0 | 0 | 0 | 512M | 512M |
| MAX | 512M | 512M | 512M | 1024M | 1024M | |
| isle-blazegraph | MIN | 1024M | 1024M | 1024M | 4096M | 4096M |
| MAX | 4096M | 4096M | 4096M | 6144M | 6144M |
- The remainder of free memory is assumed to be taken or used by the remaining ISLE containers e.g.
isle-apacheorisle-mysqlas needed. -
If you would like to specifically set memory by container which is out of scope of current ISLE setups and documentation, please read more in the Docker-compose documentation under the
Resourcessection or search by the termmem_limit. -
KEY
- MAX = JAVA_MAX_MEM (you'll adjust these settings in the docker-compose.*.yml file)
- MIN = JAVA_MIN_MEM (you'll adjust these settings in the docker-compose.*.yml file)
High Volume Ingest
When planning for ingesting objects at a high volume and rate, it would be highly advisable to consider the following prior to starting any large ingest:
- As the Apache container will be under a high load to create derivatives:
- Add a minimum of at least
4 GBof memory to your Staging and Production systems. -
If possible, add an additional
1 -2 CPUsto your Staging and Production systems. -
Anticipate the size of the incoming objects or collections (data) to be ingested and double-check that you have storage capacity on your Staging and Production systems.
- This can vary greatly depending on content types and size of objects to be ingested.
- A good rule of thumb is to conservatively factor in that newly created derivatives and additional datastreams will take up to 1.25 to 1.5 x your storage space.
- For example if an ISLE end user has
50 GBof tiffs to be ingested, they should plan on having a minimum of60 - 75 GBof available storage space. This isn't always a hard and fast rule but will avoid situations where space runs out mid-ingest.
- For example if an ISLE end user has
Varnish Allocation for a Production System
- Example configuration for a Production ISLE host server using
16 GBof memory. - Expect to allocate about 40 - 50% of the host server memory for all of the Java / Tomcat based images
isle-fedorashould have the most e.g.4096 MBor4 GBisle-solrshould have the second most e.g.2048 MBor2 GBisle-imageservicesshould have the third most e.g.1024 MBor1 GB- If using
isle-blazegraph, this image should also be using a minimum of4096 MBor4 GBof memory
- Keep about
2 -3 GBfree for the remaining images e.g.isle-apache,isle-mysqletc.- This would leave you roughly
1 - 2 GBto allocate to the Varnish cache. Start with256to512 MBand work your way up as needed. - You can adjust the amount that Varnish puts into memory in the supplied
.envfile- On the line:
VARNISH_MALLOC=256myou can change the amount of memory to a higher value other than the default256Megabytes. We recommend that you start with 1-2 GB for now to tune further as your resources and needs warrant.
- On the line:
- This would leave you roughly
- There are additional potential memory allocation and tuning recommendations for Varnish from Varnish-software
-
If you need to read more about how to use or change Varnish's cache settings, please start here
-
Recommendation: Adding more memory to the Production ISLE host system from the default recommended
16 GBmight be recommended here if running all optional components e.g.isle-varnish,isle-blazegraph, the TICK stack, etc.