Home | Research | For Students | Publications | Talks | PSNS | Codes | WebLog | Personal |
Resetujące się komputery to ostatnio plaga. Po komputerze domowym szaleć zaczął ,,superkomputer'' kupiony dla naszego zakładu, ZTWiA w IFT UJ. Przy czym lepszym określeniem wydaje się być używane w naszych rozmowach określenie ,,duży komputer''. 10 lat temu, tak, ale obecnie można wstawić do ,,zwykłego'' komputera PC procesor 64-rdzeniowy, np: AMD Ryzen Threadripper 3990X, o ile kogoś stać.
Mowa o komputerze Super Micro GPU SuperWorkstation 7049GP-TRT , wyposażonym w dwa procesory 28-rdzeniowe Intel Xeon Gold 6238R. Daje to 112 logicznych procesorów w systemie operacyjnym. Wyposażony jest m.in. w 376 GB RAM oraz GPU Tesla T4.
Początkowo, przez około miesiąc, wykorzystywany był do liczenia (numerycznie) bardzo dużej liczby całek eliptycznych w Mathematice. Potrzebne jest to w projekcie opisującym akrecję cząstek ciemnej materii na poruszające się czarne dziury. Wszystko działało bezproblemowo i zadziwiająco szybko (o tym dalej), do czasu instalacji sterowników GPU. Od tego momentu komputer ,,znikał'' po losowym, jak się wydawało, czasie rzędu godzin. Jedynym znanym sposobem aby przywrócić go do życia był reset.
Należy tu wyjaśnić osobom, które nie mają do czynienia na co dzień z tego typu komputerami, że jego obsługa nie przewiduje fizycznego dostępu do maszyny. Pod pojęciem ,,reset'' nie rozumiemy więc wsadzenia palca w przycisk, czy wyjęcia wtyczki z gniazdka, bo jest to niemożliwe. Komputer stoi w serwerowni, gdzie dostęp ma nieliczna grupa osób, a wchodzi się tam niezwykle rzadko. Jest to wątpliwa przyjemność, z powodu potwornego hałasu i zimna (lub gorąca, zależnie od obciążenia). O ile starsze superkomputery, np: Deszno , miały rodzaj wysuwanego laptopa z ekranem, za pomocą którego można było coś fizycznie z nim zrobić, to obecnie wszystko odbywa się zdalnie, poprzez węzeł wirtualny. Ma on wirtualny monitor, klawiaturę, DVD czy wreszcie przyciski Reset i Power.
Resety trwały grubo ponad miesiąc, nie pomogła reinstalacja systemu. Zaczęło to wyglądać na uszkodzenie sprzętowe, aczkolwiek już od jakiegoś czasu podejrzewałem, że problem może mieć coś wspólnego z zarządzaniem energią. Wiadomo, że presja na energooszczędne rozwiązania prowadzi czasem do paranoi, skutkując bardzo uciążliwymi skutkami ubocznymi. Dla przykładu, monitor pełniący u mnie sporadycznie rolę odbiornika TV, wyłącza się zanim ktokolwiek zdąży nacisnąć przycisk zmiany źródła sygnału na pilocie. Przełączenie PC/TV wymaga więc wielokrotnego włączania/wyłączania, aż za którymś razem się uda. Po prostu zarządzanie energią wykrywa brak sygnału przez ok. sekundę i wyłącza urządzenie. Podobnie zachowuje się monitor podłączony do PC na którym teraz piszę. Ponieważ komputer stoi w pokoju obok, po włączeniu trzeba przejść kawałek aby zalogować się do Windows 10. W tym czasie monitor zdąży się wyłączyć. Nie byłoby więc dziwne, że nowoczesny ,,zielony'' superkomputer przechodzi w stan niskiego poboru mocy, gdy nie jest używany. Może nie po sekundzie, ale po paru godzinach? Czemu jednak nie wybudza się przy próbie zalogowania?
Rozwiązanie problemu przyszło, jak to bywa, przypadkiem. Próbując wykonać kolejny reset w panelu, który wygląda tak:
myszka ,,obsunęła się'' i nacisnąłem omyłkowo Power Down zamiast Reset . I nagle komputer
wybudził się, dokładnie w taki sam sposób jak zwykły komputer PC w stanie hibernacji po naciśnięciu przycisku
zasilania skonfigurowanego w BIOS-ie jako Soft-Off.
Zacząłem drążyć temat, znajdując opis podobnego problemu . Po wpisaniu w konsoli linuksowej polecenia:
odrzywolek@xeongold:~$ systemctl status sleep.target
dostajemy coś takiego:
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: e>
Active: inactive (dead)
Oct 29 12:25:36 xeongold systemd[1]: Reached target Sleep.
Oct 30 16:33:08 xeongold systemd[1]: Stopped target Sleep.
Oct 30 16:53:08 xeongold systemd[1]: Reached target Sleep.
Oct 30 17:18:54 xeongold systemd[1]: Stopped target Sleep.
Ewidentnie, po 20 minutach, system wchodzi w stan uśpienia, z którego wybudza wyłącznie przycisk
zasilania (wirtualny!). Posiadając taką wiedzę, można po prostu wyłączyć hibernację poleceniem:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Od tego momentu problemów nie ma. Do rozwiązania prowadzi łańcuch zdarzeń w stylu lemowskiej
,,De Impossibilitate Vitae and De Impossibilitate Prognoscendi'' :
Korzystając z tego, że duży komputer znowu zaczął działać normalnie, wykonałem benchmark kodu używanego do liczenia całek. Z powodu awarii byłem zmuszony znaleźć inne źródła mocy obliczeniowej:
Czas obliczeń | CPU | Mathematica Kernels | CPU speed/turbo | L1 cache | L2 cache | L3 Cache | Memory | Memory type & speed | Chipset/machine | OS | Date |
---|---|---|---|---|---|---|---|---|---|---|---|
7 h 4 min | 2x Intel Xeon Gold 6238R | 56/112 | 2.2 GHz | ? | ? | 38.5 MB | 376 GB | DDR4-2933 MHz | Intel C621 | Ubuntu 20.04.1 LTS | 2020-10-31 |
14 h 55 min | 4x4xIntel E7450 | 90 | 2.4 GHz | ? | ? | 1 MB | 256 GB | ? | deszno, complex01 | Debian GNU/Linux 10 (buster) | 2020-10-31 |
18 h 43 min | 4x AMD Opteron 6380 | 64 | 1.4-2.5/3.4 GHz | 4x768 kB | 16 MB | 16 MB | 250 GB | DDR4-2133 (1066 MHz) | shiva, mp64 | Debian 10 (buster) | 2020-10-30 |
28 h 9 min | Intel(R) Xeon(R) CPU E5-1650 v2 | 12 | 3.5 GHz | ? | ? | 12288 kB | 32 GB | ? | X79 | Ubuntu 18.04.5 LTS | 2020-11-01 |
Kilka słów komentarza. Ewidentnie, nowy duży komputer bije na głowę wszystkie pozostałe. Nie tylko
posiada rekordowy wynik
w standardowym benchmarku Mathematici, ale także posiada 56 fizycznych rdzeni. Pracuje z dosyć wysokim
jak na taki CPU zegarem. Zmiana liczby kerneli z 56 (fizyczne) na 112 (logiczne, z hyper-threadingiem)
nie wpływa zauważalnie na czas obliczeń (7h0min vs 7h4min). Generalnie, hyper-threading nic lub niewiele
przyspiesza, ale powoduje, że przeładowanie CPU zadaniami staje się nieszkodliwe. Stary superkomputer
Deszno, pomimo takiego samego zegara i prawie 2x większej liczby fizycznych rdzeni jest dwukrotnie wolniejszy.
64-corowy Opteron z klastra Shiva jest jeszcze wolniejszy, prawdopodobnie z powodu obniżonego do 1.4 GHz zegara.
Zwykły 6-rdzeniowy PC jest w porównaniu tak wolny, że jeszcze nie skończył obliczeń tylko 2x wolniejszy niż Deszno! Na razie brak wyniku z cyfronetu/ZEUS-a, bo okazało się, że do uruchomienia Mathematici trzeba mieć specjalne uprawnienia,
a uruchamianie benchmarków bez zezwolenia jest niezgodne z regulaminem (do wyjaśnienia).
I wreszcie cel tego wszystkiego, ściśle obliczony w ramach OTW, przepływ ciemnej materii dookoła poruszającej się czarnej dziury!