Apakah ada cara agar OSX menggunakan lebih banyak RAM dan lebih sedikit swap?

12

Masalah yang saya alami adalah pada server (dan kotak OSX lainnya juga) kami memiliki 4GB RAM, tetapi kami menemukan bahwa OSX hanya menggunakan 40-60% dari RAM yang tersedia sementara juga memiliki swap 6-7GB. Server menjalankan Apache dan MySQL sedangkan mesin lainnya adalah desktop.

Saya telah membandingkan penggunaannya dengan kotak Linux yang serupa (perangkat keras dan perangkat lunak) dan menemukan bahwa Linux biasanya menggunakan 80-90% dari RAM dan memiliki file swap yang jauh lebih kecil (2-3GB). Server Linux juga biasanya berjalan lebih cepat.

Apakah ada cara untuk memaksa OSX untuk menggunakan lebih banyak atau sebagian besar RAM sebelum menggunakan file swap disk?

Di Windows Anda benar-benar dapat menonaktifkan swap sama sekali. Apakah ada yang serupa untuk OSX?

Darryl Hein
sumber
Untuk klarifikasi: 1. Apakah bottleneck sistem VM? Seperti ketika Anda melihat bintang-bintang memori ada sejumlah besar jika terjadi keluar. 2. Di mana Anda mendapatkan informasi ukuran Free dan VM Anda? Misalnya Ukuran VM yang tercantum dalam Activity Monitor tidak sama dengan ukuran file swap.
Chealion
Saya tidak memiliki bukti bahwa sistem VM (VM atau swap) adalah masalahnya, tetapi saya tahu di desktop saya memiliki 6GB RAM, yang biasanya 2-3GB gratis. Ketika saya berganti program, Anda akan berpikir itu akan sangat cepat karena semuanya ada di RAM, tetapi sebaliknya, dibutuhkan 2-15s untuk kembali ke sesuatu seperti Illustrator. Saya berpikir hal serupa terjadi di server - sesuatu seperti caching untuk MySQL atau tabel sementara. Saya menggunakan top untuk menentukan penggunaan VM, RAM dan swap. Ada ide?
Darryl Hein
3
Untuk menentukan penggunaan vm aktual, yang paling mudah adalah menjalankan du -sh /var/vm- yang mengatakan itu mungkin sangat tinggi jika ada sleepimage (paling sering terlihat di laptop) hadir. Ada beberapa alat yang tersedia yang dapat membantu Anda menentukan apakah memori yang menyebabkan perlambatan: vm_stat- khususnya Anda tertarik pada nilai pageouts - jika itu meningkat sedikit maka Anda tahu Anda bertukar berat. Untuk info lebih lanjut tentang cara Apple mengelola memori mereka: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Jawaban:

17

Jawaban paling mendasar? Tidak. OS menangani manajemen memori untuk pengguna - memberikan proses sebanyak memori yang diperlukan seperti yang diminta dan tidak memberikan banyak hal dalam hal dapat memodifikasi bagaimana kinerja sistem. Itu tidak membantu banyak dengan mencoba mencari tahu apakah pemanfaatan memori adalah bagian dari persamaan mengapa server Linux mengungguli server Mac.

Karena kurangnya "kemampuan hack" dalam sistem memori virtual, pilihan terbaik Anda adalah mengevaluasi kinerja memori virtual untuk melihat apakah itu benar-benar alasan Anda mengalami masalah kinerja - yang paling mendasar adalah menggunakan vm_statatau menggunakan, ikuti. hidup dengan menggunakan vm_stat [number of seconds]untuk melihat berapa banyak halaman yang keluar terjadi. Memindahkan halaman yang tidak digunakan dari RAM ke hard drive memiliki biaya yang jauh lebih rendah daripada mengambil halaman kembali dari hard drive ke RAM Anda. Halaman dalam istilah OS X mengacu pada 4kb data.

Selain itu, proses 32 bit (mis. Illustrator) tidak dapat mengakses lebih dari 4GB sehingga secara teori dimungkinkan untuk memiliki 2GB gratis dan memiliki proses kehabisan memori jika Anda telah menginstal 6GB.

Pada desktop dan server saya, saya akan menjalankan vm_stat 2dan memeriksa kolom terakhir - terutama ketika Anda mengalami penundaan beberapa detik ketika beralih untuk mengatakan Illustrator.

Untuk mengetahui seberapa besar swap sebenarnya, Anda dapat memeriksa ukuran swap di Activity Monitor atau menjalankannya du -shc /var/vm/swap* | tail -n 1.

Menggunakan du -sh /var/vmmemiliki satu peringatan: pada laptop yang memiliki mode hibernate (apa pun selama 4 tahun terakhir atau lebih baru) mungkin ada sleepimagekira-kira ukuran berapa banyak memori yang telah Anda instal.


Jargon Memori Mac OS X:

Wired : Ini mengacu pada kode kernel dan semacamnya. Memori yang seharusnya tidak pernah dipindahkan dari RAM. Juga dikenal sebagai memori penduduk.

Shared : Memory yang dibagi antara dua proses atau lebih. Kedua proses akan menunjukkan jumlah memori ini sehingga dapat sedikit menyesatkan mengenai seberapa banyak memori yang sebenarnya digunakan.

Nyata : Ini adalah penggunaan memori "nyata" untuk aplikasi seperti yang dilaporkan oleh task_info () - jumlah kasar dari jumlah halaman fisik yang dimiliki proses saat ini. (RSIZE)

Pribadi : Ini adalah memori yang digunakan hanya oleh proses yang digunakan dalam memori Residen. (RPRVT)

Virtual : Jumlah total ruang alamat dalam proses yang dipetakan ke apa pun - apakah itu ruang besar yang sewenang-wenang untuk variabel atau apa pun - tidak menyamakan dengan penggunaan VM yang sebenarnya. (VSIZE)

Aktif : Memori saat ini dilabeli sebagai aktif dan digunakan RAM.

Tidak aktif : "Memori tidak aktif tidak lagi digunakan dan telah di-cache ke disk. Itu akan tetap dalam RAM sampai aplikasi lain membutuhkan ruang. Meninggalkan informasi ini dalam RAM adalah untuk keuntungan Anda jika Anda (atau klien komputer Anda) kembali untuk nanti. " - Bantuan Mac OS X

Gratis : Jumlah RAM sebenarnya tersedia tanpa data apa pun.


Dokumentasi terbaik yang saya tahu (dan telah dapat ditemukan dalam penelitian tindak lanjut) adalah artikel Apple Mengelola Memori di situs web pengembangnya.

Sumber berharga lainnya: milis Darwin-dev: [ 1 ], [ 2 ] dan artikel lama tentang MacOSXHints . Selain itu Mike Ash telah memposting pengantar awam yang baik di blog - nya


Mungkin saja (saya belum mencobanya) untuk menonaktifkan sistem memori virtual dengan menjalankan sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistdan kemudian restart sehingga dynamic_pager (program yang benar-benar melakukan alokasi memori virtual) tidak memulai. Namun karena OS menganggapnya memiliki memori virtual, Anda mungkin menemukan diri Anda mengalami masalah sangat, sangat cepat. Untuk memuatnya kembali dijalankan sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(jika perlu dari mode pengguna tunggal)

Chealion
sumber