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:
SuperMicro Panel
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'' :

  1. komputer wybudził się, bo nie trafiłem myszką w przycisk Reset,
  2. nie trafiłem w przycisk, bo nadal niezbyt wprawnie posługuję się myszką pionową,
  3. myszkę pionową zalecił rehabilitant, bo miałem problemy z nadgarstkiem,
  4. do lekarza trafiłem m.in. przez tzw. łokieć golfisty, który ujawnił się podczas pociągania na drążku,
  5. na drążku zacząłem się podciągać, gdy po wywrotce żaglówki 420 okazało się, że nie dam rady wejść na miecz,
  6. ...
Lem potrafił kontynuować taki ciąg zdarzeń aż do Wielkiego Wybuchu, sprowadzając do absurdu pojęcie przyczynowości.

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:

Do precyzyjnego zmierzenia czasu obliczeń zmotywowało mnie subiektywne wrażenie, że obliczenia są wyjątkowo powolne. Dlatego na wszystkich powyższych maszynach zapuściłem obliczenia dla czarnej dziury poruszającej się z prędkością v=0.75c w gazie Własowa o temperaturze beta=mc^2/kT=1, z poziomem refinementu siatki level=3. Miało być 2, ale tym razem omsknęła się klawiatura, przez co test był dosyć długi. Ale za to bardzo miarodajny. Poniżej jego wyniki, w tabeli wzorowanej na standardowych (szeregowych) benchmarkach Mathematici.

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!

Black Hole at speed v=0.75c