[LUGOS-PROG] Pomnilnik

Domen Puncer domen at coderock.org
Mon Sep 19 17:41:55 CEST 2005


On 19/09/05 16:51 +0200, Ales Casar wrote:
> 	Pozdravljeni!
> 
> Napisal sem spodnji programcek, katerega glavni del predstavljata dve
> zanki, ena v drugi. Notranja zanka poskusa ugotoviti, kako velik kos
> pomnilnika lahko alocira. Vse alokacije sproti sprosca. Zunanja zanka
> alocira pol toliko pomnilnika, kot ga je uspelo v zadnjem prehodu
> alocirati notranji zanki, ta pomnilnik zadrzi in vse skupaj ponovi.
> 
> Program sem zaganjal pod Linuxom na i386, x86_64 in alpha. Rezultati so
> kar nekam cudni. Omejitev enega kosa pomnilnika je bila priblizno enaka
> kolicini prostega virtualnega pomnilnika, oz. najvec cca 2,8 GB na i386.
> Morda je kaj podobnega tudi na x86_64 in alpha, vendar zadeve nisem
> poskusal na masini z vec kot nekje 7, 8 GB virtualnega pomnilnika.
> Omejitev celotnega pomnilnika, ki ga je en proces zasedal pa je bila okrog
> 3 GB na i386, 500 GB na x86_64 in 4 TB na alpha in to prakticno ne glede
> na velikost virtualnega pomnilnika, ki ga je v primeru i386 lahko bilo
> celo manj od 2 GB ali pa je bilo celo prostega na voljo vec ko 4 GB, na
> x86_64 in alpha pa ga je seveda bilo kvecjemu za nekaj GB.
> 
> Pozna kdo razlago za to?

V Linuxu imajo procesi 3 GB naslovni prostor (s 4/4 split kernel patchem
tudi 4 GB). Glede na to, da je sizeof(void*) == 4, kaj dosti vec ne more
biti neposredno dostopnega.

Ce te je pa zanimalo kako lahko tvoj program zasede vec, kot imas
virtualnega pomnilnika; je pa to zato, ker tisti pomnilnik se ni
"zaseden". Na vsako stran napisi kaj, pa ne bos prisel dlje od realne
velikosti.
Mislim da se to obnasanje da nastaviti z /proc/sys/vm/overcommit*


	Domen


More information about the lugos-prog mailing list