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 GB
of 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 GB
to 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 GB
of memory to the overall total. -
For Production and Staging ISLE host servers, a minimum of an additional
4 - 8
GB should be used for a swapfile. -
KEY
OS
= Operating SystemRAM
= MemoryCPU
= Processor(s) / CoresFed data
= Fedora datastreamStore (/mnt/data/fedora/datastreamStore) storageStorage - OS
includes 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-apache
orisle-mysql
as 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
Resources
section 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 GB
of memory to your Staging and Production systems. -
If possible, add an additional
1 -2 CPUs
to 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 GB
of tiffs to be ingested, they should plan on having a minimum of60 - 75 GB
of 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 GB
of memory. - Expect to allocate about 40 - 50% of the host server memory for all of the Java / Tomcat based images
isle-fedora
should have the most e.g.4096 MB
or4 GB
isle-solr
should have the second most e.g.2048 MB
or2 GB
isle-imageservices
should have the third most e.g.1024 MB
or1 GB
- If using
isle-blazegraph
, this image should also be using a minimum of4096 MB
or4 GB
of memory
- Keep about
2 -3 GB
free for the remaining images e.g.isle-apache
,isle-mysql
etc.- This would leave you roughly
1 - 2 GB
to allocate to the Varnish cache. Start with256
to512 MB
and work your way up as needed. - You can adjust the amount that Varnish puts into memory in the supplied
.env
file- On the line:
VARNISH_MALLOC=256m
you can change the amount of memory to a higher value other than the default256
Megabytes. 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 GB
might be recommended here if running all optional components e.g.isle-varnish
,isle-blazegraph
, the TICK stack, etc.