Zauzece memorije
Dobrodošli, Gost. Molim vas prijavite se ili se registrujte.
Da li ste izgubili vaš aktivacioni e-mail?

Prijavite se sa korisničkim imenom, lozinkom i dužinom sesije

Linuxo Forumi

Stranice: [1]   Idi dole
  Štampaj  
Autor Tema: Zauzece memorije  (Pročitano 811 puta)
0 članova i 1 posetilac pregledaju ovu temu.
foxbunny
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 2436



WWW
« poslato: 26 Мај 2007, 22:14:57 »

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.

http://www.kdedevelopers.org/node/1567
Prijavi uredniku   Sačuvana

RiSK
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 625


sleep`walker


« Odgovor #1 poslato: 26 Мај 2007, 22:58:43 »

Fino 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 Wink ).

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 Wink

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 Wink
« Poslednja izmena: 26 Мај 2007, 23:09:31 od RiSK » Prijavi uredniku   Sačuvana

Gradimo
Narodu
Unix
foxbunny
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 2436



WWW
« Odgovor #2 poslato: 27 Мај 2007, 00:10:45 »

Fino 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 Wink ).

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.
Prijavi uredniku   Sačuvana

Stranice: [1]   Idi gore
  Štampaj  
 
Prebaci se na: