Új hozzászólás Aktív témák
-
Jester01
veterán
tmpfs helyett zram eszközt próbált már valaki? Az kicsit lassabb mivel tömörít, de éppen ezért elvileg kevesebb memóriával is beéri. Természetesen még mindig sokkal gyorsabb kell legyen mint egy merevlemez.
Jester
-
Jester01
veterán
$ df -h /mnt/test
Filesystem Size Used Avail Use% Mounted on
/dev/zram0 504M 504M 0 100% /mnt/test
$ cat /sys/block/zram0/orig_data_size
520409088
$ cat /sys/block/zram0/compr_data_size
218133275
$ cat /sys/block/zram0/mem_used_total
222351360Mit is állítasz pontosan?
MOD: a fenti egy linux kernel forrás+build volt, most kipróbáltam az aktuális firefox profilommal is:
$ df -h /mnt/test
Filesystem Size Used Avail Use% Mounted on
/dev/zram0 504M 151M 329M 32% /mnt/test
$ cat /sys/block/zram0/orig_data_size
115830784
$ cat /sys/block/zram0/compr_data_size
66113515
$ cat /sys/block/zram0/mem_used_total
71794688Ez már kevésbé látványos, gondolom a cache-ben lévő sok eleve tömörített kép miatt. Mindenesetre még mindig kevesebb memóriát használ a nyers mérethez képest.
[ Szerkesztve ]
Jester
-
Jester01
veterán
A PAE memóriát valóban az OS osztja automatikusan, de ha egy adott program szeretne 2 (vagy 3) GB feletti virtuális memóriát használni akkor azt bizony annak a programnak kell támogatnia mivel nem fér a címtartományba ezért lapozni kell.
Magyarul: ha 8 processzed van ami darabonként 2 giga memóriát szeretne, akkor PAE esetén az simán megy alapból. Ha viszont 1 processzed szeretne 8 gigát használni akkor a programnak kell a megfelelő OS hívásokkal lapozni (linuxon mmap2, windowson AWE függvények)
Jester
-
Jester01
veterán
Aha olvasgass
malloc az c library hívás nem OS syscall. Meg fogsz lepődni, a malloc mmap-ot hív, és természetesn modern linuxon is van mmap (sőt, leginkább csak az van). Memóriát úgy foglalsz hogy mmap-ot hívsz MAP_ANON flag segítségével (ilyenkor nincs fájl mögötte, illetve a swap van).
Pl. egy malloc(1024*1024) eredménye strace szerint mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f246d0af000Amit a PAE-ről olvastál az rendben van, éppen ezért kell az alkalmazásnak támogatni ha több memóriát szeretne használni mint amennyi a címtartományába fér (lásd példa fentebb). Az OS transzparensen ki fogja osztani a PAE memóriát de csak a processz címtartományának erejéig.
Jester