This issue is to track an idea for a script-based GPU load balancer that would be invoked by vglrun. Ideally this script would, if VGL_DISPLAY/-d is auto:
- Call
nvidia-smi and amdconfig to build a list of available GPUs for which load information can be obtained, as well as the load of each GPU.
- Somehow figure out which X screen is attached to the least-loaded GPU. I'm not quite sure how to do this.
nvidia-smi can be used to figure out whether any Xorg processes are attached to the least-loaded GPU (not sure whether amdconfig can do the same thing), and ps can obtain the command line (and thus the X display number) of the Xorg process, but that doesn't tell me which X screen is attached to which GPU (there can be multiple screens per Xorg process.)
- Set
VGL_DISPLAY to the X screen of the least-loaded GPU.
- ???
- Profit.
This does not depend on #10, but it would need to accommodate that new feature. The idea is that #10 would work the way the old GLP feature used to work on Solaris/SPARC, i.e. it would be activated by specifying a device path rather than an X display in VGL_DISPLAY/-d. Similarly, this feature could be extended by specifying autoegl instead of auto, thus instructing the script to find an EGL device path instead of an X display. If (2) above proves impossible or unwieldy, then this feature might have to rely on EGL.
This issue is to track an idea for a script-based GPU load balancer that would be invoked by vglrun. Ideally this script would, if
VGL_DISPLAY/-disauto:nvidia-smiandamdconfigto build a list of available GPUs for which load information can be obtained, as well as the load of each GPU.nvidia-smican be used to figure out whether any Xorg processes are attached to the least-loaded GPU (not sure whetheramdconfigcan do the same thing), andpscan obtain the command line (and thus the X display number) of the Xorg process, but that doesn't tell me which X screen is attached to which GPU (there can be multiple screens per Xorg process.)VGL_DISPLAYto the X screen of the least-loaded GPU.This does not depend on #10, but it would need to accommodate that new feature. The idea is that #10 would work the way the old GLP feature used to work on Solaris/SPARC, i.e. it would be activated by specifying a device path rather than an X display in
VGL_DISPLAY/-d. Similarly, this feature could be extended by specifyingautoeglinstead ofauto, thus instructing the script to find an EGL device path instead of an X display. If (2) above proves impossible or unwieldy, then this feature might have to rely on EGL.