16 rdzeni nie jest wykorzystywanych z 80 rdzeni

11

Niedawno odkryłem, że nasz serwer nie wykorzystuje już wszystkich 80 wątków w systemie. Wygląda na to, że 16 rdzeni jest zawsze bezczynnych, pomimo dużego obciążenia systemu.

Jest to serwer Dell PowerEdge R900, z 4 gniazdami, 4 razy 10-rdzeniowy Xeon. Więc 40 rdzeni, z HT 80 wątkami. (Procesor Intel (R) Xeon (E) E7- 4850 @ 2,00 GHz). Pamięć systemowa to 512 GB z systemem Ubuntu 14.04.1 LTS. Nie zrestartowałem jeszcze serwera, miałem nadzieję tego uniknąć.

uname -a
Zestaw Linux 3.13.0-35-generic # 62-Ubuntu SMP Pt 15 sierpnia 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

Sprawdzę następujące:

Temperatura zmierzona za pomocą i7z: (nie może wyświetlić 4 gniazd

Prędkość procesora od cpuinfo 1994.00Mhz
Rzeczywista częstotliwość (bez rozliczania Turbo) 1994 MHz

Gniazdo [0] - [rdzenie fizyczne = 10, rdzenie logiczne = 20, maks. Rdzenie online kiedykolwiek = 10]
  Mnożnik procesora 15x || Częstotliwość taktowania magistrali (BCLK) 132,93 MHz
  TURBO WŁĄCZONE na 10 rdzeniach, WŁĄCZONE hiperwątkowość
  Maksymalna częstotliwość bez uwzględnienia Turbo 2126,93 MHz (132,93 x [16])
  Maksymalny mnożnik TURBO (jeśli włączony) z rdzeniami 1/2/3/4/5/6 to 0x / 0x / 0x / 0x / 0x / 0x
  Rzeczywista częstotliwość prądu 1994.02 MHz (maks. Poniżej)
        Rdzeń [id rdzenia]: Rzeczywista częstotliwość (Mult.) C0% Zatrzymanie (C1)% C3% C6% Temp
        Rdzeń 1 [1]: 1994.01 (15,00x) 100 0 0 0 75
        Rdzeń 2 [5]: 1994.00 (15,00x) 100 0 0 0 77
        Rdzeń 3 [9]: 1994.02 (15,00x) 100 0 0 0 76
        Rdzeń 4 [13]: 1994.00 (15,00x) 100 0 0 0 77
        Rdzeń 5 [17]: 1994.00 (15,00x) 100 0 0 0 77
        Rdzeń 6 [21]: 1994.00 (15,00x) 97,7 0,404 0 1,86 77
        Rdzeń 7 [25]: 1994.00 (15,00x) 94,5 0 1 5,27 77
        Rdzeń 8 [29]: 1994.00 (15,00x) 100 0 0 0 76
        Rdzeń 9 [33]: 1994.00 (15,00x) 99,8 0 1 1 75
        Rdzeń 10 [37]: 1994.00 (15,00x) 100 0 0 0 73
  Maksymalna częstotliwość bez uwzględnienia Turbo 2126,93 MHz (132,93 x [16])
  Maksymalny mnożnik TURBO (jeśli włączony) z rdzeniami 1/2/3/4/5/6 to 0x / 0x / 0x / 0x / 0x / 0x
  Rzeczywista częstotliwość prądu 1994.02 MHz (maks. Poniżej)
        Rdzeń [id rdzenia]: Rzeczywista częstotliwość (Mult.) C0% Zatrzymanie (C1)% C3% C6% Temp
        Rdzeń 1 [1]: 1994.02 (15,00x) 100 0 0 0 74
        Rdzeń 2 [5]: 1994.00 (15,00x) 100 0 0 0 76
        Rdzeń 3 [9]: 1994.02 (15,00x) 100 0 0 0 76
        Rdzeń 4 [13]: 1994.00 (15,00x) 100 0 0 0 77
        Rdzeń 5 [17]: 1994.00 (15,00x) 100 0 0 0 76
        Rdzeń 6 [21]: 1994.00 (15,00x) 97 0 1 2,43 77
        Rdzeń 7 [25]: 1994.00 (15,00x) 92,9 0 1 6,81 77
C0 = Procesor działa bez zatrzymania 00x) 100 0 0 0 75
C1 = Procesor pracuje z zatrzymaniem (stany> C0 to oszczędzanie energii) 1 1 75
C3 = Rdzenie działające przy wyłączonym PLL i wyłączonej pamięci podręcznej 0 0 73
C6 = Wszystko w stanie podstawowym C3 + zapisane w pamięci podręcznej ostatniego poziomu
  Powyższe wartości w tabeli podano w procentach w ciągu ostatnich 1 sek
[identyfikator rdzenia] odnosi się do numeru rdzenia w / proc / cpuinfo
Komunikat „Wartości śmieci” jest drukowany po odczytaniu wartości śmieci
  Ctrl + C, aby wyjść

Bezczynność: ostatnie 16 rdzeni jest w 100% bezczynnych:

mpstat -p ALL 1:
Średnia: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Średnia: wszystkie 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Średnia: 0 92,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,07
Średnia: 1 94,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 6,00
Średnia: 2 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Średnia: 3 83,33 0,00 2,08 0,00 0,00 0,00 0,00 0,00 0,00 14,58
Średnia: 4 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Średnia: 5 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
.................................................. ........
Średnia: 64 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 66 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 67 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 71 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 77 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Najważniejsze numery ładowania:

do góry - 17:41:48 do 35 dni, 6:28, 15 użytkowników, średnia obciążalność: 77,69, 70,48, 62,73
Zadania: łącznie 1327, 44 uruchomionych, 1281 śpiących, 2 zatrzymane, 0 zombie
% Cpu (s): 63,7 us, 13,6 sy, 0,0 ni, 22,3 id, 0,2 wa, 0,0 hi, 0,2 si, 0,0 st
KiB Mem: 52837942 + łącznie, 52553190 + używane, 2847524 wolne, 535660 buforów
Wymiana KiB: łącznie 78124032, 2105608 używane, 76018416 bezpłatnie. 40637328 + pamięć podręczna Mem

Czasami% bezczynności nie jest już równy 100, ale nieco mniej, jak widać tutaj, ale przeważnie pozostaje na 100% bezczynności.

Średnia: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Średnia: wszystkie 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Średnia: 64 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Średnia: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 66 0,00 0,00 2,63 0,00 0,00 0,00 0,00 0,00 0,00 97,37
Średnia: 67 0,00 0,00 0,13 0,13 0,00 0,00 0,00 0,00 0,00 99,75
Średnia: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 71 0,00 0,00 0,12 0,00 0,00 0,00 0,00 0,00 0,00 99,88
Średnia: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 77 0,00 0,00 0,13 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Średnia: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Średnia: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Uruchomiłem również to polecenie, aby upewnić się, że wszystkie są w trybie online:

dla COUNT w `seq 01 79`; wykonaj echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; 

Za pomocą programu HTop mogę wizualizować pasek użycia procesora na wątek i widzę 64 słupki wypełnione i 16 pustych (ostatnie 16).

Kiedy próbuję rozpocząć proces w rdzeniu> 63 również nie udaje się:

root @ server: ~ # zestaw zadań -c 63 czas
Użycie: czas [-apvV] [-f format] [-o plik] [--append] [--verbose]
       [--portability] [--format = format] [--output = plik] [--version]
       [--quiet] [--help] polecenie [arg ...]
root @ server: ~ # zestaw zadań -c 64 czas
zestaw zadań: nie można ustawić powinowactwa pid 0: nieprawidłowy argument
root @ server: ~ # zestaw zadań -c 65 czas
zestaw zadań: nie można ustawić powinowactwa pid 0: nieprawidłowy argument

Powiązany wątek: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores

EDYCJA: Okazuje się, że rdzenie są wyłączane w locie, ale nie uruchamiają się poprawnie. Wydaje się, że na tych niedostępnych rdzeniach działają procesy, ale nie można na nich rozpocząć żadnego nowego procesu. Zgodnie z dziennikiem dmesg rdzenie są wyłączane i włączane szybko po sobie. Muszę powiedzieć, że zamierzeniem było wyłączenie tych rdzeni, dlatego wyłączyliśmy tę „funkcję”. Przykładowy dziennik DMESG:

[Mon Jan 12 12:42:40 2015] kvm: wyłączanie wirtualizacji na CPU79
[Pon 12 stycznia 12:42:40 2015] smpboot: CPU 79 jest teraz offline
…
[Pon 12.12 12:43:12 2015] smpboot: Uruchamianie węzła 0 Procesor 79 APIC 0xf3
[Mon Jan 12 12:43:12 2015] kvm: włączanie wirtualizacji na CPU79

Włączamy / wyłączamy rdzenie poprzez:

dla COUNT w `seq 64 79`; wykonaj echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; gotowe

Nigdy nie łączyliśmy tych poleceń z naszymi 16 niedostępnymi rdzeniami, ponieważ zwykle powyższe polecenia działają poprawnie. (próbowaliśmy również wyłączyć powermanager, ale to nie pomogło)

HenrivdGeest
źródło
1
Dlaczego Ty lub Twoja firma nie korzystaliście z serwera Ubuntu zamiast Ubuntu dla zwykłych komputerów?
XperianX
1
Nie jest niemożliwe, aby 16 z Twoich rdzeni było faktycznie przyzwyczajonych do pojemności MAX, pozostawiając 16 wirtualnych rdzeni bez użytecznego marginesu.
anonimowy2
1
Czy wszystkie 8 rdzeni (16 wirtualnych) na jednym fizycznym procesorze, czy są one rozmieszczone na wszystkich 4 gniazdach? Jeśli są zlokalizowane na jednym fizycznym procesorze, czy to możliwe, że te rdzenie uległy awarii?
Jibberish51
2
Zastanawiam się, czy gdzieś w systemie jest kod reprezentujący maskę powinowactwa procesora z zaledwie 64 bitami, co uniemożliwia procesowi wykorzystanie ostatnich 16 rdzeni.
kasperd
Biorąc pod uwagę, że 80-16 = 64, wydaje mi się, że istnieje jakieś sztuczne ograniczenie maksymalnej liczby rdzeni do użycia. Być może każde uruchomione oprogramowanie jest ustawione na maksymalnie 64 rdzenie, a może nie może wygenerować więcej niż 64 wątków.
Clonkex,

Odpowiedzi:

1

Nie wszystkie programy mogą używać wielu wątków. na przykład php. Jeśli jeden proces php potrzebuje dużo procesora, tylko 1 procesor może się maksymalnie wydłużyć. A inni będą bezczynni.

Carl
źródło