Į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 atmintinė 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. Tad 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 nei 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 fragmentacijos, 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 Now!|
|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 pareikalauja 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 puslapiai 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.