Previous page

Next page

Locate page in Contents

Print this page

Managing CPU Pools

Note: The feature is experimental.

A CPU pool is a set of nodes with equal CPU features, enabling live migration of virtual machines and Containers between nodes of the CPU pool.

CPU pools require a High Availability cluster to work.

Adding Nodes to CPU Pools

Notes:

1. Nodes with CPUs from different vendors, e.g. Intel and AMD, cannot be added to same CPU pools.

2. Before adding Nodes to a pool stop all virtual machines and Containers on the Node, including all service Containers with IDs smaller than 101 (e.g., Container 1).

The easiest way to add a Node to a CPU pool is to run the following command on it:

# cpupools join

The Node will be added to a default CPU pool..

Default pools have the following features and limitations:

  • The naming pattern is default_<intel|amd>N, e.g., default_intel0, default_amd0, etc.
  • A preset, unchangeable basic CPU mask provides maximum hardware compatibility at the expense of advanced CPU features. Different CPU features masks are used for different CPU vendors.
  • Nodes which do not support the basic CPU features mask are placed in different default CPU pools, e.g., default_intel1, default_amd2, etc.
  • Nodes cannot be added to specific default CPU pools on purpose.

To make sure that as many common CPU features as possible are enabled for Nodes in a pool for best performance, you can move the required Nodes to a custom CPU pool. To do this:

  1. On each Node to be added, run the cpupools move command. For example:

    # cpupools move mypool

    The Node will be moved to the CPU pool mypool.

    Notes: If the CPU pool does not exist, it will be created.

  2. On any Node in the new pool, run the cpupools recalc command to update the CPU features mask and make sure that as many common CPU features as possible are enabled. For example:

    # cpupools recalc mypool

    Note: Custom CPU pools are created with the same basic CPU features mask as default pools.

The general recommendation is to group Nodes with CPUs of the same or similar microarchitecture, generation or family as they have the same or similar features. This way most of the CPU features will remain available for Nodes after applying the CPU features mask to the pool. This approach will help ensure the best possible performance for Nodes and at the same time guarantee live migration compatibility.

Monitoring CPU Pools

To see which CPU pools exist in your cluster and which Nodes are in them, run the cpupools stat command on any Node in the cluster. For example:

# cpupools stat

default_intel0:

320117e17894401a

bec9df1651b041d8

eaea4fc0ddb24597

mypool:

ca35929579a448db

* f9f2832d4e5f4996

The identifiers listed are Virtuozzo Storage Node IDs which you can obtain with the shaman -v stat command. For example:

Cluster 'pcs1'

Nodes: 5

Resources: 1

NODE_IP STATUS NODE_ID RESOURCES

10.29.26.130 Active bec9df1651b041d8 0 CT

* 10.29.26.134 Active f9f2832d4e5f4996 0 CT

10.29.26.137 Active ca35929579a448db 0 CT

10.29.26.141 Active 320117e17894401a 0 CT

M 10.29.26.68 Active eaea4fc0ddb24597 1 CT

...

Note: The asterisk marks the current Node (on which the command has been run).

Removing Nodes from CPU Pools

To remove the current Node from a CPU pool, run the cpupools leave command on it:

# cpupools leave