Predpomnjenje v Windows okolju
Pozdrav,

Pred kratkim sem imel v službi situacijo, ko je bilo potrebno rešiti nenavaden problem z popolnoma zapolnjenim pomnilnikom na Windows strežniku in sem bil primoran raziskati delovanje predpomnjenja datotek na tem sistemu. Ker so rezultati mojih raziskav zanimivi in nepričakovani, sem jih mislil podeliti z vami.



Kaj v bistvu je predpomnjenje? Na kratko, gre za rešitev problema, da so mediji za trajno shranjevanje podatkov (naprimer trdi disk) tipično bistveno počasnejši od pomnilnika v računalniku (RAM), ki pa lahko podatke hrani le dokler računalnika ne izklopite. V tistem šolskem teoretičnem modelu, predpomnjenje deluje tako, da ko podatke prebere iz diska, jih začasno shrani še v RAM, da bodo hitreje dostopni ko jih bo naslednjič potreboval.

Če pogledamo naprimer sistem Linux, tam v praksi predpomnjenje deluje preko mehanizma imenovanega DCache, kjer se vse operacije z datotekami izvajajo izključno v RAMu, nato pa v ozadju deluje sistem, ki usklajuje podatke v RAMu z tistimi na disku. Ta mehanizem, v praksi deluje izredno dobro in je vedno veljal za glavno prednost v zmogljivosti Linux sistema, nad zmogljivostjo npr Windowsov. Stvar pa je v tem, da med tem ko je vse o delovanju predpomnilnika v Linux sistemu, jasno in razvidno če si pač odprete datoteko Linux kernela in si preberete kaj tam piše, nihče razen morda Microsofta, v resnici ne ve kako deluje predpomnjenje v Windowsih -- oziroma, "vedo" tisto kar je moč razbrati iz Microsoftovega promocijskega materiala, kar pa je, verjemite, tako nezanesljivo kot zveni.

Prvo orodje po katerem bi vsak verjetno posegel, pri poizkusu razumevanja zasedenosti pomnilnika na sistemu Windows, bi verjetno bil kar Task Manager in njegov zavihek Preformance. Program prikazuje par različnih virov, meddrugim vrednosti kot so Total, Cached in Free -- Cached pomeni predpomnjeno, torej bi človek rekel da je to količina koristno uporabljenega RAMa, za namen predpomnjenja, vendar če številke seštejete ugotovite da ne gredo skupaj. Kaj se torej tu dogaja?

Po nekaj branja tistega prej omenjenega promocijskega materiala (npr tole), človek ugotovi da tu deluje nek poseben sistem, ki RAM, ki se ne potrebuje za noben drug namen, uporabi da vanj naloži datoteke, za katere sistem smatra da se bodo morda potrebovale v prihodnosti. Ta RAM pa se v Windows terminologiji še vedno smatra kot prost, in ga sistem hitro predela za uporabo programov, če ga le-ti potrebujejo. Zveni briljantno! Ampak ali stvar v resnici deluje na tak način?

Sam sem imel problem, da je bil porabljen ves RAM in nisem vedel kaj ga porablja. Za ta namen Task Manager ne zadostuje, zveni pa smiselno orodje za ta namen Resource Monitor, ki je dostopen kar preko Task Managerja v Windows 7 in novejših. Program prikazuje količino porabljenega RAMa po programih, spodaj pa je grafični prikaz, ki prikazuje vrednosti z Task Managerja: Cached (tu imenovan Standby: modro) in Free (svetlo modro), kot pa tudi logično, če ti vrednosti seštejete in odštejete od skupne količine RAMa, In Use (zeleno) oziroma količino RAMa, ki ga porabljajo programi zase. Stvar pa je v tem, da to kar sem videl nikakor ni bilo skladno eno z drugim: In Use je bilo skoraj vse, ampak v seznamu zgoraj ni bilo nobenega programa, ki bi porabljal takšno količino RAMa. Kaj se pa torej tu dogaja?



Potreboval sem boljše razumevanje tega kaj dejansko je v RAMu, moram priznati da sem v tej točki skoraj že obupal, pa sem naletel na program Sysinternals RAMMap, ki pa skozi svoj rahlo abstraktni vmesnik, predstavlja točno to, kar sem v resnici rabil vedeti: Imeti sliko spomina, byte po bytu, kako je razdeljen za različne namene. Tu je bilo povsem razvidno, da je v mojem primeru, večino RAMa, zasedal tu tako imenovani Mapped File. Skozi to (in skozi veliko poizkušanja) je bilo možno tudi dokončno razumeti kako v resnici deluje predpomnjenje v Windows sistemu:

Windows kernel upravlja z spominom na nivoju posameznega programa. Ko program bere neko datoteko, Windows kernel nalaga njene dele v RAM za namen predpomnjenja. Ta RAM, se smatra za RAM, ki ga potrebuje program za lastne potrebe, torej isto kot zeleni In Use v Resource Monitorju. Ko pa količina podatkov v predpomnilniku preseže v sistemu fiksno določene količinske omejitve (ki jih v Windows Server 2008 R2 sistemu, mimogrede, ni) ali pa program zahteva da se sprostijo, pa jih pretvori v Cached iz Task Managerja, oziroma Standby iz Resource Monitorja -- ti deli datoteke so torej še vedno naloženi v RAM, če bi jih taisti program še potreboval, lahko pa se kadarkoli pobrišejo, če bi drug program potreboval tisti RAM zase. Ko se dotični program zaključi, se ves RAM ki ga je uporabljal, namenoma ali ne, sprosti in postane Free (svetlo modra v Resouce Monitorju).



Kar se je zgodilo v mojem primeru, je bilo to da sem imel na strežniku Windows Server 2008 R2 nameščen program, ki je nič hudega sluteč delal z bazo podatkov veliko cca 4 GB. Ko je program bral različne dele te datoteke, je Windows kernel v predpomnilnik v RAMu nalagal prebrane dele, dokler ni bilo v RAM, pod zeleno klasifikacijo In Use kar kompletnih 4GB baze. Ker pa na Windows Server 2008 R2 ni omejitve na količino porabljenega spomina za predpomnjenje, se ta RAM ni pretvoril v tisti modri Standby ampak je ostal kar zelen In Use, ter je iz RAMa v Swap (ki se hrani na disku) potisnil vse ostale programe in je seveda potem strežnik deloval po polžje. Briljantno, kajne?

Ta način predpomnenja pa seveda pomeni tudi še nekaj drugega. Ker se predpomnilnik za nek program izprazni ko se le-ta zaključi, predpomnjenje zares deluje le kadar imate en program, ki večkrat dostopa v iste datoteke. Če imate torej naprimer datotečni strežnik z primarno manjšimi pisarniškimi datotekami, kjer je vsaka datoteka odprta s strani uporabnika ločen proces, potem predpomnjenja na nivoju strežnika v Praksi Sploh Ni. Hiter pogled v Sysinternals RAMMap, pod zavihkom File Details (ki pojasnjuje vsebino razdelka Mapped File) na kakšnem malo večjem datotečnem strežniku, hitro dokaže to mojo zadnjo trditev, saj je povsem očitno da so v predpomnilniku le datoteke, ki jih imajo uporabniki trenutno odprte.

In to, moji kolegi, je razlog zakaj vam na Windows osnovanega sistema nikoli ne bi priporočil za produkcijsko okolje. Pa meddrugim omenim da ima ta slaba zasnova neposredni učinek tudi hitrost delovanja vašega osebnega računalnika: To da predpomnjenje ne deluje ustrezno je neposredni razlog, zakaj nudi uporaba SSD diskov na Windowsih takšno prednost. Ne glede na to da imamo računalnike ki imajo povsem dovolj RAMa, da do situacij v katerih bi bil SSD koristen (razen ob zagonu računalnika), sploh ne bi smelo priti, SSD bistveno pohitri Windows sistem. Gre pač za to, da vi slabo delovanje predpomnjenja (Microsoftovo nesposobnost), kompenzirate z hitrejšo strojno opremo (vašim denarjem).

P.S.: Za vse privržence Microsofta ki mi boste sedaj hiteli komentirat da to kar sem napisal sploh ni res -- priznajmo si: Microsoft je pač velika organizacija, v katerih se prepogosto zgodi da leva roka pač ne ve kaj desna roka dela. Kar sem reverse-engineeral njihovih produktov do sedaj, vedno, ampak absolutno res vedno, se je izkazalo da imajo briljantne rešitve, ki so med seboj sestavljene tako, da končni produkt ni več tisto kar je bilo očitno izvorno mišljeno. Delajo izgleda pač projektno, razdelijo si delo in vsaka skupina naredi tisto, kar jim je bilo naročeno, ko pa je treba stvari sestaviti pa je vsak konček narejen po liniji najmanjšega odpora, malo po svoje, in zadeva enostavno ne gre več skupaj. Naredite mi uslugo in nikoli ne zastavite vašega podjetja na enak način.

LP,
Jure

Oddano: 15.06.2014 ob 13:45:26
RTV Kategorija: Nove tehnologije
Natisni
Priporoči
Neprimerna vsebina
 
Oceni:

Ogledi 340 | Ocena 4.6 od 11 glasov

Blog: Komentarji
Prijavi sovražni govor
1.
Pet.
Kouvran
pred 209 tedni
2.
+5
johanbank
pred 209 tedni
3.
5 že zato,ker svoja spoznanja in ugotovitve deliš z nami.
andromaha
pred 209 tedni
4.
Hvala za informacijo.
Borut Petrovič Vernikov
pred 209 tedni
5.
Se še spominjaš, ko smo nadgradili ram iz 256 kb na en mega?
Takrat smo zmagali. :)))
Kouvran
pred 209 tedni
6.
5+ za uporabno znanje :)
R.O.G. Skatepark
pred 209 tedni
7.
kadar sem malo jezen na moj kalkulator, ker računalnik glede na hitrost mu že ne bi mogel več reči, so moje besede sledeče. Windowsi še nikoli niso delali kot je treba in nikoli ne bodo.
tinesi
pred 209 tedni
8.
Nisem pretiran ljubitelj Windowsev, ampak vseeno - tako slabi tudi niso...
Cache spomin je hitri spomin, ki res služi pospešitvi operacij z IO enotami. V njem se nahajajo podatki, ki so bili nedavno uporabljeni, oz. so pogosto uporabljeni. Ker je hitri spomin pač hitrejši od spomina na perifernih enotah. Ta spomin se avtomatično menja z novimi bolj aktualnimi podatki. Cache obstaja na procesorju, in tudi na perifernih enotah. Software pač ureja način uporabe. Podatki na drugi sliki povedo, da ima sistem 16370 MB spomina, od katerega je popolnoma prostih 8482; ker je pa cache (2466) v bistvu prosti spomin, ki se uporablja po potrebi je na voljo v resnici 10758 - torej je prikazan izračun pravilen.
DCache je nekakšen virtualni simulator z večjim spominom in te zadeve pač avtomatično ureja v backgraundu..
Verjetno je zaradi tega manj občutljiv za slabe programe...
Disk cache je sistemsko rezerviran prostor na disku, če zmanjka hitrega spomina. Ko se obdelava prenese sem, se vse skupaj bistveno upočasni...
Dust, zapis je dober - delam pa največ z Windowsi in vedno kadar imam kak problem, se nazadnje izkaže, da niso krivi ravno Windowsi. Torej se mi zdi, da malce preveč obsojaš... Obstajajo pač določene omejitve, ki jih včasih ne poznamo..
:-)
Neue Ekspres
pred 209 tedni
9.
@Neue Ekspres: Da, slikice so z mojega osebnega računalnika, namenjene so predvsem temu da si lažje predstavljate o katerih programih pišem, slik z strežnika kjer sem opravljal raziskavo žal pač ne smem objaviti.

Opis predpodpomnilnika, ki ga podajaš je nekako splošen in grajen na predpostavki da so pri Microsoftu dobro premislili kako bo sistem zasnovan in da sicer ne vemo kako dela, ampak da oni že vedo in deluje ustrezno. To je načeloma predpostavka, ki jo izpodbijam z lastno raziskavo (če kaj v blogu ni logično, sem na voljo za dodatno pojasnitev).

Prepogosto opažam, da kadar predpostavljamo da je nek sistem pametno zastavljen in deluje, da v praksi sploh ni tako -- enak problem je naprimer pri optimizaciji kode v C++ prevajalnikih, kjer velja enaka predpostavka, po dissasmblyu nastale kode pa je povsem jasno da je predpostavka napačna in da optimizacija dejansko deluje zelo borno.
DustWolf
pred 209 tedni
10.
5+
D.Wolf, blog sem še nekako dojela, pri tvojem komentarju pa mi je zaslon že zamrznil!
Cerberus
pred 209 tedni
11.
5

Poskušam razumeti opisano.

Nikjer pa nisem zasledil nasveta, kaj narediti, da te težave (upočasnjeno delovanje ali celo kolaps) odpravimo.
Ali pa sem to spregledal? Nasvet .. mislim. Ali obstaja kak način, ki pomaga pri teh težavah? Brez večjih stroškov?

Pri meni je to povzročal program Skype. Mislim .. moj muzejski primerek pc-ja (pa vsake toliko časa obogaten z "novimi" rabljenimi deli) je deloval nenormalno počasi, dokler se ni sesul. Nekako se mi je zdelo, da od takrat, ko sem namestil najnovejšo Skaype verzijo. Zdaj, ko sem Skype odstranil pa spet deluje kot grom. Menim, da je najnovejša verzija Skype bila enostavno prevelika ... saj imam RAMa le 4GB torej 2X2 GB (in W7 home p.). Njabolj čudno je pa to, da mi na Skype ni delal zvok pod nobenim pogojem - povsod drugje pa čisto normalno. Kot, da bi to bila tista kaplja čez rob. Povsem mogoče je tudi, da je en RAM izdihnil pa sploh ne opazim (???) dokler ni situacija prezahtevna.

Torej .. nasvet?
Kaj storiti, da razbremenim RAM?
ps.: Če je moje vprašanje popolnoma idiotsko, me prosim ne zmerjat.
;o)))))
Gromovnik
pred 209 tedni
12.
DustWolf, saj nisem komentiral, da bi se prerekal, le na živce mi gre prazno hvaljenje Linuxa in pljuvanje čez Windowse. Vsak sistem ima svoje dobre in slabe strani. Pri Linuxu je pač treba manj skrbeti za keširanje, a to še ne pomeni, da je s tem konec vseh problemov. Za spletne strežnike je priznano boljši Linux, ampak ne za nepoznavalce...
Dobra in realna povezava o uporabnosti za normalnie uporabnike je tale...
V glavnem dobro si napisal, motijo me le stavki a'la ...in to, moji kolegi, je razlog zakaj vam na Windows osnovanega sistema nikoli ne bi priporočil za produkcijsko okolje..
.. Gromovnik, če imaš 4 Gb Rama, verjetno tvoj računalnik le še ni za na odpad. Počasi ti dela, ker imaš verjetno v zagonu polno nepotrebnega s*anja. Kot vem bi moral novi Skype delovati normalno, probleme ima včasih s starejšimi kamerami, ki jih ne podpira. Najbolje ga je odstraniti in ponovno namestiti... zvok pa preveriti v nastavitvah...
LP
Neue Ekspres
pred 209 tedni
13.
NE
ej .. saj me poznaš .. trmo staro.
:o)))

Če nisem Skypa 5X de- in na novo instaliral naj me pes poščije.
S tem, da sem glede nastavitev zvoka postal expert Nr1 za W7.
Kamera sporočila, povezava vse ok .. le brez Skype-zvoka.
Mic na slušalkah in slušalke kot kažejo drsni senzorji
delajo 100%no in cel komplet deluje pri predvajanju posnete
glasbe, pri YTube, poročilih itd perfektno.

Kot sem napisal pc je delal počasi kot pohojen polž,
ko sem pa zradiral Skype je pa oživel.

Ampak - pustimo to .. to ni tema bloga.
Raje se vi stručkoti pomenite med seboj o Microsoftu.

Vem, da imamo 3 vrste pc-stručkotov .. pravih vernikov:
- enim so všeč jabolka
- drugim okna
- tretjim pa "krenki" (Beri Linox)
in
prav zanimivo je poslušati kako se prerekata
zastopnik jabolk in zastopnik oken.
>;o)))
ps.: seveda so taka preprekanja za nas nestrokovnjake nedosegljiva
in menim, da tule na tak blog ne bo kakega intenzivnega odziva -
kot bi bil, če bi ga avtor objavil na kaki strokovni strani..
Gromovnik
pred 209 tedni
14.
Pravi poznavalci vemo, da imajo vsi sistemi svoje fore. Prerekajo se bolj tisti rekla - kazala, kot je lepo napisal tisti bloger, kamor sem dal povezavo: 40-letni stručkoti, ki živijo v mamini garaži in nimajo življenja..
:-))))
Neue Ekspres
pred 209 tedni
15.
Morda imaš prav ..
Gromovnik
pred 209 tedni
Oddaj svoj komentar
Za komentiranje morate biti prijavljeni. Komentarji ne odražajo stališča uredniške politike RTV Slovenija.
Zadnji komentarji
Povezave
Uporabnik še ni dodal povezav.
Vsi blogi avtorja

201720182019
JanFebMarAprMajJun
JulAvgSepOktNovDec
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1



Št. registriranih uporabnikov: 184082
Forum avtorjev: 15868 Forum teme: 34417 // Odgovorov: 1872393
Blog avtorjev: 3584 // Blogov: 86294 // Komentarjev: 1237962
Avtorji fotografij: 26147 // Slik: 221407 // Videov: 18398 // Potopisov:
© RTV Slovenija (ISSN 1581-372X) | FAQ | Impresum | 1995-2009 | Vse pravice pridržane
" "