как я могу получить истинное использование многоядерного процессора с поддержкой hyperthreading?
например, рассмотрим 2-ядерный процессор, выражающий 4 виртуальных ядра.
однопоточная рабочая нагрузка теперь будет отображаться как 100% в top
, Так как одно ядро виртуальных ядер используется полностью. Процессор и top
работайте так, как ожидалось, как если бы было 4 настоящих ядра.
С двумя потоками, однако, вещи получают arkward: если все работает хорошо, они сбалансированы до двух реальных ядер, так что мы получили 200% использования: два раза 100% и два бездействующих виртуальных ядер, и используют все доступные мощности процессора. Мне кажется, все в порядке.
однако, если два потока будут работать на одном реальном ядре, они будут отображаться как использование в два раза 100%, что составляет 200% использования виртуального ядра. Но на реальной стороне это было бы одно ядро, разделяющее свою власть на двух потоках, которые затем используют только половину общей мощности процессора.
так номера использования, показанные top
не может используется для измерения общей загрузки ЦП.
интересно, как hyperthreading балансирует два виртуальных на реальном ядре. Если два потока занимают разное количество циклов, будут ли виртуальные ядра "адаптироваться" таким образом, что оба показывают 100% нагрузку, даже если реальная нагрузка отличается?