Apakah ada cara untuk mengetahui apakah aplikasi tertentu berjalan pada Mac OSX (10.2+) memiliki sebagian memorinya yang diganti (yaitu, ke salah satu /private/var/vm/swapfile*
file)? Dan berapa banyak?
Bounty (150 rps)
Pertanyaan sederhana. Jawaban yang benar pertama akan diterima jika saya melihatnya dengan kurang dari 2 hari berakhirnya periode hadiah. Jika saya masih belum mendapatkannya, saya akan memberikannya kepada siapa pun yang memberi tahu saya fakta baru yang paling menarik. Dan jika saya tidak belajar satu hal pun dari salah satu jawaban, saya akan memberikan hadiah kepada siapa pun yang menulis paling cantik.
macos
mac
swap
virtual-memory
Charles Stewart
sumber
sumber
Jawaban:
Saya sudah googling banyak ;-) Seperti yang saya mengerti, memori virtual dari proses yang diberikan dibagi menjadi halaman yang ditangani oleh OS dan disajikan kepada aplikasi seolah-olah itu adalah RAM.
Di OS X, berdasarkan pada kernel Mach, ini ditangani oleh daemon yang disebut
dynamic_pager
. Proses ini menghasilkan swapfile (s)/private/var/vm
seperti yang Anda sebutkan. File swap ini tidak dihasilkan berdasarkan per aplikasi, tetapi berdasarkan "kebutuhan memori". File swap dibagi menjadi halaman-halaman 4096 byte, dan halaman - halaman tersebut kemudian dialokasikan untuk proses-proses yang (dianggap oleh OS) membutuhkan memori virtual. Oleh karena itu, Anda tidak dapat mengaitkan swapfile dengan aplikasi yang diberikan, tetapi Anda dapat melihat berapa banyak halaman yang digunakan proses tertentu.Anda mungkin ingin mencoba perintah
vm_stat
dalam Termial. Ini memberi Anda statistik penggunaan VM (perhatikan bahwa 'ukuran halaman' kali jumlah halaman aktif sama dengan ukuran swapfile Anda). Ini juga menjelaskan mengapa Anda dapat memiliki banyak proses menggunakan VM, tetapi hanya beberapa swapfile.Perintah menyenangkan lainnya adalah
vmmap [process id]
danpagestuff
.sumber
vmmap [pid]
atauvmmap -pages [pid]
jawaban untuk bagian kedua dari pertanyaan Anda?The
vmmap PID
perintah harus memberikan beberapa statistik membantu dalam angka tentang suatu proses.sumber
Berdasarkan ide-ide yang diposting di sini saya membuat garis kecil kode ini:
yang menampilkan bagian Ringkasan (3 baris) dari output vmmap. Saya sudah menggunakan
notifyd
dalam contoh ini, tetapi Anda dapat menggantinya dengan PID yang Anda tahu.Baris ini akan mencoba mendaftar semua garis Ringkasan dari semua proses yang berjalan. Jelas beberapa akan gagal karena id proses mereka sudah hilang (proses berakhir), tetapi secara umum saya menemukan ini adalah cara yang bagus untuk menelusuri daftar informasi memori dan melihat swapper atas.
Diedit: Beberapa pengguna anonim melihat baris perintah terakhir ini membutuhkan peningkatan karena jelas varian aslinya tidak berfungsi lagi. Jadi terima kasih banyak, siapa pun Anda, dan maaf hasil edit Anda ditolak. (Perintah pertama sebelumnya membaca 'ps xa' dan mengakibatkan vmmap gagal karena judul ps dilemparkan padanya)
Peningkatan lebih lanjut: Jika Anda ingin mengetahui nama program segera gunakan perubahan kecil ini
Sedikit amandemen pada ujung lain dari perintah ini memungkinkan Anda untuk memfilter nama-nama program atau komponen jalur jalur perintah tertentu. Di sini kita melihat semua proses dari 'Library / PrivateFrameworks' hanya sebagai contoh.
sumber
ps -o pid= -xa | awk '{print $1}' | xargs -n 1 -I{} bash -c ‘sudo vmmap {} || true’ | egrep 'swapped_out|^Path:|^Process:'
. Itu masih tidak berhenti di ctrl + c, tetapi juga tidak berhenti pada kesalahan vmmap.Buka Monitor Aktivitas di folder / Aplikasi / Utilitas Anda dan ada kolom Memori Virtual yang akan memberi tahu Anda hal ini. Anda dapat mengklik tajuk Memori Virtual untuk mengurutkan berdasarkan sebagian besar atau sedikitnya yang digunakan oleh aplikasi. Pastikan juga untuk mengubah Proses Saya ke Semua Proses, dan perhatikan bahwa satu aplikasi dapat memiliki beberapa proses. Misalnya aplikasi pihak ke-3 Little Snitch terdiri dari "Little Snitch Network Monitor" dan "Little Snitch UIAgent."
sumber
Seperti kata ridogi, buka Activity Monitor. Arahkan ke proses yang ingin Anda periksa, dan klik ... Periksa! Kemudian klik memori; ini akan memberi tahu Anda berapa banyak swap yang menggunakan proses yang diberikan.
Selamat bersenang-senang!
sumber