Set Bytes Pribadi VS Bekerja di Process Explorer

39

Saya tahu bahwa set kerja adalah jumlah aktual dari memori yang digunakan proses dan juga byte pribadi adalah jumlah yang disisihkan untuk berjaga-jaga jika dibutuhkan lebih banyak.

Jadi apakah saya akan menambahkan keduanya untuk mencari tahu berapa banyak memori yang SEBENARNYA diambil dari proses lain pada sistem?

Skandal
sumber

Jawaban:

52

Saya khawatir ini tidak sesederhana itu. Khususnya byte Private tidak sangat berguna untuk menjawab pertanyaan yang Anda ajukan.

Hal pertama yang perlu diingat adalah bahwa halaman memori mungkin ada di memori utama atau di penyimpanan eksternal (hari ini "paging disk" atau "swap"). Yang kedua adalah bahwa suatu proses akan memiliki halaman memori pribadi di tapaknya, tetapi juga akan menggunakan objek di halaman bersama, bahwa proses lain menggunakan pada saat yang sama.

Kumpulan yang berfungsi adalah ukuran halaman yang termasuk dalam proses, yang saat ini disimpan dalam memori utama. Ketika halaman memori yang digunakan oleh suatu proses dipindahkan ke file halaman, itu dihapus dari metrik set kerja, dan ketika dipanggil kembali ke memori utama, itu ditambahkan lagi.

Perangkat kerja tidak hanya merujuk ke memori yang dimiliki proses Anda. proses menggunakan banyak objek memori bersama, dan ukuran objek-objek ini tercermin dalam stat. Sayangnya, ketika dua proses berbagi objek 1MB, kedua proses mereka menunjukkan alokasi 1MB di set kerja, jadi jika Anda menambahkan semua set kerja, objek 1MB akan direkam dua kali, jadi akumulasi dari semua ukuran set kerja Anda mungkin dalam kasus ekstrem, tampak melebihi ukuran ram yang tersedia. lihat lebih lanjut di sini: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

Private Bytes mengacu pada jumlah ruang file Halaman yang dialokasikan untuk proses (tidak harus digunakan) dalam hal jejak memori pribadi proses sepenuhnya ditentukan untuk ditukar. sebagian besar waktu, prosesnya tidak sepenuhnya (atau sama sekali) residen-halaman, jadi itu sebabnya byte pribadi tampaknya memiliki "ruang" untuk alokasi lebih lanjut. Namun tidak demikian halnya.

Namun byte pribadi hanya mengacu pada proses memori pribadi, sehingga nilai ini mungkin tidak mencerminkan sumber daya bersama (bahkan jika sumber daya bersama hanya digunakan oleh proses ini saat ini).

"Working set Private" ("WS Private bytes" atau "Private WS" dalam proses explorer tergantung versi) mungkin merupakan metrik terbaik untuk Anda gunakan. itu tidak berkaitan dengan file halaman, jadi Anda mendapatkan representasi akurat dari dampak proses pada ram fisik Anda, dan itu tidak dua kali menghitung objek bersama. objek bersama dihitung sekali (hanya untuk proses yang membuatnya), tetapi itu juga berarti bahwa dari perspektif proses tunggal Anda tidak merekam bahwa proses Anda menggunakan objek bersama yang dibuat oleh proses lain, sehingga proses Anda mungkin menggunakan lebih banyak ram pada yang lain mesin atau dalam situasi di mana ia diminta untuk membuat objek yang dibagikan itu sendiri, bukan menggunakan proses proses lain dari itu. Windows Task manager menggunakan working set private sebagai metrik penggunaan memorinya.

berharap itu bisa membantu

Frank Thomas
sumber
1
Jadi apakah saya akan benar mengatakan bahwa "Private Bytes" adalah berapa banyak memori yang diminta oleh proses dan "Working Set" adalah Private Bytes plus sedikit tambahan memori bersama yang dapat digunakan proses lain? Dan juga, "Private Working Set" adalah jumlah memori pribadi saat ini dalam RAM fisik yang merupakan representasi paling akurat dari berapa banyak memori yang sebenarnya digunakan?
Skandalis
4
ya, cukup banyak. jika Anda khawatir tentang ram pribadi gratis yang bekerja adalah cara untuk pergi. jika Anda khawatir tentang file halaman atau komit penuh (ram + memori virtual) byte pribadi adalah metrik yang baik.
Frank Thomas
"Private bytes" adalah ruang alamat virtual pribadi yang dikomit proses. Beberapa di antaranya mungkin ada di file halaman, beberapa di RAM, beberapa di kedua tempat, beberapa di antaranya - mungkin sebagian besar - mungkin tidak memiliki penyimpanan fisik sama sekali (belum). Ini adalah kontribusi proses terhadap keseluruhan "biaya komit" sistem. "Private working set" adalah subset dari "private bytes" yang ada di RAM. nb: Anda tidak akan menemukan "byte pribadi" atau sesuatu seperti itu di layar RAMmap karena RAMmap hanya memusatkan perhatian pada memori fisik (RAM), bukan virtual.
Jamie Hanrahan