Я хотел бы знать, как работает vCPU и как он «связан» с реальным процессором - как ESXi управляет реальными аппаратными ресурсами процессора для удовлетворения потребностей vCPU? Использует ли vCPU все доступные ядра, многопоточность и т. Д.? Где найти документы, описывающие конкретные алгоритмы работы vCPU? На сайте VMware полно документации. Я знаю, что искал там, но нашел только информацию о настройке vCPU, но я хотел бы знать, что происходит «под капотом».
Нашел эту статью: http://www.zdnet.com/virtual-cpus-the-overprovisioning-penalty-of-vcpu-to-pcpu-ratios-4010025185/ но мне нужно гораздо внимательнее.
Сомневаюсь, что вы найдете информацию об используемых алгоритмах. VMware, скорее всего, считает свой планировщик ЦП коммерческой тайной (хотя здесь я могу ошибаться).
На высоком уровне vCPU - это абстрактная конструкция, которая воспринимается гостем как ядро процессора. Планировщик ЦП VMware затем берет данные, которые должны быть выполнены из виртуального ЦП, и выполняет их на физическом ядре ЦП. Не гарантируется выполнение на том же физическом ядре, что и последний поток на этом виртуальном ЦП, но планировщик пытается сохранить выполнение на том же ЦП, если это возможно по причинам кеширования, а если это невозможно, он пытается сохранить его включенным. тот же узел NUMA - опять же для производительности.
Таким образом, виртуальный ЦП - это не физическое ядро. Это не физический процессор. Он не выполняется одновременно на всех физических ядрах. Это примерно равно физическому ядру ЦП с точки зрения производительности в системе без конкуренции за ресурсы, но это не соотношение 1: 1 между виртуальным ЦП и физическим ядром.