[pve-devel] opensource vm scheduler : btrplace

Alexandre DERUMIER aderumier at odiso.com
Wed May 29 10:00:06 CEST 2019


Hi,

I was looking on different vm scheduling algorith and implementations yesterday,

and I think I have found the holy grail :)


http://www.btrplace.org/

It's a constraint vm scheduling algorithm, (GPL2)
that mean you can describe rules like

- I want 80% max cpu,ram usage on nodes
- I want affinity/antifinity on this group of vm
- I want exclude theses vms from this nodes
- I want to dhutdown this node
- ....
  (they are around 15 differents kinds of constraints algo implemented)

https://github.com/btrplace/scheduler/wiki/Advanced-migrations-scheduling

and The algorithm compute the whole placements (which is super difficult to implement fastly, as the number of combinaisons compute can be really hurge),
and give the whole migration order. (benchmarks show some seconds to compute 10000vms on 10000 nodes)
It's also taking in count the estimated time of migration (based on network bandwith and also number of dirty pages changes in qemu),
and do parallel migrations.

It's also taking in count the state of a vm (started/stopped/just booted).
and it's possible to do different models (like vm->live migration, lxc->stop/start , as migration time is different)


So it could works both with ressources scheduling, and constraints on HA groups. (and could improve current HA too, with better placement on failover)


They are a small interactive demo here
http://www.btrplace.org/play/

(source code of the demo frontend:https://github.com/btrplace/play,backend:https://github.com/btrplace/playd)


Some presentations (a lot in french, as it's a research project of a french university, but it's seem to be used by nutatix in production):
https://webcast.in2p3.fr/video/a_flexible_virtual_machine_placement_algorithm_for_iaas_clouds_to_fit_evolving_user_requirements
https://fhermeni.github.io/pubs/hermenier-rescom17.pdf

some academic papers:
http://www.btrplace.org/pubs/hermenier-socc17.pdf
http://www.btrplace.org/pubs/kherbache-tcc17.pdf


Now, the main problem, is that it's java. (seem that scientific like it, redhat rhev/ovirt have also implement scheduling algo model with java).
I don't known if it could be implemented in proxmox? (or at least with a daemon like the daemon, and rest api call from perl to java? Importing java class in perl ???)






More information about the pve-devel mailing list