Может ли kvm guest получить больше процессоров, чем имеет?

1782
Zhen

Когда я запускаю виртуальную машину с одним виртуальным процессором внутри KVM, возможно ли, что виртуальная машина может получить больше тактов процессора, чем может иметь один целый процессор, если на хосте нет другого виртуального процессора? Другими словами, может ли VM получить больше процессоров, чем имеет? У меня нет предела пропускной способности процессора для моего виртуального компьютера.

Поскольку планировщик Linux (CFS) экономит работу, если я правильно понимаю, планировщик всегда должен быть занят, если есть над чем поработать. В этом случае некоторые темы в моем вм.

Если на самом деле vm может иметь более одного ЦП, обслуживающего его, как vm сообщает об использовании ЦП? > 100% или просто 100%. Какое количество процессоров в / proc / cpuinfo виртуальной машины?

Я думаю, что это интересный вопрос или, может быть, глупый вопрос. Я планирую провести несколько экспериментов, если ответа не будет.

Заранее спасибо. Zhen

2
Делай эксперименты. Я ** подозреваю **, что один процессор получит один поток и что он никогда не будет быстрее, чем одно ядро ​​на вашем реальном процессоре. Если у вас есть 2 ядра «реального оборудования» и 1 ядро ​​в виртуальной машине, которые будут использовать до 50% (1/2) от вашей реальной мощности процессора. С 2 ядрами до 100%. С тремя виртуальными ядрами до 100% (ну, больше невозможно), но с виртуальными ядрами производительность хуже. (Для простоты: до 2/3 скорости, но на практике немного меньше из-за дополнительных накладных расходов) Hennes 11 лет назад 0

1 ответ на вопрос

1
Zhen

Протестировано, результат показывает, что гость НЕ может получить больше ЦП, чем ему требуется, даже если планировщик Linux сохраняет работу.

Я провел несколько простых экспериментов, используя микро-тест, который в основном вращает процессор. Хост - двухъядерный компьютер, на котором работает KVM с одним гостевым виртуальным компьютером.

Я запускаю несколько приложений-бенчмарков в гостевой виртуальной машине одновременно, чтобы посмотреть, сможет ли оно получить больше ресурсов процессора, чем заслуживает. Результат выглядит следующим образом:

  • Когда vm настроен с 1 виртуальным процессором, sar сообщает о ~ 100% загрузки ЦП в виртуальной машине и ~ 50% в хосте. Верхняя команда в хосте показывает 2 потока KVM.

  • Когда vm настроен с двумя виртуальными процессорами, sar сообщает о ~ 100% загрузки ЦП в виртуальной машине и ~ 100% в хосте. Верхняя команда в хосте показывает 3 потока KVM.

Таким образом, моя теория заключается в том, что KVM назначит отдельный поток для каждого виртуального ЦП, и дополнительный поток используется для некоторых действий управления. Таким образом, виртуальная машина с одним виртуальным процессором не может обслуживаться одновременно несколькими процессорами хоста.

Получается глупый вопрос :)

Похожие вопросы