I was recently asked to provide a recommendation for tuning the JVM heap size on vCD 1.5 cells. In researching this I pulled up the vCloud Director Performance and Best Practices white papers for vCD 1.0, vCD 1.5 and vCD 5.1 where I found the following recommendations:
vCloud Director 1.0
vCD 1.0 recommends tuning the heap size based on the size of the inventory:
“By default, JVM heap size is configured to be 1GB for the process. This is good for supporting 5000 inventory cache entries. If the number of cached entries is changed, for example to 15,000 (an additional 10,000) for a large vCloud Director installation, you might need to increate the JVM heap size to support additional cache entries.”
vCloud Director 1.5
The vCD 1.5 paper did not provide any specific recommendations for tuning the heap size.
vCloud Director 5.1
vCD 5.1 recommends tuning the heap size based on the number of concurrent user connections:
"The default configuration of a JVM heap size is 2GB. When there are more than 128 concurrent user operations, we recommend increasing the JVM heap size to 3GB."
This brought to light a couple of questions:
- What are the recommendations for vCD 1.5?
- Why the change from basing the recommendation off the size of the inventory to using the number of concurrent connections?
After a bit of research here’s what I came up with.
As to what the recommendation is for vCD 1.5? The answer is you should follow both recommendations. This is actually true for both vCD 1.0 and vCD 1.5
(1) if you have a small inventory (<5000 objects) and less than 128 concurrent users then no out of the box tuning is recommended.
(2) if you have a large inventory (> 5000 objects) but less than 128 concurrent users then apply the recommendation as outlined in the 1.0 guide (increase heap size based on size of inventory).
(3) if you have a large inventory (>5000 objects) and more than 128 concurrent users then follow the recommendations in the 5.1 doc (increase heap size to 3GB).
And for the second question about why vCD 5.1 no longer bases the recommendation on the size of the inventory and instead uses the number of concurrent users? The answer is twofold: first, starting in vCD 5.1 the default heap size is now set to 2GB. This larger default better accommodates larger inventories. Second, in our internal testing we’ve found the number of concurrent users is the better metric to use. With this, if you are running vCD 5.1 you should follow these guidelines:
(1) Regardless of inventory size, if you have less than 128 concurrent users then no out of the box tuning is recommended.
(2) Regardless of inventory size, if you have more than 128 concurrent users then follow the 5.1 recommendation (increase heap size to 3GB).
Of course, there is no one-size fits all approach and these are just recommendations. But if JVM heap size is a question you have hopefully this will help.
For updates on future posts like this follow me on twitter @Kyle_Gleed