Nova Scheduler should be able to schedule the VM instance based on Infrastructure-oriented or application-oriented constraints.

Registered by Abhishek Mahajan on 2019-09-04

Nova Scheduler should be able to schedule the VM instance based on Infrastructure-oriented (like forbids and count) and application-oriented (like restrict, distribute and latency) constraints.

Service provider may want to restrict some host machines only for running some specific services for security and performance reasons.
To do so there should be some forbid constraints so that to prevent a VM instance from being allocated on a host.

As the number of co-hosted VM instances increase on host machine performance degrades and may violate the SLA. The performance of disk can decrease if there are some I/O intensive applications on VM instances. Similarly with network intensive applications, VM management and CPU utilization may increase. To avoid such condition(which can violate customers SLA), there should be option to provide the maximum number of VM limit count for some host machines.

It is proposed that admin can configure the maximum limit of VM instances for each host. And also able to forbid some VM instances from specific host machines. This forbid can be host level or availability zone based.

We can have some example configuration like. For a availability zone z1, we can have maximum CPU utilization of 80% and RAM utilization of 90%. And maximum VM instance 15 per host. For zone z2 we can have maximum CPU utilization of 90% and RAM utilization of 95%, and maximum VM instance 20 per host. Both the availability zone can have same type of infrastructure server in same geographical region. If some hosts servers are running some security application in z1 zone. It should be possible to forbid the VM instances from some projects being allocated that servers.

Based on some government enforced obligation (like EU data Protection 95/46/EC directive). User may require to have VM instances always in some specific region or location(like EU countries). Or user may want VM instances on host closer to his geographical location, for better application performance. It should be possible to configure some restriction or affinity to allow VM instances using particular region host always.

There are scenarios where it is required to create a replica of VM instances (eg. disaster recovery). In such scenarios based on fault tolerance mechanism each replica should be placed on different host server to avoid single points of failure. In such scenario it should be possible to distribute replica to different host servers. User should be able to define the VM instances pairs or more which should be distributed.

Latency can be a SLA constraint, if a user having different VM instances, between two VM instances there can't be more latency than some defined max value. So user and admin can define latency between different servers and when same user is using multiple VM instances it should be possible to enforce the mapping to allocate two or more VM instances such that the network latency between the two is less than the max latency agreed (between user and operator).

Blueprint information

Not started
Abhishek Mahajan
Needs approval
Series goal:
Milestone target:

Related branches




Work Items

This blueprint contains Public information 
Everyone can see this information.


No subscribers.