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.