Početak›Forumi›Linuks›Linuks fore & fazoni›Zauzece memorije
- This topic has 2 odgovora, 2 glasa, and was last updated 16 years, 10 months ranije by foxbunny.
-
AutorČlanci
-
26. maj 2007. u 9:14 pm #8648foxbunnyUčesnik
Nekada davno, pricao sam sa likom koji je skockao KSysGuard o tome kako se na Linuxu proverava koliko koji proces zauzima memorije. Taj lik mi je ukratko rekao da KSysGuard radi veoma los posao sto se toga tice, i da uopste ne moze pouzdano da odredi koliko memorije zauzima koji proces. Isto vazi i za top.
I tako sam nabasao na ovaj blog, bas sada, dok sam citao ono o X-fekalijama.
26. maj 2007. u 9:58 pm #54858RiSKUčesnikFino je to sto postoji softver koji meri koliko tacno bajtova zauzima svaki proces. Ali…
Primeti prvo da vise procesa moze da koristi istu deljivu biblioteku. Kako racunati to? Da li svakom od procesa dodati po velicinu te biblioteke?
Onda, kako racunati deljive memorijske resurse? Da li je System V semafor u memoriji koja priprada kernelu ili procesu koji ga je kreirao? Da li segment deljive memorije treba pripisati svim procesima koji ga koriste, samo onome koji ga je kreirao ili kome vec?
Najbitnije od svega: Memorija je fizicki izdeljena stranicnim okvirima (page frame). Procesi ne mogu da trebuju sistemu deo strane, vec samo celu stranu. Interna fragmentacija strane je spolja (za druge procese i MMU prilikom raspodele momorije) nevidljiva. Tako da je prakticno uvek zauzet ceo broj stranica, a ne ‘okruglo u bajt’ memorije, iako je ustari deo zadnje stranice svakog procesa prazan.
Sta sam ovim hteo da kazem? Prvo da problem racunanja dela RAMa koji koristi jedan proces nije ni malo trivijalan. Vrlo je diskuabilno sta od zauzete memorije trebamo pripisati procesu. Zbog stranicenja je prilicno nepotrebno racunati u bajt (ovo se odnosi na Intela, mozda MMU ne koristi stranicenje kod svih arhitektura na kojima se vrti Linux, cisto da se ogradim 😉 ).
Sa druge strane ovakav program zahteva modul u ‘krenel space-u’ koji bi neprekidno motrio koji deo memorije se kome dodeljuje. To unosi dodatni kod u kernel. Ne kazem da je program bagovit, ali ako uzmemo u obzir da nesto racuna svaki puta kad se trebuje memorija moze se desiti da se to odrazi na performanse sistema.
Svaka cast za trud. Moze da bude u nekim slucajevima vrlo korisno (npr. isterivanje bubica iz programa), ali mislim da za vecinu sistema ovo nije neophodno. Bar se tako cini na prvi pogled. U sakom slucaju interesantna tema za razmisljanje. Ne bi mi ovo palo na pamet da nije ove teme 😉
Jos jednom: super je sto postoji softver koji ume tako precizno da odredi zauzetost memorije, ali mislim da ja to ne bih koristio na mom sistemu, bar ne neprestano 😉
26. maj 2007. u 11:10 pm #54859foxbunnyUčesnikFino je to sto postoji softver koji meri koliko tacno bajtova zauzima svaki proces. Ali…
Primeti prvo da vise procesa moze da koristi istu deljivu biblioteku. Kako racunati to? Da li svakom od procesa dodati po velicinu te biblioteke?
Onda, kako racunati deljive memorijske resurse? Da li je System V semafor u memoriji koja priprada kernelu ili procesu koji ga je kreirao? Da li segment deljive memorije treba pripisati svim procesima koji ga koriste, samo onome koji ga je kreirao ili kome vec?
Ovaj programcic to (navodno) resava tako sto zajednicku memoriju deli brojem procesa koji ih koriste.
Najbitnije od svega: Memorija je fizicki izdeljena stranicnim okvirima (page frame). Procesi ne mogu da trebuju sistemu deo strane, vec samo celu stranu. Interna fragmentacija strane je spolja (za druge procese i MMU prilikom raspodele momorije) nevidljiva. Tako da je prakticno uvek zauzet ceo broj stranica, a ne ‘okruglo u bajt’ memorije, iako je ustari deo zadnje stranice svakog procesa prazan.
Sta sam ovim hteo da kazem? Prvo da problem racunanja dela RAMa koji koristi jedan proces nije ni malo trivijalan. Vrlo je diskuabilno sta od zauzete memorije trebamo pripisati procesu. Zbog stranicenja je prilicno nepotrebno racunati u bajt (ovo se odnosi na Intela, mozda MMU ne koristi stranicenje kod svih arhitektura na kojima se vrti Linux, cisto da se ogradim 😉 ).
Sa druge strane ovakav program zahteva modul u ‘krenel space-u’ koji bi neprekidno motrio koji deo memorije se kome dodeljuje. To unosi dodatni kod u kernel. Ne kazem da je program bagovit, ali ako uzmemo u obzir da nesto racuna svaki puta kad se trebuje memorija moze se desiti da se to odrazi na performanse sistema.
Koliko znam, ovaj programcic zaista ima modul u kernelu i moze da se pokrece samo iz roota. Tako da, mislim da je i to pokriveno. Sad, nisam ga stvarno koristio, niti znam dovoljno o memoriji da bi mogao da kazem da je program dobar ili nije.[/quote]
Jedino sto je apsolutno tacno, jeste da je program sposoban da proizvede brojku koja bi prosecnom korisniku govorila nesto sto je vise tacno nego sto nije, za razliku od svih alternativa. Ali sto kaze autor bloga, koji prosecni korisnik bi bio u fazonu da insertuje modul i slicno? Retko ko. Tako da alatka nije savrsena.
-
AutorČlanci
Moraš biti prijavljen da bi postavio komentar u ovoj temi.