Na vypnutem swapu me casto padal linux (32bit, 5.1.9) i s 32G ram (pristupno vse, jedu v PAE) z duvodu ze OOM se rozhodl zabit zrovna Xorg server. Dodnes jsem nepochopil proc - pamet se zdala volna a nic narocneho jsem neprovozoval. K vyvolani padu stacilo zacit kopirovat hodne dat z lokalniho usb disku (ctecka karet) na vzdalene NFS uloziste. Prislo me to jako nejaka buga v sitove nebo cachovaci vrstve v jadru.
OOM killer sejme proces ktery momentalne zere nejvic pameti - takze X server je celkem pochopitelna obet.
Pomaha: echo 1 > /proc/sys/vm/oom_kill_allocating_task
Pak to sejme toho kdo se pokusi si alokovat pamet kdyz uz neni, coz je s velkou pravdepodobnosti ten kdo leakuje. A nebo taky nejaka jina nahodna obet...
3GB je limit ve windowsu, protoze neumi PAE, a i s PAE jsou desktop edice omezeny na 4GB.
V mem linuxu je nyni:
MiB Mem : 31874.3 total, 12568.7 free, 1198.9 used, 18106.6 buff/cache MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 28941.6 avail Mem
Povsimnete si "buff/cache". Mit vice pameti nez je cista spotreba bezicich procesu ma sve vyhody ve sviznosti odezvy. Muj pocitac ceka na me, ne ja na nej. Nepotrebuji v jednom procesu alokovat 4GB - nenapada me zadny usecase co by tohle potreboval.
Btw jde o Gentoo instalaci bezici 13+ let, a spis to skonci ve virtualce, nez bych to nahradil necim modernim a zcela nepouzitelnym. Ale nektere jadra nejsou tedy moc povedena.. protoze tyhle oom killy jsem za ty leta co tento stejny userspace pouzivam nezazil.
Ona jen hloupa eclipsa je dost rozezrana. Nehlede na apky na zpracovani videa, 3d enginy, nejaka typicky babublana business java aplikace. Nehovoric o databazich. I takovy projekt na zpracovani dat z forexu narazil na limit 3GB u Rka.
Taky ze neco pouziva thready neznamena ze kazdy thread ma extra pamet k dispozici ze :-P
> 3GB je limit ve windowsu, protoze neumi PAE, a i s
> PAE jsou desktop edice omezeny na 4GB
Co se týče virtuální paměti, limit je (32bit OS) 3 GB, protože zbylý 1 GB je vyhrazen jádru (2 GB, není-li binárka zkompilována s /3GB).
Více fyzické paměti (ten 4 GB limit nevím, ale je to dost možné) alokovat skrz Address Windowing Extension.
To, že se teoreticky dá 32-bitový systém s PAE pužívat s 32 MB paměti, ani zdaleka neznamená, že je to rozumný nápad. PAE není kouzelný proutek, který by zázračně odstranil omezení a problémy 32-bitového adresního prostoru. Je spousta věcí, které z podstaty věci budou muset být v low memory a té pořád budete mít jen nějakých (IIRC) 896 MB. A při 32 GB paměti vám z toho 448 MB, tj. celou polovinu, zabere jen memmap. K tomu si přičtěte lahůdky typu že sice máte 32 GB paměti, ale pro alokace pomocí vmalloc() máte pořád k dispozici jen nějakých ~135 MB.
To, že si takový systém "umrtvíte" trochu větší I/O zátěží, je v podstatě jen logický důsledek toho, že PAE zkoušíte použít daleko za hranicemi toho, k čemu je prakticky použitelné.
Jste mohl pridat hint kam se divat, napr.:
https://flaterco.com/kb/PAE_slowdown.html