Skip to content

Estimating Compute Resource’s Capacity

In this topic, you will learn how to estimate a compute resource’s capacity and either make oversell possible or prevent it.

If you plan to start hosting with SolusVM 2, you need to estimate how many virtual servers (or just "servers" from now on) can be created on one compute resource. We call it estimating a compute resource’s capacity.

It’s impossible to give exact numbers because they depend on various factors, for example, the business scenario, hardware, datacenters, and so on. However, we can share some estimates based on our experience.

We’ll cover two common business scenarios and also give you general recommendations on estimating a compute resource’s capacity for any business scenario.

Partial CPU Load Business Scenario

We assume that all servers have plenty of allocated resources but not all servers use all available resources all the time.

The scenario and capacity estimation are based on the following premises:

  • CPU capacity can be up to 900% of the initial value.

    For example, if your compute resource has 12 CPU logical cores, the maximum quantity of 2vCPU servers you can create is the following:

    12 (a number of vCPU on the compute resource) × 9 (900% capacity) / 2 (vCPU per server) = 54 servers

  • RAM capacity can be up to 300% of the initial value.

  • A compute resource is considered to be overloaded when load average reaches 85% of its maximum capacity.

    For example, if your compute resource has 12 CPU logical cores, you can create the following number of 2vCPU servers taking into account the CPU overload threshold:

    12 (a number of vCPU on the compute resource) * 9 (900% capacity) * 0.85 (maximum load average) / 2 (vCPU per server) = 45 servers

  • A compute resource is considered to be overloaded when RAM reaches 90% of its maximum capacity.

  • A compute resource contains servers of the same specification (for example, each sever has 2 CPU and 2 GiB RAM).
  • The estimation is valid for the qcow2 storage type. If you use another storage type, the estimation may differ.

Note

We don’t mention disk I/O because it depends on the environment (namely, HDD/SSD type and speed).

For estimation, we take the compute resource that has the following specification:

  • CPU: AMD Ryzen 5 3600 Hexa-Core (12 vCPU cores)
  • RAM: 64GiB

In the table below, you can see how many servers of different specifications you can create from the compute resource.

Note

The servers have regular load.

Server specification The number of created servers in terms of CPU The number of created servers in terms of RAM Note
1 CPU + 1 GiB RAM Up to 91 servers Up to 91 servers You can allocate more RAM but you can’t create more servers due to the CPU limit.
2 CPU + 2 GiB RAM Up to 45 servers Up to 45 servers You can allocate more RAM but you can’t create more servers due to the CPU limit.
2 CPU + 4 GiB RAM Up to 43 servers Up to 43 servers You can allocate more CPU but you can’t create more servers due to the CPU limit.
4 CPU + 4 GiB RAM Up to 22 servers Up to 22 servers You can allocate more CPU but you can’t create more servers due to the CPU limit.

Note

Ensure that the total sum of swap and memory space is greater than or equal to all the memory configured for running guests.

Full CPU Load Business Scenario

We assume that environment is heavily utilized most of the time. For example, this is a development environment, which is always active.

The scenario and capacity estimation are based on the following premises:

  • CPU capacity can be up to 150% of the initial value. For example, if your compute resource has 12 CPU logical cores, the maximum quantity of 2vCPU servers you can create is the following:

    12 (a number of vCPU on the compute resource) × 1.5 (150% capacity) / 2 (vCPU per server) = 9 servers

  • RAM capacity can be up to 150% of the initial value.

  • A compute resource is considered to be overloaded when load average reaches 85% of its maximum capacity.

    For example, if your compute resource has 12 CPU logical cores, you can create the following number of 2vCPU servers taking into account the CPU overload threshold:

    12 (a number of vCPU on the compute resource) * 1.5 (150% capacity) * 0.85 (maximum load average) / 2 (vCPU per server) = 7 servers

  • A compute resource is considered to be overloaded when RAM reaches 90% of its maximum capacity.

  • A compute resource contains servers of the same specification (for example, each sever has 2 CPU and 2 GiB RAM).
  • The estimation is valid for the qcow2 storage type. If you use another storage type, the estimation may differ.

Note

We don’t mention disk I/O because it depends on the environment (namely, HDD/SSD type and speed).

For estimation, we take the compute resource that has the following specification:

  • CPU: AMD Ryzen 5 3600 Hexa-Core (12 vCPU cores)
  • RAM: 64GiB

In the table below, you can see how many servers of different specifications you can create from the compute resource.

Note

The servers have regular load.

Server specification The number of created servers in terms of CPU The number of created servers in terms of RAM Note
1 CPU + 1 GiB RAM Up to 15 servers Up to 15 servers You can allocate more RAM but you can’t create more servers due to the CPU limit.
2 CPU + 2 GiB RAM Up to 7 servers Up to 7 servers You can allocate more RAM but you can’t create more servers due to the CPU limit.
2 CPU + 4 GiB RAM Up to 7 servers Up to 7 servers You can allocate more CPU but you can’t create more servers due to the CPU limit.
4 CPU + 4 GiB RAM Up to 3 servers Up to 3 servers You can allocate more CPU but you can’t create more servers due to the CPU limit.

General Recommendations

The procedure below will help you estimate a compute resource’s capacity and performance for any business scenario.

To estimate a compute resource’s capacity and performance:

  1. Start creating servers to reach 200% of CPU capacity. For example, if your compute resource has 12 vCPU cores, create 12 servers with 2 vCPUs.
  2. Create CPU load for half of the servers you created during the previous step. In our example, for 6 servers.
  3. Keep creating servers. At the same time, monitor servers’ CPU usage and performance.

    Creation of new servers consumes CPU and the compute resource should be able to handle it without affecting the servers.

    Note

    When you check RAM, monitor /var/log/syslog or /var/log/messages for any reports from OOM killer.

  4. If the performance is satisfactory, return to step 1 and repeat it with the 400% capacity limit.

  5. Repeat step 2 and 3.
  6. At some point, creation of new servers will start affecting the existing servers. It means that you’ve found your compute resource’s capacity.

Note

In most cases, CPU capacity is more important than RAM. Usually, you can increase RAM but you can’t do the same with CPU.

Back to top