Kesulitan Memahami Memori Tidak Aktif di MacOSX

8

Saya pikir saya mengerti bagaimana MacOSX mengelola memori, tetapi baru-baru ini saya menjadi bingung dengan kinerjanya. Inilah situasinya:

  1. Saya memiliki sistem Core i7 baru dengan memori fisik 8GB yang menjalankan MacOSX 10.6.7. Ada beberapa Aplikasi yang berjalan secara teratur mengambil sebagian dari memori — Safari, Mail, Xcode, Terminal, dll.
  2. Saya perlu menjalankan tiga proses 64-bit secara paralel, masing-masing menggunakan sekitar 2000M memori nyata.
  3. Meskipun memori kabel tetap di bawah 1000M (yaitu saya memiliki lebih dari 7000M tersedia untuk proses), saya melihat aktivitas paging yang berat menyebabkan kinerja yang sangat buruk dari tiga proses intensif memori yang saya luncurkan.
  4. Rupanya, saya tidak kehabisan RAM yang tersedia, karena memori tidak aktif yang dilaporkan tetap sekitar 2500M dan memori aktif tidak naik di atas 5000M.

Adakah yang bisa memberi saya petunjuk mengapa MacOSX tidak melepaskan memori tidak aktif untuk proses yang membutuhkannya, alih-alih menggunakan paging? Juga, apakah ada cara yang tepat untuk memengaruhi manajemen memori oleh sistem?

Ventzi Zhechev
sumber

Jawaban:

5

Saya telah menemukan, di komputer saya, bahwa Mac OS X agak lambat untuk menampilkan hal yang benar.

Setiap kali melakukan sesuatu yang sangat membutuhkan memori, saya akan sering keluar dari beberapa aplikasi untuk membantunya. Safari adalah babi memori yang besar jika telah berjalan untuk sementara waktu dan berada di puncak daftar aplikasi untuk berhenti. Dalam kasus saya ini adalah ketika saya mencoba menjalankan VMWare Fusion tanpa RAM aktual yang cukup.

Anda mungkin tahu ini, tetapi di sini ada beberapa tautan ke dokumentasi Apple yang menjelaskan penggunaan memori dan memori virtual pada OS X:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

Berikut adalah penjelasan yang diberikan: Daftar tidak aktif berisi halaman yang saat ini berada dalam memori fisik tetapi belum diakses baru-baru ini. Sulit untuk mendapatkan definisi yang tepat tentang apa artinya ini tetapi tampaknya termasuk cache sistem file dan juga memori tidak aktif yang sebenarnya.

Memori tidak aktif mungkin merupakan hal yang sulit untuk ditangani pada OS interaktif berbasis GUI di mana pengguna dapat memilih untuk beralih ke aplikasi apa pun yang sedang berjalan kapan saja dan memberikan responsif dalam situasi seperti ini adalah penting .... tetapi sisi baiknya adalah bahwa dalam situasi seperti milikmu OS tidak cukup tahu apa hal yang benar untuk dilakukan.

Dimungkinkan untuk membersihkan (sebagian) memori tidak aktif dengan menggunakan perintah pembersihan . Ini mungkin perlu diinstal dengan menginstal alat CHUD tetapi Anda mungkin sudah menginstalnya. Saya belum mencoba menggunakan perintah pembersihan jadi YMMV ...

Saya sedikit mengoceh dan mungkin atau mungkin belum menjawab pertanyaan Anda. Setelah menulis semua ini, saya menemukan pertanyaan lain di situs ini yang banyak dari info yang sama yang mungkin juga membantu.

Mike Meyers
sumber
Terima kasih! The purgeperintah persis apa yang saya cari. Saya telah menemukan artikel dukungan di KB Apple, tetapi mereka tidak terlalu berguna.
Ventzi Zhechev
1

MacOS memang melepaskan memori tidak aktif, tetapi hanya jika itu benar-benar perlu. "Memori tidak aktif" itu mungkin sebenarnya adalah memori yang diyakini kernel sebagai kandidat untuk paging out - tetapi belum diputuskan, menunggu lebih banyak waktu berlalu tanpa memori tidak aktif direferensikan (sebagai gantinya, itu berfokus pada mem-paging memori) yang sangat kecil kemungkinannya untuk digunakan kembali segera). Dalam kasus seperti itu, "membersihkan" memori yang tidak aktif sebenarnya akan menyebabkan kinerja Anda menderita (karena halaman-halaman yang sering digunakan harus dibaca kembali dari disk sebelum program Anda dapat melanjutkan eksekusi).

purgeberguna bagi pengembang untuk mensimulasikan kondisi start-up suatu aplikasi-- misalnya, untuk melihat berapa lama waktu yang diperlukan untuk menjalankan aplikasi pertama kali setelah boot atau jeda panjang. Untuk pengguna biasa, purgetidak terlalu berguna (dan sebenarnya akan menyebabkan penurunan kinerja sementara).

jhfrontz
sumber