This content is part of the Essential Guide: Taking charge of VM allocation, troubleshooting methods

Proxmox resource pools simplify virtual resource management

Open source Proxmox organizes virtual resources into pools, making it easier to assign user roles, effectively manage VMs and eliminate resource waste.

Effectively managing compute and storage resources is an incredibly important part of an administrator's job, because...

proper virtual resource management can help stop VM sprawl and memory overcommitment. Proxmox, the open source KVM-based platform, offers administrators a cost-effective means of eliminating resource waste and preventing poor performance.

There are several different ways to manage virtual resources within Proxmox. These resources include VMs, storage devices and users. Some resources are managed at the VM level, others at the group level; these groups are referred to as resource pools. Resource pools are essentially groups of resources that can have privileges assigned to them as a single entity. This simplifies management for many items, including assigning user roles to groups of VMs, which can be a pain to do manually. Users who have the rights to manage the pool in question can effectively manage VMs without needing to be directly assigned to them. One real world example of resource pool use and user role assignment would be a larger company in which there are several groups that want to manage their own resources.

Implementing a resource group

Resource pools can also be applied to separate storage duties from daily management duties. To implement a resource group in Proxmox, do the following: Start by selecting the Datacenter object review, then navigate to the permissions tab on the right hand panel. Select Pools from the menu, as shown in Figure A. In the dialog box that pops up, give the resource group a name and an appropriate comment.

Implementing a resource group.
Figure A. Implementing a resource group in Proxmox.

The last step is to add grant rights to the resource pool. To do so, simply highlight the resource pool, select the Permissions tab and then click the Add button in the toolbar as shown in Figure B.

Granting rights.
Figure B. Granting rights to a resource pool.

To add a VM to the newly created resource pool, highlight the resource pool and then, from the right hand window, press the Add button from the tool ribbon and Select VM. At this point, select the appropriate VM and click OK. The VM in question should now move from the root to the newly added pool.

Setting resource constraints

The ability to limit resources to resource pools -- such as those found in VMware -- is not yet available in Proxmox. This isn't ideal, but, according to developers, it's a work in progress. It is, however, possible to place resource constraints on a per VM basis.

To limit the resources that a single VM can use, select the Server view and locate the VM from the left hand menu. From within the screen, select the hardware menu. When you click on various hardware objects, different buttons become active.

To edit the CPU resources beyond basic vCPUs, select CPU options from the ribbon. Here you can allocate CPU units on a weighted basis, as shown in Figure C.

Editing CPU options.
Figure C. Editing CPU options.

Proxmox and KVM use Kernel Samepage Merging (KSM), which is similar to Transparent Page Sharing in ESXi systems. KSM reclaims identical memory pages and points to a single copy when that memory page is needed.

Other resource management methods

Proxmox also uses memory ballooning to reclaim unused memory. In order to make this work, you will need to install the memory balloon driver for the relevant OS.

Once the balloon driver is installed, an administrator can then configure the memory setting to allow the minimum and maximum amount of memory the VM can consume, as seen in Figure D. Proxmox will always ensure that 80% of the minimum RAM is available and that it can then grow as needed.

Configuring memory settings.
Figure D. Configuring memory settings.

Proxmox also allows users to control the virtual disk attached to the server. You can restrict VM disks through criterion, such as read limits and write limits. These criteria can be configured in either megabytes per second or IOPS.

The final way to manage resources in Proxmox is through shares. Shares allow for fine-grained resource management in order to get exact numbers without a specific sum total. Shares are, in a nutshell, weightings for VMs. The greater the number of shares a VM has, the greater the share of resources it will receive on a pro rata basis. If you choose to use shares to manage resources, you should devise a scale for your VMs. If you grant one server a large number of shares and another a small number, under certain circumstances, the smaller VM will be starved of the resources that have been restricted.

Next Steps

Save money on virtualization with Proxmox

Control access to resource pools for better security

How to create shared storage clusters in Proxmox

Dig Deeper on Open source virtualization