Zram / Ubuntu 16 x64

8 GB RAM van a gépemben, viszont nincs swap partícióm, swap file-t meg nem támogat BtrFS:

https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_fil…

Egy játékot akartam indítani, amely elment swap mellett, viszont a rendszer befagy / belassul swap nélkül. Értem hogy kicsit több mem kéne, vagy pedig hely kilapozni pár dolgot.

Nem akarok swap-ot, ezért kutattam. Rátaláltam Zram-ra. Nagyon jó. Tömöríti a memóriát, de csak akkor, ha swap-ba menne. Tehát közel nulla erőforrást foglal.

sudo apt install zram-config

+ egy reboot és kész.

Tömörítés mértékének megállapításához:


cat /sys/block/zram*/orig*
48594944
48951296
49217536
49115136
0
0

cat /sys/block/zram*/compr*
8056527
7995485
8059768
8178389
0
0

Eszköz a tömörítési arány printeléséhez (a Ruby verziónál az utolsó sorba tegyetek egy " if orig > 0" kódot hogy ne osszon nullával):

https://gist.github.com/pcarrier/3783415

Általam javított:

http://paste.ubuntu.com/25542577/

Jelenleg 18%-ra nyomta le a memória tartalmát. Ez több mint 5x tömörítés.

A játék flottul megy, semmi rendszer belassulás vagy akadás.

Nézegetem virtualizációval terhelve. Indítottam 3 virtuális gépet: Win10 (3.6G ram), WinXP (2G), Linux live (2G)

Processzor (%, 4 mag) és memória (MB) terhelésem ekkor:


free -h
              total        used        free      shared  buff/cache   available
Mem:           7.7G        7.0G        141M        154M        577M        259M
Swap:          3.9G        2.1G        1.7G

./zramratio.rb 
zram0:  22.00% (348.00 MiB -> 79.00 MiB)
zram1:  22.00% (348.00 MiB -> 79.00 MiB)
zram2:  22.00% (349.00 MiB -> 79.00 MiB)
zram3:  22.00% (348.00 MiB -> 79.00 MiB)

Vagyis 4.5x tömörítés. Engem meggyőzött.

3.14-es kernel óta támogatott:

https://en.wikipedia.org/wiki/Zram

Hozzászólások

subscribe

-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Az ilyen blog bejegyzéseket jó olvasni :)

+1

16 Gb ram van itthon. Múlt héten döcögött a rendszer, még épp sikerült elkapni. Kevés volt a memória.
Eddig nem érdekelt ez a téma, mert azt hittem ezek a megoldások mindig tömörítenek.
Köszi.

sub
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.2 | 4.4.37-janos

Remek, köszi! Egy régi laptopom (2G RAM) használhatóságán sokat javított. A script helyett van beépített utility: zramctl. Ezzel is ki lehet íratni a státuszt, csak százalékot nem számol.

--
Soli Deo Gloria

Megjegyzem, nézem különböző terhelésnél a tömörítési rátát és 3-5-szörös között mozog, 3-szorosnál kisebb értéket még nem láttam.

Éss, esetleg szerver környezetben is érdekes lehet?

Gondolok itt az én esetemben olyan VM-ekre, amelyek éjfél táján vírust kerget (clamav), vagy spamdb-t inicializál, vagy épp backupot mozgat odavissza (joóó, ez pont nem memória igényes feladat)?
Pár w3bszerverről visít a monitoring backup-időben, hogy kevés a swap pöppet kezd megtelleni.

Éles környezetben nem kívánok tesztelni, esetleg van-e ilyen tapasztalat?

----------------------------------------
o.-

Úgy működik ugye, hogy ha futsz ki a ram-odból, akkor zram-ot kezdi el használni a rendszer, és ha abból is futsz ki, akkor pedig a normál swap-ot.

Szerintem úgy kell tekinteni rá, hogy a memóriád egy részét megtöbbszörözi (3-5x) bizonyos sebesség vesztés ellenében. Nyilván a legjobb megoldás a memória bővítés, de ha a jelenlegi memóriád tetejét súrolod az esetek legtöbbjében és nem akarsz memóriát bővíteni, akkor ez egy jó megoldás lehet.

A 4.19-es kernel óta megváltozott a zram struktúrája:

cat /sys/block/zram<id>/mm_stat
accumulates zram mm stats and contains:
        orig_data_size
        compr_data_size
        mem_used_total
        mem_limit
        mem_used_max
        zero_pages
        num_migrated

Example:
cat /sys/block/zram0/mm_stat
434634752 270288572 279158784        0 579895296    15060        0

Ha esetleg javítani akarod a szkriptedet.