Я знаю о другом вопросе по этой теме, но он не совсем утоляет мой зуд.
Вот моя — вероятно, довольно упрощенная — модель того, как выполняется работа процессора. На хосте у нас есть пул логических процессоров. На виртуальных машинах у нас есть некоторое количество виртуальных процессоров. Каждый виртуальный ЦП периодически получает задание. Гипервизор выбирает запасной логический ЦП из пула, чтобы фактически выполнять эту работу. Когда все сделано, логический ЦП возвращается в пул.
В этой модели «время ожидания ЦП на отправку» представляет собой время между тем, когда у виртуального ЦП есть какие-то задачи, и тем, когда гипервизор может найти запасной логический ЦП. Таким образом, как и в любой другой эквивалентной установке, использующей пул ресурсов, метрика, измеряющая время ожидания освобождения ресурса, должна оставаться фактически постоянной до тех пор, пока не наступит момент, когда пул опустеет и гипервизор должен будет ждать освобождения ресурса. логический ЦП, который должен быть возвращен в пул.
Предположим также, что у нас меньше виртуальных ЦП, чем логических ЦП (так что можно не учитывать затраты на управление гипервизором на логических ЦП). Мне кажется, что в этом случае мы могли бы никогда исчерпывает пул логических ЦП, поэтому значение времени ожидания ЦП на отправку должно оставаться фактически постоянным. (Это предполагает, что работа одного виртуального ЦП может когда-либо обрабатываться только одним логическим ЦП, но я не понимаю, как это может быть неправильно.)
Это кажется правильным, или я упускаю что-то важное? У меня есть коллега на работе, который имеет дело с хостами Hyper-V, который говорит мне, что я не прав, но изо всех сил пытается объяснить, как это сделать (или, по крайней мере, я изо всех сил пытаюсь его понять).