Půlhodinový zásek RPi, ze kterého se vyhrabal

Hamparle

  • ****
  • 365
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Půlhodinový zásek RPi, ze kterého se vyhrabal
« kdy: 07. 10. 2022, 19:14:14 »
Na dlouhodobě běžícím Raspbery  pi 3 b jsem si spustil composer update. Pak se mi zvláštně zaseklo,:
z ostatních počítačů, kteří jsou připojeny ethernetem k němu:
reagovalo jen na ping
vypadalo že je odříznuté o internetu s jedinou vyjímkou:
udržovalo aktivní wireguard spojení (takže forwardovalo na vzdálené rozsahy, takže muselo i ponechat aktivní supplicant) - hlásilo mi tedy ping  jediný  protějšek v internetu 20ms
nikam jinam neforwardovalo, traceroute a ping bylu hluché.
Nešlo se k pi nijak připojit přes tcp
běžící démoni neodpovídali, ale nechali otevřené porty ( nc 80,22,443,53 se hned nezavřelo, ale nepřišla žádná odpověď)

Nereagovalo na připojení monitoru ani myši. Přído po 15 minutách a na monitoru obraz plochy (přesvědčil jsem se že uptime je furt měsíc)

DOKONCE mi zůstalo aktivní SSH připojení  !

dmesg-poslední

Kód: [Vybrat]
asi 3x backtrace
1844135.776164] rpi_firmware_get_throttled: 2 callbacks suppressed
[1844314.658007] INFO: task kworker/0:0:9083 blocked for more than 122 seconds.
[1844314.658022]       Tainted: G         C        5.10.63-v7+ #1496
[1844314.658029] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[1844314.658037] task:kworker/0:0     state:D stack:    0 pid: 9083 ppid:     2 flags:0x00000000
1845614.858560] Exception stack(0x8151dfb0 to 0x8151dff8)
[1845614.858566] dfa0:                                     00000000 00000000 00000000 00000000
[1845614.858574] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[1845614.858581] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
[1845614.858589]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80144034
[1845614.858594]  r4:00000000
[1845614.858635] Mem-Info:
[1845614.858652] active_anon:9651 inactive_anon:182695 isolated_anon:0
                  active_file:50 inactive_file:983 isolated_file:0
                  unevictable:4 dirty:0 writeback:0
                  slab_reclaimable:4522 slab_unreclaimable:6107
                  mapped:5843 shmem:20299 pagetables:2257 bounce:0
                  free:4163 free_pcp:40 free_cma:223
[1845614.858666] Node 0 active_anon:38604kB inactive_anon:730780kB active_file:200kB inactive_file:3932kB unevictable:16kB isolated(anon):0kB isolated(file):0kB map
ped:23372kB dirty:0kB writeback:0kB shmem:81196kB writeback_tmp:0kB kernel_stack:2424kB all_unreclaimable? yes
[1845614.858682] DMA free:16652kB min:16384kB low:20480kB high:24576kB reserved_highatomic:0KB active_anon:38604kB inactive_anon:730780kB active_file:404kB inactive
_file:3844kB unevictable:16kB writepending:0kB present:917504kB managed:892204kB mlocked:16kB pagetables:9028kB bounce:0kB free_pcp:160kB local_pcp:32kB free_cma:89
2kB
[1845614.858688] lowmem_reserve[]: 0 0 0
[1845614.858713] DMA: 689*4kB (UEC) 678*8kB (UEC) 348*16kB (UEC) 53*32kB (UE) 13*64kB (UE) 3*128kB (E) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 16660kB
[1845614.858813] 21364 total pagecache pages
[1845614.858820] 0 pages in swap cache
[1847120.221051] raspberrypi-firmware soc:firmware: Request 0x00048019 returned status 0x80000001
Out of memory: Killed process 9351 (composer) total-vm:618096kB, a
adj:0
[1845614.954660] oom_reaper: reaped process 9351 (composer), now anon-rss:0kB

co se vlastně stalo, že raspberry přežilo vlastní smrt? Během této doby z sd karty přečetlo asi 30 GB (orientačně podle hodnoty iostat -h před a po) a zapsalo asi 800 MB.
« Poslední změna: 07. 10. 2022, 20:10:26 od Petr Krčmář »


_Jenda

  • *****
  • 1 601
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:půlhodinový zásek RPI ze kterého se vyhrabal
« Odpověď #1 kdy: 07. 10. 2022, 20:03:06 »
Tohle se na Linuxu bohužel stává, když dojde paměť a je zapnutý swap, tak občas strašně dlouho trvá, než se vyvolá OOM killer a mezitím se to snaží uswapovat.

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #2 kdy: 07. 10. 2022, 23:40:53 »
swap je na SD kartě?

ještě je podezřelé to rpi_firmware_get_throttled, co je před tím? jednak by to mohlo být varování o nízkém napětí (nedostatečný zdroj), nebo thermal throttling (nedostatečné chlazení)

jde se podívat i dodatečně (do restartu), co se stalo pomocí vcgencmd get_throttled

https://www.raspberrypi.com/documentation/computers/os.html#vcgencmd

jfila

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #3 kdy: 08. 10. 2022, 06:28:43 »
Omlouvám se, možná to bude na trochu jiné téma, ale souvisí to. Mám RPi3 a klidně čistý Raspbian, stačí spustit video z YouTube či více záložek v prohlížeči a je to téměř nepoužitelné. Je to vlastnost daná nedostatkem RAM nebo je chyba jinde, v kladném případě kde? Proč RPi prezentují jako minipočítač a náhrada klasického PC? RPi4 s 8GB RAM pro srovnání nemám.

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #4 kdy: 08. 10. 2022, 06:52:23 »
Chování I dmesg (OOM kill) celkem jasně říkají, že jde o swapování.

Podobné chování jsem viděl i s pomalou kartou při extracting fázi docker-compose upgrade (náročné na I/O), vyřešila rychlejší karta (díval bych se po A1/A2). Tím jsem se dostal od oka z ¾h na tři minuty  Tady by rychlejší karta též mohla pomoci, ale:

1. Vyhnout se swapování (jde-li) to s rozumným úsilím) by zřejmě mělo lepší výsledek.
2. Nemohu slíbit, že to bude good enough. Pokud místo 30m záseku bude 5m zásek, stále to může být špatné.


Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #5 kdy: 08. 10. 2022, 07:32:43 »
RPi3 má jen 1GB paměti. Bohužel, internetové stránky a prohlížeče jsou dost nenažrané, takže více záložek docela určitě vyčerpá RAM. Je potřeba si uvědomit, že ty internety jsou dělané v nejhorším případě pro mobily, které mají patrně více jak 2 GB RAM. S RPi4 i třeba se 4GB RAM by to bylo lepší. Teda stane se to stejné, ale až s větším počtem záložek.

Rychlá karta je lepší, než pomalá. Ještě lepší je SSD připojené přes USB. Je to spolehlivější, i když na RPi3 možná ne rychlejší než rychlá SD karta, protože máte jen USB2 porty.

No a protože swapování se s 1GB nijak nevyhnete, trochu pomůže zswap: https://www.root.cz/zpravicky/ubuntu-22-04-bude-na-raspberry-pi-4-se-2-gb-ram-pouzivat-zswap/

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #6 kdy: 08. 10. 2022, 07:53:50 »
Myslím, že u zswapu bude potřeba mít vhodně nastavený swappiness nebo více swapů + priority. Swappiness zajistí swapování trochu s předstihem (do zswapu je IIUC problém swapovat, když je málo RAM), druhý swap s nižší prioritou by snad pokryl neúspěšné pokusy swapovat do zswapu.

Mám se zswapem (nebo nějakým principiálně podobným řešením) na starém telefonu (IIIRC 512 MiB RAM rozdělené asi 128+384 do GPU a CPU), kde jsem zřejmě měl swappiness=0 a žádný záložní swap. Když už bylo RAM málo, někdy se (můj odhad podle chování + dmesg) stávalo něco takového:

1. Bylo málo RAM.
2. Telefon chtěl něco přesunout do swapu, aby nějakou RAM uvolnil.
3. Aby mohl něco přesunout do swapu, potřeboval na to alokovat místo někde v RAM. To často v této situaci nebylo k dispozici, takže zápis do swapu hodil I/O error.
4. Další swap nebyl k dispozici, tak to kernel to zkoušel znovu, dokud to nevyšlo. Většinou to docela trvalo, protože když se kernel primárně věnuje neúspěšným pokusům uvolňování RAM a ostatní se prakticky nehýbe, nic neuvolňuje RAM. Nevím, odkud tu RAM nakonec vzal, snad se rozhodl uvolnit poslední zbytečky cache nebo nevím.

 Ve výsledku to pak byl mnohem větší thrashing.

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #7 kdy: 08. 10. 2022, 09:09:29 »
zswap mi funguje správně, stačí přidat k již existujícímu jednomu swapu

buď jste měl swap do zram, nebo třeba nevhodně vysoký parametry pro /sys/module/zswap/parameters/max_pool_percent

výchozí je 20, ale hodnoty 30 a výše se mohou chovat kontraproduktivně

ještě vidím, že Hamprle má jádro 5.10.63, už nějakou dobu je 5.15, určitě bych aktualizoval

k3dAR

  • *****
  • 2 982
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #8 kdy: 08. 10. 2022, 18:39:53 »
[...] Rychlá karta je lepší, než pomalá. Ještě lepší je SSD připojené přes USB. Je to spolehlivější, i když na RPi3 možná ne rychlejší než rychlá SD karta, protože máte jen USB2 porty.[...]
Mel sem RPi3:
- s nejakou Samsung/Sandisk kartou = treba "apt update && apt full-upgrade" zasekavalo a trvalo dlouho
- s industrial ADATA kartou = apt bylo znatelne rychlejsi a mene zasekavave
- s mSATA SSD v prevodniku do USB2 = apt bylo jeste rychlejsi a nezasekavave
=> nejde tolik o rychlost cteni, ale o rychlost zapisu a hlavne o IOPS

[...] Mám RPi3 a klidně čistý Raspbian, stačí spustit video z YouTube či více záložek v prohlížeči a je to téměř nepoužitelné. Je to vlastnost daná nedostatkem RAM nebo [...]
Proč RPi prezentují jako minipočítač a náhrada klasického PC? RPi4 s 8GB RAM pro srovnání nemám.
jako nahradu klasickeho PC pokud vim NEbylo nikdy presentovane RPi3, ale prave az to RPi4...
https://www.cnx-software.com/2019/06/24/raspberry-pi-4-vs-pi-3-what-are-the-differences/

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #9 kdy: 09. 10. 2022, 08:17:43 »
Značka karty tolik neřekne, i od Samsungu a Sandusky IMHO najdeme jak pomalé karty, tak bleskově rychlé. SSD možná nedoženou, ale při většinu nasazení by stačit mohly. Ano, to IOPS při zápisu je podstatné a i některé karty dělané na zápis videa (= masivní zápis, ale sekvenční) jsou brutálně pomalé při náhodném zápisu. Proto bych se pro Raspberry držel ideálně tříd A1 a A2.

k3dAR

  • *****
  • 2 982
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #10 kdy: 09. 10. 2022, 17:32:32 »
konkretne slo myslim o Samsung EVO oranzova/cervena (ted bez A1/A2) a ADATA Industrial IDU3A, nicmene shrnuto nejlepsi bude opravdu to SSD i na USB2 ;-)

Karmelos

  • *****
  • 1 038
    • Zobrazit profil
    • E-mail
Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #11 kdy: 10. 10. 2022, 09:39:12 »
Trochu OT -
Rodina zařízení Odroid (C4/N2+/M1/...) má 4-8 GB ram a většinou i emmc, nebo i sata úložiště.  Předpokládám, že tyhle problémy mít pravděpodobně nebude. Je to správná úvaha?
Gréta je nejlepší.

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #12 kdy: 10. 10. 2022, 09:45:19 »
Odroid M1 emmc jako nemá v sobě, má tam na to konektor, ale je potřeba přikoupit. Nicméně zrovna na tom M1 je lepší asi použít nativní SATA port nebo M.2 NVMe port.

https://www.root.cz/zpravicky/odroid-m1-s-4-a-8-gb-ram/

Ty rychlosti A1/A2 SD karet SanDisk v RPi3 a RPi4 jsem kdysi testoval. Zkusím iops na USB2 disku, kolik to bude.

https://www.root.cz/clanky/raspberry-pi-4b-64bit-ci-nebyt-to-je-otazka/

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #13 kdy: 16. 10. 2022, 22:50:36 »
Tak A2 karta v RPi3+ dělá 1.86 kiops a 41.52 MB/s sekvenčně. Intel SSD přes USB2 dělá 2.59 kiops a 31.60 MB/s. To stejné SSD přes USB3 má 6.94 kiops a 419.98 MB/s.

Re:Půlhodinový zásek RPi, ze kterého se vyhrabal
« Odpověď #14 kdy: 18. 10. 2022, 15:55:58 »
Pro zajímavost ten stejný SSD přes SATA3 (Odroid M1) má 14 kiops, teda asi dvakrát více než přes USB3.