
Cikkünkhöz mellékeltük az alábbi szkriptet "PageFileProp.vbs" néven. Futtatása után megjelenít egy ablakot, ahol kiírja a rendszerben található virtuális memóriára vonatkozó adatokat.
Amellett, hogy egyre gyorsabb merevlemezeket gyártanak, a memóriák sebessége is növekszik. Amíg a háttértárolók működési elve és gyártástechnológiája nem változik meg gyökeresen, megmarad a szakadék e két hardvereszköz adatátviteli sebessége között. Egy szerver operációs rendszere nem csak a járulékos szolgáltatásokban tér el egy munkaállomástól, hanem a memóriakezelésében is. Vegyünk példának egy webszervert: minden egyes kapcsolat, ami az Internetről befut, memóriát igényel. Ha csak néhány kB-ot is, de mindenképpen számolnunk kell vele. Ezer kapcsolatnál a néhány kB-ból több MB lesz és akkor még nem beszéltünk a honlapok mögött megbúvó adatbázisszerverről, ami szintén ezer példányban szolgálja ki a kéréseket. A szerver működése addig gyors, amíg minden információt a RAM-ban tárol és innen szolgál ki. Amint ez elfogy és használni kell a merevlemez virtuális memóriáját, az egész kiszolgálás sebessége jelentősen lelassul. Két ok miatt nem jó a gép RAM-ját a maximális méretig bővíteni: drága a jó minőségű memória, illetve a felesleges, soha ki nem használt memória blokkok is erőforrást igényelnek. Legjobb megtalálni azt a mennyiséget, aminél még elegendő, de nem túl sok RAM áll rendelkezésre. Hogy tudjuk meg ezt a számot? Mérjük a virtuális memória használatot. Erre a célra használhatunk teljesítményszámláló objektumokat, de mérhetjük saját programjainkból is. Utóbbi rugalmasabb megvalósíthatóságot tesz lehetővé. Nézzük meg a következő példa szkriptet:
Tároljuk el egy változóba az ellenőrizendő számítógép nevét. A pont (.) a helyi gépet jelenti.
A "Text" változóba fogjuk összegyűjteni a különböző tulajdonságokat és értékeiket.
Kapcsolatot teremtünk a WMI (Windows Management Instrumentation) szolgáltatással az aktuálisan bejelentkezett felhasználó hitelesítési adataival. Mindezt tesszük az "strComputer" változó által meghatározott gép \root\cimv2 névterében.
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
A virtuális memóriáról több rendszerfüggvény is tárol adatokat. Közülük nekünk most a "Win32_PageFileUsage"-ra van szükségünk. Kérjük le az összes tulajdonságát.
Set colPageFiles = objWMIService.ExecQuery ("Select * from Win32_PageFileUsage")
Következhet az eredmények feldolgozása.
For each objPageFile in colPageFiles
A visszakapott értékeket hozzáadjuk a "Text" változóhoz. A virtuális memóriának van egy minimális és maximális merevlemez foglalása. Annak ellenére, hogy az aktuális használat lehet, hogy csak néhány MN, a lefoglalt minimum lehet több száz MB is.
Text = Text & "Minimális méret: "& vbTab & objPageFile.AllocatedBaseSize & " MB" & Chr(13) & chr(10)
Most következik a legfontosabb érték: az aktuális használat. Tulajdonképpen elegendő ezt figyelni, a többi csak járulékos paraméter. A "CurrentUsage" tulajdonság MB-ban adja vissza az értéket.
Text = Text & "Aktuális használat: "& vbTab & objPageFile.CurrentUsage & " MB" & Chr(13) & chr(10)
Ha nem akarjuk állandóan - vagy bizonyos időközönként - ellenőrizni az aktuális használatot, elegendő a gép bekapcsolása óta eltelt időszak legmagasabb értékét kiolvasni.
Text = Text & "Csúcsérték: " & vbTab & objPageFile.PeakUsage & " MB" & Chr(13) & chr(10)
Létezik az objektumnak egy "Description" tulajdonsága, ami általában a virtuális memóriát jelentő fájl nevét és elérési útját tárolja.
Text = Text & "Megjegyzés: " & vbTab & objPageFile.Description & Chr(13) & chr(10)
Kinyerhetünk olyan érdekes információkat, mint a fájl telepítésének dátuma.
Text = Text & "Telepítés dátuma: " & vbTab & objPageFile.InstallDate & Chr(13) & chr(10)
A státusz információt nem minden esetben lehet kiolvasni. Ha a SMART funkció engedélyezve van a merevlemezen, kisebb az esély, hogy kapunk valamit.
Text = Text & "Státusz: " & vbTab & objPageFile.Status & Chr(13) & chr(10)
Ha a "TempPageFile" tulajdonság értéke true, akkor a szóban forgó memóriafájlt átmeneti jelleggel hozta létre az operációs rendszer. Itt sem mindig ad vissza a függvény értéket.
Text = Text & "Átmeneti: " & vbTab & objPageFile.TempPageFile & Chr(13) & chr(10)
Végére maradt a fájl elérési útja és neve. Megegyezik a "Description" tulajdonság tartalmával.
Text = Text & "Elérési útvonal: " & vbTab & objPageFile.Name & Chr(13) & chr(10)
Text = Text & "------------------" & Chr(13) & chr(10)
Next
Wscript.Echo Text
A fenti sorokban található "vbTab" parancs egy tabulátor jelet szúr be a szövegbe. Ha több köteten is található virtuális memória, a FOR ciklusnak köszönhetően mindegyikről kapunk információt.