Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Maksimalna eksploatacija raspolozive memorije

[es] :: Art of Programming :: Maksimalna eksploatacija raspolozive memorije

[ Pregleda: 1400 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Maksimalna eksploatacija raspolozive memorije19.09.2011. u 20:55 - pre 153 meseci
Treba da isprojektujem jedan sistem koji ce raditi paralelizovano procesiranje gomile inputa, gde broj redova varira od 1 do vise desetina miliona, i na kraju radi neku agregaciju. Poenta je da se simulacija/agregacija obavlja vise puta nad istim setom za razlicite pocetne globalne parametre (citaj baja tweakuje parametre dok mu agregacija ne da odgovarajuce rezultate) i akcent se baca na performanse da baja ne bi potrosio vise vremena nego sto mora. Vec sam preradio procese tako da se koraci simulacije enkapsuliraju pa su postali zgodni za paralelizaciju i sva agregacija se obavlja on-the-fly tokom simulacije; efektivno sam ta dva procesa spojio u jedan i minimizovao broj pristupa podacima ali i dalje imam potencijalni problem sa performansama za veoma velike setove podataka. Radi se u C#-u ali pretpostavljam da ce tehnika koju trazim biti univerzalnije prirode, pa sam okacio ovde.

Dakle, cilj mi je da minimizujem broj HDD I/O operacija maksimalno koristeci raspolozivu memoriju i malo mi se vec muti u glavi :) pa sam otvoren za savete. Best case scenario mi je da je sve in memory to je naravno nemoguce za veoma velike steove ali posle toga best case mi je da za svaki red imam maksimalno jedan read i jedan write (posto rezultat simulacije mora nazad u bazu, u lokalu podaci idu kroz SQL COmpact bazu) tako da mi je locality vazan i ne bih hteo da SQL Compact dropuje page iz memorije pre nego mu vratim update da bih iskoristi i to kesiranje. Bonus je i da u memoriji zadrzim sto je vise moguce kesiranih redova u svojim POCO objektima da bi sledeci simulation run poceo direktno sa kesiranim podacima (ako u memoriju stane N redova to mi je vec N manje read oepracija za sledeci run). Problem mi je kako da adaptivno uklopim sve to, tj kako da sistem integrisem sa windows memory managerom tako da odustanem od dalje alokacije na vreme (jer ako preteram pocece da swapuje stranice iz memorije sto ce bespotrebno usporiti proces). Ima li neko ideju ili konkretan primer kako se ta integracija radi da ne izmisljam toplu vodu?

Podrazumeva se da je sistem vec maksimalno otperecen van aplikacije u trenutku njenog startovanja (nema nijedan dodatni konkurentni proces koji agresivno konkureise za memoriju) ali ako sistem moze da se adaptira i na to to bi bio ekstra bonus.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Maksimalna eksploatacija raspolozive memorije20.09.2011. u 09:50 - pre 153 meseci
Uvedi neku promenljivu u konfiguraciju koja kaže koliko memorije treba prealocirati, i onda na produkcionoj mašini podešavaj tu vrednost dok ne budeš zadovoljan rezultatom.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Maksimalna eksploatacija raspolozive memorije20.09.2011. u 10:51 - pre 153 meseci
Nazalost, bice vise produkcionih masina sa razlicitim hardverskim konfiguracijama pa je taj posao jalove prirode, treba mi sto ej moguce bolje resenja ali samo-regulisano.

A dal bi funkcionisao sistem da odredim neki free threshold, tipa 10% ukupne memorije i da tokom alokacije pratim instrumentaciju i slobodnu fizicku memoriju i kad kad slobodna memorija padne ispod thresholda obustavim dalju alokaciju i predjem na recikliranje? Ako padne ispod pola thresholda krenem sa dealokacijom?

Mislim da je ovo u principu klasicni sistem kesiranja koji primenjuje OS za low-priority kes (tipa HDD kes) ali nigde ne mogu da nadjem detaljnije objasnjenje kako taj sistem kesiranja adaptivno reaguje na pritisak na memoriju. Ima li nesto slicnu u lindza svetu a da je iole dokumentovano?

[Ovu poruku je menjao mmix dana 20.09.2011. u 12:17 GMT+1]
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: Art of Programming :: Maksimalna eksploatacija raspolozive memorije

[ Pregleda: 1400 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.