Mam tutaj procesor Intel i7 2700k i chciałbym wiedzieć, jak mogę stwierdzić, które procesory są fizyczne, a które wirtualne (tj. Hiperwątkowość). Obecnie uruchamiam skrypt Conky, aby wyświetlić moją temperaturę procesora, częstotliwości i obciążenia, ale nie jestem pewien, czy zrobiłem to dobrze:
Napisałem własny skrypt, aby uzyskać informacje o temperaturach i częstotliwościach i7z
, ale odpowiadają one tylko rdzeniom fizycznym. Obecnie wyświetlam każdy rdzeń w ten sposób:
${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...
Nie jestem pewien, czy to prawda, z powodu obciążeń i temperatur, które czasem widzę. W /proc/cpuinfo
jaki sposób sortowane są rdzenie? Po pierwsze wszystkie fizyczne, a następnie wirtualne? Każdy rdzeń fizyczny, a następnie jego wirtualny rdzeń (rdzenie)? Jak są sortowane?
ht
Flaga wskazuje jedynie, że wielowątkowości (HTT) jest obsługiwany przez procesor - jeśli nie jest włączone czy nie. Nawet wtedy nie zawsze można polegać, np. Fałszywie wskazuje, że i5 i5-6500 obsługuje HTT: ark.intel.com/content/www/us/en/ark/products/88184/...Poprzednia odpowiedź jest bardzo interesująca.
Po pewnym googlowaniu znalazłem pokrewne tematy:
/server/235825/disable-hyperthreading-from-within-linux-no-access-to-bios
/programming/7274585/linux-find-out-hyper-threaded-core-id
Sprawdzanie, czy HyperThreading jest włączony, czy nie?
W ostatnim linku skrypt Pythona nie działa, gdy host ma wiele fizycznych identyfikatorów. Na końcu próbowałem go zmodyfikować, stosując inny warunek:
Wymiana pieniędzy:
do
Ale to nie działa zgodnie z oczekiwaniami, w oparciu o poprzednią wiadomość. Nawiasem mówiąc, możesz zrobić coś bardziej kompleksowego niż:
z:
[...]
Co ciekawe na hoście z wieloma rdzeniami z włączoną funkcją hyperthreading, jest dystrybucja rdzeni logicznych na sprzęcie.
Na przykład na jednym z moich komputerów (48 rdzeń logiczny, 2 procesory fizyczne, 24 (12 * 2) „prawdziwe rdzenie” (czyli również 24 rdzenie wirtualne)):
Oznacza to, że cpu0 i cpu24 mają ten sam fizyczny „adres” sprzętowy. To samo dotyczy procesorów cpu1 i cpu25 ...
Zasadniczo, jeśli chciałbym wyłączyć hyperthreading z mojego systemu Linux, powinienem wstawić „0” w jednostce centralnej {24..47} / online z
Zauważysz, jak interesujący jest mój system numerowania rdzeni.
źródło
możesz także użyć lscpu:
tutaj rdzenie logiczne 0 i 4 przechodzą do rdzenia 0
źródło