Virtualios atminties optimizavimas panaudojant dedikuota skirsnį
Turinys
Įvadas 3
Virtualios atmintinės optimizavimas, panaudojant dedikuotą skirsnį 4
Metodo esmė 4
Testavimas 5
Testuojamoji sistema 5
Naudota programinė įranga: 6
Testavimo etapai 7Įvadas
Viena iš įkyriausių problemų, susijusių su asmeniniais kompiuteriais – tai
operatyviosios atmintinės trukumas. Ši bėda nėra aktuali didesnėms
sistemoms, pavyzdžiui, tarnybinėms stotims, tačiau paprastam vartotojui,
neįgalinčiam įsigyti didelės talpos atmintinės, – tai iš tikro gan didelis
stabdis darbe.
Šią bėda ekonomišku būdu imtasi spręsti gan seniai. Buvo sugalvotas
programinis būdas kaip išorinę atmintį (kietąjį diską) panaudoti kaip
operatyviąją atmintinę (RAM). Žinoma, kietasis diskas yra žymiai lėtesnis
už operatyviąją atmintinę, bet tuo pačiu ir žymiai talpesnis. Jau 1992
metais Microsoft Windows 3.1 vartotojai galėjo naudotis šiuo metodu:
sukuriamas tam tikro dydžio failas, kuris panaudojamas kaip operatyvioji
atmintinė, o jo dydis (talpa) pridedamas prie tikrosios atmintinės. Tokiu
būdu praplėsta atmintinė vykdomoms programoms atrodo vientisa. Tokia
atmintis dažnai vadinama virtualiąja (Virtual Memory).
Virtualioji atmintinė yra naudojama ne tik Windows 3.x sistemose, bet ir
kitose Windows versijose ar operacinėse sistemose. Dabar paplitusios
sistemos yra pagrįstos 32 bitais. Tai reiškia, kad didžiausias atminties
kiekis, kurį tokia sistema sugeba naudoti, siekia apie 4GB (232 baitų).
Taigi virtualioji aatmintinė vis dar reikalinga, atsižvelgiant į tai, kad
šiandieninio paprasto vartotojo kompiuterio atmintinės kiekis retai viršija
1GB.
Nors virtualioji atmintinė gan sėkmingai išsprendžia operatyviosios
atmintinės trukumą, tačiau taip pat ji labai lėtina visos sistemos darbą,
nes kietasis diskas nėra pritaikytas dideliems (lyginant su RAM) duomenų
mainams. TTad iškyla uždavinys, kaip optimizuoti virtualiąją atmintinę, kad
kompiuteris dirbtų kuo našiau. Šiame darbe ir bus aptariamas vienas iš
virtualiosios atmintinės optimizavimo būdų.Virtualios atmintinės optimizavimas, panaudojant dedikuotą skirsnį
Metodo esmė
Šis optimizavimo metodas yra gana paprastas. Tereikia patalpinti Windows NT
(5.x) virtualiosios atmintinės failą pagefile.sys į jam dedikuotą disko
skirsnį. Šiame darbe neapžvelgsime veiksmų kaip tai padaryti, nes šis
darbas labiau sutelktas į našumo, kuris atsiranda dėl šio metodo, tyrimą.
Virtualiosios atmintinės dedikuoto skirsnio reikalavimai:
1. Skirsnis turi būti disko pradžioje;
2. Skirsnis turi būti NTFS formato su 64KB blokais.
Privalumai:
1) Disko pradžia laikoma išorinė disko dalis, o galas – disko dalis arti jo
centro. Remiantis fizika, gan nesunkiai galima įrodyti, kad taškas esantis
rato išorėje juda greičiau, nei arti centro, todėl ir informacija esanti
disko išorėje yra skaitoma ir rašoma greičiau nnei kitose disko dalyse.
2) Kadangi kietasis diskas yra magnetinis įrenginys, tai jame informacijai
skaityti ir rašyti naudojamos galvutės. Šios galvutės reikiamos disko
vietos paiešką pradeda nuo disko išorės, todėl informacija disko pradžioje
randama žymiai greičiau.
3) Windows NT bandydama rasti failą, jo ieško po visą katalogų medį. Didelė
laiko dalis sugaištama didelėje failų sistemoje ieškant nuorodos į
duomenis. Diską suskaldžius į skirsnius, kiekvienam skirsniui sukuriama
atskyra failų sistema. Nedidelis dedikuotas skirsnis su vienu failu
(pagefile.sys) turės ir beveik tuščią failų sistemą, todėl paspartės
informacijos paieška.
4) Dideli skirsniai kenčia nuo ffragmentacijos, kai failų dalys išsimėto po
visą diską. Galvutės negali nuosekliai skaityti duomenų, todėl gaištamas
laikas. Skirsnyje su vienu failu fragmentacija neegzistuoja.
5) NTFS failų sistemos standartinis bloko dydis yra 4 KB. Toks dydis
laikomas optimalus nes turi gerą greičio ir ekonomiškumo santykį. Kuo
didesnis bloko dydis – tuo greitesnė failų sistema, tuo labiau iššvaistoma
disko vieta. Nes kartais išnaudojama visa bloko talpa. Tai ypač būdinga
sistemoms su daug failų. Kadangi dedikuotas virtualiosios atmintinės
skirsnis turės tik vieną failą, todėl iššvaistymas nėra baisus.
Suformatavus šį skirsnį 64KB dydžio blokais, skirsnis pagreitės keliais
MB/s. Atlikus bandymą su testuojama sistema (žiūrėti tolimesnius puslapius)
buvo gauti tokie rezultatai:
|Dedikuotas skirsnis |
|Grynasis greitis (be Windows Cache) |47 MB/s |
|Kreipties laikas |6 ms |
|Sisteminis skirsnis |
|Grynasis greitis (be Windows Cache) |44 MB/s |
|Kreipties laikas |7 ms |
Rezultatai gauti SiSoftware Sandra Lite programa.Testavimas
Testuojamoji sistema
Optimizavimo metodo tyrimui buvo panaudota žemiau nurodyta sistema.
Informacija gauta remiantis SiSoftware Sandra Lite programa. Lentelėse
pateikiamas tik bandymui įtakos turinčios įrangos sąrašas.
|Procesorius |
|Pavadinimas |AMD Duron (Morgan) |
|Taktinis dažnis |1000 MHz |
|Magistralės (FSB) dažnis |100 MHz (200 MHz DDR) |
|Technologija |0,18 μm |
|Maksimalus adresacijos lygis |32 bitai |
|L1 spartinančioji atmintinė |128 KB (64 KB duomenų + 64 KB |
| |instrukcijų) |
|L2 spartinančioji atmintinė |64 KB (integruota į procesorių) |
|Papildomos instrukcijos: |MMX, SSE, EMMX, 3D Now!, Extented 3D NNow!|
|Pagrindinė plokštė |
|Modelis |DFI AK36-EC |
|Valdiklių rinkinys (chipset) |VIA KM133 |
|Magistralės (FSB) dažnis |100 MHz (200 MHz DDR) |
|Magistralės plotis |64 bitai |
|Kreipties gylis (IO Queue Deph) |4 |
|Atmintis |
|Tipas |SDRAM DIMM |
|Dažnis |133 MHz |
|Moduliai |256 MB 16x(16Mx8) CL3 |
| |256 MB 8x(32Mx8) CL3 |
|Bendras atminties kiekis |512 MB |
|Išorinė atmintis |
|Magistralė |ATA IDE |
|Kaupikliai: |
|Pavadinimas |Seagate ST3120026A |
|Tipas |Kietasis diskas |
|Pozicija |Primary master |
|Darbo rėžimas |UDMA5 (100 MB/s) |
|Apsukos (per minutę) |7200 |
|Talpa |120GB |
|Vidinė spartinančioji atmintinė |8MB |
| |
|Pavadinimas |Seagate ST340810A |
|Tipas |Kietasis diskas |
|Pozicija |Primary slave |
|Darbo rėžimas |UDMA5 (100 MB/s) |
|Apsukos (per minutę) |5400 |
|Talpa |40GB |
|Vidinė spartinančioji atmintinė |2MB |
| |
|Pavadinimas |NEC NR7900 |
|Tipas |CDRW |
|Pozicija |Secondary Master |
|Darbo rėžimas |UDMA3 (33 MB/s) |
|Vaizdas |
|Magistralė |AGP |
|Versija |2.0 |
|Rėžimai |x2/x4 (aktyvus x4) . |
|Grafinė plokštė |NVIDIA GeForce4 MX-440 SE |
|Atmintinės kiekis |64 MB |
|Atmintinės dažnis |300 MHz DDR |
|Grafinio procesoriaus dažnis |250 MHz |
|Aparatūriškai palaikoma DirectX |7.0 |
|versija | |
|Garsas |
|Modelis |AC’97 (integruota į pagrindinę plokštę) |
|Garso kokybė |16 bitų / 44 kHz |Naudota programinė įranga:
|Operacinė sistema |
|Pavadinimas |Windows 2000 SP4 Advanced Server |
|Virtualios atmintinės dydis |1024 MB |
|Informacinė |
|SiSoftware Sandra Lite |Informacija apie aparatūrinę ir |
| |programinę įrangą. |
|Testavimo |
|PassMark BurnInTest Pro 4 |Kritinių kompiuterio apkrovimo |
| |situacijų simuliacija. |
|PCMark2002 |Kompiuterio našumo tyrimas |
|Windows Performance Counters |Sistemos našumo parametrų |
| |registravimas |Testavimo etapai
Virtualioji atmintinė yra tvarkoma operacinės sistemos lygyje, kuri pati
pagal įvairias aplinkybes reaguoja skirtingai. Ne visos programos yra
vienodai jautrios procesams vykstantiems virtualioje atmintinėje: joms
visiškai pakanka fizinės atminties arba jų naudojama virtualios atmintinės
kiekis yra labai mažas. Tad vienintelis būdas ištirti virtualios atmintinės
greitį – ją aktyviai naudoti. Tai lengviausia padaryti vykdant didelį kiekį
programų ir persijunginėjant tarp jų – taip operacinė sistema priverčiama
suaktyvinti duomenų apykaitą tarp fizinės atminties ir virtualiosios.
Rankinis programų paleidimas ir persijunginėjimas tarp jų duoda duomenų
tyrimui, tačiau apsunkina tų duomenų palyginimą: dėl to, kad viskas daroma
rankiniu būdu, net du panašūs įvykiai labai skirsis laiko atžvilgiu ir
nebus galimybės padaryti net apytikslės išvados. Šiai problemai išspręsti
labai pasitarnauja specializuota programinė įranga.
Šio virtualiosios atmintinės optimizavimo metodo testavimą sudarė du
etapai:
1. Našumo tyrimas esant kritiniam apkrovimui;
2. Našumo tyrimas, panaudojant testavimo paketą, imituojantį kasdieninį
darbą.
Našumo tyrimas esant kritiniam apkrovimui
Virtualioji atmintinė yra aktyviausia tada, kai keliomis programomis
apdorojami duomenys nebetelpa į fizinę atmintinę. Sukūrus tokia situaciją
būtų gan lengva nustatyti šio optimizavimo metodo naudą, nes sistema būtų
priversta dirbti didžiausiu įmanomu tempu.
Tokiai situacijai sukurti buvo panaudota programa PassMark BurnInTest. Jos
paskirtis yra stresinių situacijų sukūrimas ir klaidų, įvykusių dėl
apkrovimo, paieška. Testavime buvo panaudota
tik viena jos funkcijų –
atminties testavimas.
Programa buvo leidžiama „Multi-process torture test“ rėžimu, kuris
sukurdavo 10 individualių procesų, kurių kiekvienas bandydavo išnaudoti
apie 50% atminties. Toks testas trukdavo 15 minučių ir jo metu būdavo
apdorojama iki 4 GB įvairios informacijos. Kadangi testuojamoji sistema
turi tik 512MB fizinės darbinės atminties, tai tokio testo metu aktyviai
buvo naudojama virtualioji atmintinė.
Našumo rodikliams fiksuoti buvo panaudoti Windows Performance Counters,
išsaugant duomenis į failą kas 1 sekundę.
|Panaudoti skaitliukai |
|Memory>Page Input/sec |Atminties puslapių skaičius per |
| |sekundę, nuskaitytas iš pagefile.sys,|
| |kai programa ppareikalauja duomenų |
| |nesančių fizinėje atmintyje. T.y |
| |virtualios atmintinės skaitymo |
| |greitis. |
|Memory>Page Output/sec |Atminties puslapių skaičius per |
| |sekundę, įrašytas į pagefile.sys, kai|
| |fizinėje atmintyje trūksta vietos |
| |„aktyviems“ duomenims ir reikia |
| |atlaisvinti vietos. T.y. virtualios |
| |atmintinės rašymo greitis. |
|Paging File>%Usage |Pagefile.sys talpos išnaudojimas %. |
| |Gerai iliustruoja išnaudotos |
| |virtualios atmintinės kiekį. |
Testo eiga:
1. Paleidžiami skaitliukai;
2. 25 sekundžių pauzė, kad butų užfiksuota sistemos rimtis;
3. Paleidžiamas PassMark BurnInTest Pro atminties testas 15 minučių;
4. 60 sekundžių pauzė, kad sistema grįžtų į rimties būseną;
5. Išjungiami skaitliukai;
Testas buvo kartojimas 2 kartus: kiekvienam atvejui, kai pagefile.sys yra
dedikuotame skirsnyje ir kai sisteminiame.
Testo rezultatai:
[pic]
[pic]
Kaip matoma iš grafikų, abie.m atvejais pavyko išgauti gan panašiais
situacijas: panašiu laiko momentu abiejuose bandymuose vyksta panašios
operacijos, tik akivaizdžiai skiriasi operuojamų duomenų greičiai, ko ir
buvo siekta.
Pats ryškiausias skirtumas yra pačioje pradžioje, vos tik pradėjus veikti
PassMark BurnInTest Pro testui, kai beveik momentaliai virtualios
atmintinės panaudojimus šokteli nuo 10% iki 90% (geltona kreivė). Taip
atsitinka todėl, kad PassMark BurnInTest Pro gan greitai pareikalauja
daugiau atminties, nei jos yra (fizinės), todėl operacinė sistema visą
užimtą neaktyvių programų atmintį perkelia į virtualiąją atmintinę (diską).
Tai vaizdžiai parodo purpurinės kreivės šoktelėjimas. Šią situaciją galima
laikyti kritinę, nes PassMark BurnInTest Pro skubiai reikalauja atminties,
kuri yra užimta, todėl sistema bando išspręsti šią bėdą kiek galima
greičiau. Čia pasimato tyriamojo optimizavimo metodo pranašumas:
Įrašymo greitis (galima traktuoti ir kaip fizinės atminties atlaisvinimo
greitį) kritiniu momentu:
• pagefile.sys sisteminiame skirsnyje – 2156 puslapiai per 1 s;
• pagefile.sys dedikuotame skirsnyje – 2643 ppuslapiai per 1 s.
REZULTATAS: skirtumas net 487 puslapiai per 1 s. kritiniu momentu.
Deje, skirtumas nėra toks akivaizdus kitose grafikų dalyse. Taip yra todėl,
kad operacinė sistema susibalansuoja, ir nebesant kritiniai situacijai,
duomenų mainai tarp fizinės ir virtualiosios atmintinės vyksta žymiai
mažesniais kiekiais ir greičiais.
Rašymo į virtualiąją atmintį greitis (likusiose grafiko dalyse) labai
panašus, nes nebėra būtinybės atlaisvinti didelius kiekius atminties – visa
reikalinga atmintis jau paskirta aktyviems procesams.
Su skaitymo greičiu susiformavo kiek kitokia padėtis. Nors vizualiai
skaitymo greičiai grafikuose atrodo panašūs, tačiau taip nėra. Atidžiau
pažvelgus, pamatysime, kad beveik visur dedikuoto skirsnio virtualioji
atmintis lenkia sisteminio skirsnio virtualiąją atmintį. Dėl procesų
nestabilumo šio skirtumo skaitiniu pavidalu išskirti neverta.
IŠVADOS:
Didžiausias nauda panaudojus šį optimizavimo metodą, juntama kritiniais
momentais, kai skubiai reikia atlaisvinti/sugrąžinti atmintį. Vartotojas
šią naudą pajus:
• Trumpesniu didelių programų įsikrovimo laiku (greičiau atlaisvinama
reikalinga atmintis);
• Mažesnėmis pauzėmis persijunginėjant tarp programų (suaktyvintos
programos greičiau atgaus atmintį išsaugotą diske).
Našumo tyrimas imituojant kasdieninį darbą
Kasdieninį darbą sunku imituoti taip, kad vėliau būtų galima gauti
palyginamus rezultatus. Tam tikslui yra sukurtos tokios programos, kaip
PCMark2002. Ši programa imituoja paprasto vartotojo dažniausiai atliekamus
veiksmus neperžengiant proto ribų.
PCMark2002 testuoja:
• Procesoriaus našumą;
• Atminties našumą;
• Išorinės atminties (diskų našumą);
• Grafinės sistemos našumą;
Į PCMark2002 testus įtrauktos tokios funkcijos kaip paveikslėlio
suspaudimas JPEG, formatu, didelių failų kūrimas, skaičių operavimas,
darbas su vaizdu, darbas su dideliais failais ir panašiai.
Baigus testavimą programa parodo rezultatus, kurie atskyrai įvertina
procesorių, atmintį, diską.
PCMark2002 buvo leidžiama du kartus: abiem atvejais kai pagefile.sys buvo
dedikuotame skirsnyje ir kai sisteminiame.
Rezultatai:
|pagefiles.sys sisteminiame skirsnyje |
|Procesoriaus įvertinimas |2758 |
|Atminties įvertinimas |1718 |
|Kietojo disko įvertinimas |702 |
|pagefiles.sys dedikuotame skirsnyje |
|Procesoriaus įvertinimas |2803 |
|Atminties įvertinimas |1756 |
|Kietojo disko įvertinimas . |713 |
Šio testo rezultatai pateikia dar didesnį siurprizą. Bandymų metu skyrėsi
tik pagefile.sys failo vieta, dėl to planuojamas buvo tik atminties
įvertinimo pagerėjimas, tačiau kaip matome iš rezultatų, pagerėjo ne tik
atminties, bet ir visos sistemos našumas.
IŠVADA: Optimizavus virtualiąją atmintinę, pagerėja visos sistemos našumas.