Можно ли рассматривать поток как ядро ​​в QEMU?

289
Daniel41550

При использовании многопоточного ЦП можно ли рассматривать поток как ядро, чтобы удвоить количество доступных ядер по сравнению с гостевой ОС?

2

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

2
Austin Hemmelgarn

Предполагая, что вы имеете в виду «поток» в том же смысле, что и поток выполнения, обеспечиваемый такими технологиями, как Intel HyperThreading, или реализациями SMT в AMD Ryzen (или Sun / Oracle / кто угодно UltraSPARC, или любым другим числом платформ), тогда да, но, вероятно, не по причинам, которые вы могли бы подумать.

На низком уровне «потоки» в данном ядре имеют некоторую форму общих ресурсов, хотя то, что они совместно используют, зависит от реализации (почти весь общий кэш, но помимо этого это своего рода удар или промах). Однако в том, что касается пользовательских приложений, они ничем не отличаются от отдельных ядер (некоторые платформы различают физические ЦП (количество пакетов на ядро ​​в пакете) от логических ЦП (количество потоков на ядро ​​и время пакетов). ), но реально пользовательские программы почти никогда не относятся к ним по-другому).

В случае QEMU это фактически полностью отделено от того, что он предоставляет гостевой системе. По умолчанию он содержит ровно одно ядро ​​и ничего не раскрывает в топологии оборудования хост-системы. С использованием-smpвозможность предоставления произвольных топологий. Имея только число, он моделирует один ЦП с таким количеством ядер, но для многих платформ вы можете указать точные значения количества ядер в пакете, количества потоков в ядре и количества доступных сокетов. Таким образом, теоретически вы могли бы выставить 8 ядер с 2 TPC (нитями на ядро) Ryzen 7 для гостя QEMU как 16 независимых ядер, или одно ядро ​​с 16 потоками, или даже как 16 отдельных пакетов ЦП с 1 ядро каждого. Вы даже можете предоставить гостю больше виртуальных ядер, чем физических систем в системе, и в этом случае эти ядра будут мультиплексированы между всеми физическими процессорами, которые у вас есть (это действительно полезно для тестирования).

Так будет ли какая-то польза от попыток выйти за рамки использования потока в качестве ядра и добавления большего количества ядер к существующим? Как при использовании одного ядра в качестве 4-х ядер ((реальное ядро ​​+ гиперпоточность) * 2). Daniel41550 5 лет назад 0

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