Bagaimana saya tahu jika server Windows saya bertukar?

29

Saya menggunakan Process Explorer untuk memonitor server windows saya ketika sedang merekonstruksi beberapa data. Ini terutama merupakan proses intensif CPU, tetapi saya ingin memastikan itu tidak bertukar. Bagaimana saya bisa tahu jika menggunakan Process Explorer? Dugaan awal saya ada di jendela System Information, itu Paging File Write Delta. Iya nih? Tidak? Saya seorang idiot?

* Screenshot bukan dari server ... hanya sebuah contoh.

alt teks http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

churnd
sumber

Jawaban:

30

"Input Halaman / detik adalah penghitung yang harus ditonton, tetapi Anda tidak perlu khawatir" swapping "karena windows tidak menggunakan file halaman seperti * nixes lakukan.

Pertama, Anda perlu memahami bahwa halaman windows tidak keluar. Saya akan mengutip bagian relevan dari posting blog Eric Lipperts (diedit dengan ringan) karena saya sendiri tidak bisa mengatakannya:

"RAM dapat dilihat hanya sebagai pengoptimalan kinerja. Mengakses data dalam RAM, tempat informasi disimpan dalam medan listrik yang merambat dengan kecepatan cahaya jauh lebih cepat daripada mengakses data pada disk, di mana informasi disimpan dalam jumlah besar, berat molekul logam besi

Sistem operasi melacak halaman penyimpanan mana dari proses yang paling sering diakses, dan membuat salinannya dalam RAM, untuk mendapatkan peningkatan kecepatan. Ketika suatu proses mengakses pointer yang sesuai dengan halaman yang saat ini tidak di-cache dalam RAM, sistem operasi melakukan "kesalahan halaman", keluar ke disk, dan membuat salinan halaman dari disk ke RAM, membuat asumsi yang masuk akal bahwa itu akan diakses lagi dalam waktu dekat.

Sistem operasinya juga sangat pintar berbagi sumber daya read-only. Jika dua proses keduanya memuat halaman kode yang sama dari DLL yang sama, maka sistem operasi dapat berbagi cache RAM antara kedua proses. Karena kode ini mungkin tidak akan diubah oleh proses mana pun, sangat masuk akal untuk menyimpan halaman duplikat RAM dengan membagikannya.

Tetapi bahkan dengan berbagi yang cerdik, akhirnya sistem caching ini akan kehabisan RAM. Ketika itu terjadi, sistem operasi membuat perkiraan tentang halaman mana yang paling tidak mungkin diakses lagi segera, menuliskannya ke disk jika mereka telah berubah, dan membebaskan RAM itu untuk membaca sesuatu yang lebih mungkin diakses lagi segera.

Ketika sistem operasi menebak dengan tidak benar, atau, lebih mungkin, ketika tidak ada cukup RAM untuk menyimpan semua halaman yang sering diakses di semua proses yang berjalan, maka mesin mulai "meronta-ronta". Sistem operasi menghabiskan semua waktunya untuk menulis dan membaca penyimpanan disk yang mahal, disk berjalan terus-menerus, dan Anda tidak dapat menyelesaikan pekerjaan.

Ini juga berarti bahwa "kehabisan RAM" jarang menghasilkan kesalahan "kehabisan memori". Alih-alih kesalahan, itu menghasilkan kinerja yang buruk karena biaya penuh dari fakta bahwa penyimpanan sebenarnya pada disk tiba-tiba menjadi relevan.

Cara lain untuk melihat ini adalah bahwa jumlah total memori virtual yang dikonsumsi oleh program Anda benar-benar tidak relevan dengan kinerjanya. Yang relevan bukanlah jumlah total memori virtual yang dikonsumsi, melainkan (1) berapa banyak memori yang tidak dibagi dengan proses lain, (2) seberapa besar "set kerja" dari halaman yang umum digunakan, dan ( 3) apakah set kerja semua proses aktif lebih besar dari RAM yang tersedia.

Sekarang sudah jelas mengapa kesalahan "kehabisan memori" biasanya tidak ada hubungannya dengan berapa banyak memori fisik yang Anda miliki, atau berapa banyak penyimpanan yang tersedia. Ini hampir selalu tentang ruang alamat, yang pada Windows 32 bit relatif kecil dan mudah terfragmentasi. "

Beberapa poin tambahan:

  1. dll dan file program selalu di-paged, tidak pernah keluar karena sudah ada di disk (dan biasanya halaman pertama dibebaskan ketika ram fisik semakin rendah)
  2. Anda jauh lebih mungkin untuk kehabisan entri tabel halaman gratis atau memiliki memori yang sangat terfragmentasi daripada masalah memori lainnya (selain kinerja buruk secara keseluruhan seperti yang telah disebutkan
  3. bahkan jika Anda menjalankan tanpa file halaman Anda masih bisa mendapatkan kesalahan halaman
  4. Secara umum, melihat memori yang dikomit lebih menceritakan bagaimana suatu proses menggunakan memori

untuk gambaran lengkap tentang cara kerja manajemen memori di windows lihat

Virtual-Memory Manager di Windows NT

jika Anda pikir Anda memiliki masalah memori, saya sarankan menonton presentasi ini pada pemecahan masalah memori windows

Berikut adalah penjelasan yang bagus tentang mengapa kadang-kadang Anda mendapatkan "kehabisan memori" ketika Anda tidak berkat fragmentasi memori:

Lihat juga Mendorong Batas Windows: Memori Fisik

Lebih lanjut tentang Memori Virtual, Memori Fragmentasi dan Kebocoran, dan WOW64

RAM, Memori Virtual, Pagefile dan semua itu (dukungan microsoft)

Memperbarui:

Windows 10 melakukan sesuatu yang sedikit berbeda dengan memori dan, seiring waktu Anda akan melihat proses yang disebut "Sistem dan memori terkompresi" Windows 10 menambahkan "toko kompresi" ke daftar paging out. Ram ini adalah memori USER yang dimiliki oleh sistem (biasanya sistem hanya memiliki memori kernel) Memori ini dikompresi di tempat untuk pengurangan rata-rata sekitar 30%. Hal ini memungkinkan lebih banyak halaman untuk disimpan dalam memori (bagi Anda yang melakukan perhitungan matematika itu 70% lebih banyak ruang) Perhatikan bahwa jika memori masih memiliki tekanan maka halaman dari toko kompresi (mode pengguna ruang proses Sistem) dapat ditempatkan pada modifikasi daftar (dikompresi) yang kemudian dapat ditulis ke file halaman fisik. Sistem akan melihat mereka berasal dari ruang mode pengguna sistem dan dikompresi dan tidak akan mencoba memasukkannya kembali ke dalam toko. Jadi pada sistem windows 10 mungkin terlihat seperti sistem menghirup ram tetapi sebenarnya itu hanya mencoba untuk menjadi lebih efisien dalam menggunakan ram. Pengguna Mac telah menggunakan fitur serupa sejak 2013, dan versi terbaru dari kernel Linux menggunakan versi kompresi memori. Metode menghemat memori ini tidak hanya lebih baik, tetapi sudah umum di antara sistem operasi lain.

Jim B
sumber
6

Ya, paging delta akan memberi Anda indikasi langsung tentang seberapa banyak server paging (atau "swapping"), tetapi hanya pada saat itu. Untuk menonton ini lebih dekat, dan untuk melihat pandangan historis, saya akan menyarankan menggunakan Monitor Kinerja ( perfmon.exe ) untuk memetakan atau merekam delta-delta itu (dan penghitung kinerja menarik lainnya yang dapat membantu untuk menghubungkan peristiwa atau kegiatan tertentu dengan lonjakan di aktivitas paging).

Jessica McKinnon
sumber
5

Monitor Kinerja (perfmon) adalah teman Anda di sini. Anda sedang mencari kesalahan halaman keras (yaitu, kesalahan halaman ketika halaman memori yang diperlukan untuk memenuhi permintaan harus dibaca dari disk), jadi pemantauan kesalahan halaman keras dan lunak adalah kurang optimal.

Tonton penghitung "Input Halaman / detik" dalam objek "Memori" menggunakan perfmon untuk mengetahui berapa banyak kesalahan halaman yang terjadi.

Evan Anderson
sumber
0

Aturan praktis yang baik adalah bahwa jika biaya komit Anda lebih tinggi dari memori fisik Anda, Anda pasti paging sesuatu , tetapi jika aplikasi Anda menggunakan buffer data tetap tunggal yang selalu disimpan digunakan, biasanya tidak akan ada paging sama sekali. Mungkin ada beberapa keterlambatan saat startup sementara memori lain dihubungi untuk memberikan ruang untuk ini.

Maximus Minimus
sumber
3
mh: Saya tidak yakin bahwa saya setuju dengan aturan praktis Anda. Jika biaya komit lebih tinggi dari memori fisik, itu berarti ada sesuatu yang dipetakan di beberapa titik, tetapi sistem belum tentu masih paging apa pun. Sesuatu hanya akan keluar saat kesalahan halaman terjadi. Kalau tidak, saya setuju bahwa penggunaan satu buffer data tetap akan menjadi yang terbaik, tapi kemudian saya pikir kita mungkin pindah ke ranah stackoverflow.com
Jessica McKinnon
Buruk saya, saya seharusnya mengatakan "sesuatu telah ditukar di masa lalu, dan permintaan memori di masa depan juga akan membutuhkan swapping".
Maximus Minimus
Ini tidak selalu benar, sebuah aplikasi hanya dapat mengunci halaman dalam memori itu memiliki hak istimewa OS.
Jim B