Choosing the number of cores
The number of cores defines the licensing for ArcGIS for Server and eventually how many users you are going to serve. According to Esri, a CPU in a GIS server under average conditions can support about four concurrently active service instances. The key is that if you are planning to serve users, not all will be sending requests at the same time; this means we can safely load more than four users on a single core. This also means a quad-core processor can serve up to 16 concurrent users. Let's do the math: assume an average GIS request takes about 200ms to execute and a single core can serve up to four requests in parallel, which means it can execute all the four requests in just 200ms. How much time does this core take to serve 1,000 requests assuming that they all came in at the same time? The answer is simple. We divide the requests by four and then multiply them by 200ms, which is the time required to execute each request in parallel. It takes 50 seconds to execute 1,000 GIS requests, four at a time, until they are all exhausted. Adding another core will shave half of that time off and serve as many requests. You can use the following formula to calculate the time required:
Where:
Variable |
Description |
---|---|
T |
Time required to execute Q in seconds |
C |
The number of cores in a processor |
Q |
Maximum number of requests or users |
X |
The average execution time for a request, usually 0.2 seconds |
As seen in the previous table, T is the total execution time in seconds to complete Q number of requests; this can also signify the waiting time in the service. As per the equation, adding more cores (C) will decrease T, and having more clock speed will decrease X and will potentially bring T down. Similarly, you can reverse the equation to determine the number of cores required to serve, for example, 2,000 requests in 30 seconds as follows:
We substitute T with 30 seconds; this is my threshold, X will be 0.2 seconds, Q is 2,000, which leads to 3.3 cores, since there is no processor with as many number of cores. The nearest thing is a quad-core processor.