Gdy malina zalicza glebę, logi prawdę powiedzą

W poprzednim wpisie pt. Service down, service down. Raspberry Pi w sytuacji kryzysowej wspominałem o losowych freezach malinki. Miałem nic przy tym nie robić, ale stało się to bardzo uciążliwe, bo potrafiła się zawiesić po kilku godzinach od restartu (dziękuję Krzyśku za wiadomość). Poszukiwania rozpocząłem na sucho, bez wglądu w logi – byłem poza domem. No i udało się znaleźć rozwiązanie, które zostało potwierdzone przez logi systemowe (dmsg prawdę ci powie).

Objaw zwiechy był dość dziwny, ale jasno wskazywał na jakiś problem z dyskiem. Malina nie odpowiadała na SSH, komendy, ale usługi załadowane do pamięci RAM były dostępne. Mogłem np. połączyć się przez WireGuard, czy do bota IRC na Telegramie, działał HTTP/S z błędem 403…

Zanim przeszedłem do odpowiednich modyfikacji, utwierdziłem się w logach, czy mam rację:

2024-08-25T01:00:58.137994+02:00 bubu kernel: nvme nvme0: controller is down; will reset: CSTS=0xffffffff, PCI_STATUS=0x10
2024-08-25T01:00:58.138006+02:00 bubu kernel: nvme nvme0: Does your device have a faulty power saving mode enabled?
2024-08-25T01:00:58.138008+02:00 bubu kernel: nvme nvme0: Try "nvme_core.default_ps_max_latency_us=0 pcie_aspm=off" and report a bug
2024-08-25T01:00:58.155979+02:00 bubu kernel: nvme 0000:01:00.0: enabling device (0000 -> 0002)
2024-08-25T01:00:58.312987+02:00 bubu kernel: nvme nvme0: 4/0/0 default/read/poll queues

W logu widać, że kontroler PCIE uruchamia się jako drugi i sugeruję wyłączenie sterowania zasilaniem przez system. To, o czym myślałem tylko się potwierdziło – system wstrzymywał pracę dysku na kontrolerze PCIE, po x czasie. Z moich obserwacji potwierdzało się to w 100%, bo diody od kontrolera przy zawieszeniu nie mrugały.

Szybka modyfikacja pliku /boot/firmware/cmdline.txt, dodanie na samym końcu dwóch komend: nvme_core.default_ps_max_latency_us=0 pcie_aspm=off

I malinka działa, jak powinna :).

Edycja z 29.08.2024

Jednak powyższe modyfikacje nie rozwiązały w 100% problemu ze zwiechami. Dzisiaj nad ranem po raz kolejny rpi się zwiesiło. Natomiast kolejne modyfikacje usunęły całkowicie błędy z syslogu ;).

Poza powyższą modyfikacją w /boot/firmware/cmdline.txt należy jeszcze na końcu pliku /boot/firmware/config.txt dodać obsługę wsparcia dla PCIE:

# Poniższe linijki dodajemy na samym końcu pliku
dtparam=pciex1
dtparam=pciex1_gen=3

Zapisujemy, wychodzimy. Następnie polecenie:

rpi-eeprom-config --edit

I również na samym końcu parametr:

PCIE_PROBE=1
PSU_MAX_CURRENT=5000

Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *