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


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


2
2018-06-19 18:26


происхождения




ответы:


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

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

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


2
2018-06-19 18:40



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