Mengapa saya menonaktifkan file swap di Mac OS X?

51

Saya menemukan utas tentang menginstal drive SSD di MacBook Pro.
Seseorang dalam komentar juga merekomendasikan untuk menonaktifkan file swap tetapi tidak mengatakan alasannya:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

Saya bertanya-tanya mengapa seseorang ingin menonaktifkan file swap di Mac OS X.
Apakah ini meningkatkan kinerja? Stabilitas?
Ada kerugian?

Akhirnya, apakah masuk akal untuk menonaktifkan file swap ketika tidak menggunakan SSD?

Dan
sumber
11
Ini sering dinonaktifkan oleh orang yang kurang berpengetahuan karena mereka mendengar di beberapa blog bahwa kinerja meningkat. SSD juga menyediakan testbed yang bagus karena mereka secara inheren cepat. Jangan lakukan ini. Ini akan menurunkan stabilitas, dan seiring waktu akan menimbulkan efek bencana. Hingga hari ini, saya belum melihat data nyata (valid dan andal) yang menunjukkan peningkatan kinerja. Dan itu adalah komponen penting dari sebuah OS, apakah Anda memiliki 2 GB atau RAM atau 120.
2
Apa efek bencana? Hanya ingin tahu ... sepertinya membuat mesin saya (4GB MacBook Pro) satu ton lebih cepat. Misalnya, ketika saya membuka terminal windows baru tidak ada lagi pemblokiran ... itu instan di mana diperlukan beberapa detik sebelumnya. Dan saya dapat membuka aplikasi dua kali lebih banyak dari biasanya dan tidak ada hal buruk yang terjadi.
orange80
4
orange80: Penyebab umum windows terminal yang lambat adalah proses login mencari login sebelumnya, yang dapat diperbaiki oleh hushlogin: apple.stackexchange.com/a/54167/22570 - apakah Anda melakukan reboot setelah mengubah pengaturan swap, mungkin ? Tidak ada alasan bahwa kecepatan jendela terminal akan ditingkatkan dengan menghapus swap.
Ken
Saya mengerti bahwa dengan SSD kapasitas kecil Anda mungkin ingin mengosongkan ruang. Tetapi di sisi kinerja, SSD jauh lebih cepat daripada HD jadi saya tidak melihat bagaimana menonaktifkan swapping di OS berbasis SSD akan benar-benar meningkatkan kinerja. Adakah pengalaman tentang itu? Terima kasih.
1
Di Super User, dengan jawaban yang diterima: Nonaktifkan dynamic_pager Mac? (2012-04-27)
Graham Perrin

Jawaban:

39

bertanya-tanya mengapa orang ingin menonaktifkan file swap di Mac OS X. Apakah ini meningkatkan kinerja? Stabilitas? Ada kerugian?

Saya kira orang akan melakukannya untuk drive SSD karena drive tersebut tidak memiliki masa pakai yang sama dengan drive disk berputar magnetik standar. Ada jumlah siklus tulis yang lebih terbatas, jadi mungkin menggunakannya dengan file swap akan menghabiskan siklus ini lebih cepat.

Akhirnya, apakah masuk akal untuk menonaktifkan file swap ketika tidak menggunakan SSD?

Jika Anda memiliki banyak RAM, ini mungkin akan mempercepat kinerja, tetapi itu bukan ide yang baik secara umum. Jika Anda berlari melawan langit-langit memori, hal-hal akan menjadi serpihan.

Juga, memori berkabel tidak dilepaskan ketika menjadi tidak valid, itu hanya dilepaskan ketika peristiwa keluar halaman dipicu, yang tidak akan terjadi jika Memori Virtual dinonaktifkan. Jadi tidak akan butuh waktu lama untuk semua memori Anda untuk dimakan meskipun itu tidak lagi digunakan.

ghoppe
sumber
4
Sistem memori virtual mac sangat malas karena hanya membuat file swap fisik ketika saatnya untuk menukar memori aktual. Apa pun kecepatan yang mungkin Anda lihat dengan tidak harus menunda hal-hal untuk mengakomodasi penulisan untuk swap hampir pasti akan diimbangi dengan keuntungan kecepatan sebelumnya dari memiliki swap tersedia di tempat pertama. Memiliki swap membuat mac lebih cepat. Sisa dari jawabannya tepat - dilakukan dengan baik!
bmike
2
@geotavros Sistem memori virtual di Mac OS X tidak berfungsi sama seperti Windows. Dengan memori 4GB, percayalah, Mac Anda akan bekerja lebih cepat dengan Memori Virtual diaktifkan. Menonaktifkan VM hanya akan menyebabkan Anda sakit kepala dan ketidakstabilan sistem.
ghoppe
3
FYI, SSD modern dengan tingkat penulisan dan kapasitas yang layak (128 GB), ditulis untuk terus menerus, akan memiliki batas siklus tulis yang diukur selama berabad-abad. Itu adalah ketakutan yang masuk akal pada tahun 2000 dengan SSD kecil dan primitif, tetapi tidak lagi.
Ken
3
Untuk MacBookPro5,2 dengan memori 8 GB peningkatan kinerja sangat dramatis. Untuk Snow Leopard atau Lion di VirtualBoxVM peningkatannya sangat mencengangkan. Dalam ketiga kasus OS tampaknya menggunakan memori dengan cara yang meminimalkan risiko mencapai 'batas' (di mana semua hal secara efektif berhenti) tetapi risiko itu tetap ada, jadi masuk akal untuk mengamati penggunaan di Activity Monitor.
Graham Perrin
2
Untuk informasi, VM (atau Memori Virtual) tidak boleh disamakan dengan file swap. Windows, OS X, * BSD, Linux, banyak Unix semuanya menggunakan memori virtual. Biasanya archiecture dari OS ini memberikan VM per proses, proses memori yang dialokasikan dalam area ini dan OS menangani untuk menempatkan memori yang dialokasikan ini pada RAM fisik atau swap sebagaimana OS anggap demikian. Memiliki atau tidak bertukar dapat berubah dalam satu cara atau kinerja lain untuk berbagai kriteria (kecepatan, responsif, dll.), Ini akan tergantung dari masing-masing dari kita yang bekerja. Seperti yang orang Inggris katakan: milleage Anda mungkin berbeda-beda! Dan sangat dalam hal ini.
Huygens
27

Alasan mereka menonaktifkan file swap kemungkinan paranoia tentang SSD yang memiliki jumlah tulis maksimum per blok. Swap file dapat sering ditulis, kemungkinan menyebabkan fragmentasi disk (serta fragmentasi sistem file) dan, akhirnya, mungkin menyebabkan disk gagal lebih cepat.

Yang mengatakan, ini jelas merupakan kasus optimasi prematur. Hal ini hampir selalu mengerikan , mengerikan ide untuk menonaktifkan swap file. File swap ada saat ketika program Anda yang berjalan mengkonsumsi lebih banyak memori daripada yang Anda instal secara fisik. Jika Anda menonaktifkannya, Anda mungkin tidak dapat menjalankan banyak program pada saat yang sama (dan batasnya jauh lebih rendah dari yang Anda harapkan) atau Anda mungkin memiliki masalah (seperti membekukan dan harus mem-boot ulang mesin) saat Anda kehabisan memori.

Yang terakhir saya alami (dengan file swap diaktifkan) ketika kehabisan ruang disk. Saya memiliki drive 120 manggung dengan ~ 3 gigs gratis. Saat bermain Civilization IV (permainan layar penuh besar), sistem kehabisan ruang hard drive (~ 50 MB gratis) dan menyajikan jendela "kill apps now". Ini bersembunyi di balik game layar penuh, jadi sistemnya hanya terkunci. Jika saya tidak dapat ssh in dari Mac lain untuk mematikan beberapa aplikasi dari jarak jauh, saya harus menahan tombol power.

CajunLuke
sumber
6
Saya ingin menggemakan ide yang buruk ini. Swap digunakan bahkan jika Anda memiliki 16 GB RAM. Tidak banyak, tetapi sedikit sudah ditulis dalam swap. Selalu. Ini adalah perlindungan. Dan sementara OS dapat berjalan tanpanya, Anda tidak dapat memastikan bagaimana perilaku aplikasi pihak ketiga. HD bisa ditulis. Itu fakta jika hidup. Dan tidak, tidak akan ada peningkatan kinerja "dunia nyata". Itu plasebo.
4
@ cksum Dalam beberapa skenario server tertentu, sysadmin akan menonaktifkan file swap karena memang membuat konfigurasi spesifik itu lebih cepat, tetapi mereka tidak melakukannya tanpa pengujian untuk memastikan keduanya (a) tidak kehabisan memori dan (b) ) sebenarnya lebih cepat. Tapi itu server yang dijalankan oleh para profesional: tidak pernah diperlukan pada mesin konsumen.
CajunLuke
@ cksum Saya bisa setuju dengan kalimat pertama Anda, Anda benar dengan yang kedua, ketiga dan keempat, tetapi sisanya adalah sampah. OS tidak bertukar untuk "perlindungan", OS bertukar untuk membuat lebih banyak memori yang tersedia untuk proses aktif yang akan membutuhkannya atau untuk mempercepat I / O dengan buffering data, sehingga memori tidak aktif yang lama dapat dibebaskan dalam RAM. Ketika Anda mengembangkan aplikasi, Anda meminta memori ke OS, memori ini adalah bagian dari penggunaan memori virtual Anda, sebagai pengembang atau aplikasi Anda tidak tahu apakah OS memasukkan memori itu atau bagian dari itu dalam RAM fisik atau swap. (Bersambung)
Huygens
Jadi jika aplikasi pihak ke-3 meminta lebih banyak memori daripada yang tersedia, OS akan memberikan kesalahan. Ini terlepas dari memiliki swap atau tidak. Memiliki swap akan menempatkan batas yang lebih tinggi, itu saja. Adapun kinerja, jika Anda memiliki 2 pengguna masuk, jika pengguna aktif menggunakan editor video dengan file besar, OS mungkin mulai menempatkan halaman memori pengguna tidak aktif dalam swap untuk mempercepat tugas yang dilakukan oleh pengguna aktif. Anda mendapatkan kinerja yang lebih baik dalam hal kecepatan dalam hal ini. Namun, beralih ke pengguna lain akan lebih lambat, OS harus membaca kembali swap. Ini bukan plasebo!
Huygens
1
Saya pernah (di linux) lupa untuk mengatur partisi swap ketika mengatur. Ketika saya mendapatkan hang, saya pikir itu adalah bug kernel - ternyata itu adalah kurangnya memori swap saat bermain mincecraft. gunakan swap.
Wyatt8740
12

Anda memiliki dua jawaban hebat yang menjelaskan mengapa ini adalah ide yang buruk di hampir semua kasus di mana sistem dapat menulis ke perangkat penyimpanan.

Alasan Anda dapat menonaktifkan swap adalah agar sistem dapat berjalan pada media hanya baca seperti CD, DVD, gambar jaringan yang dikunci menggunakan NetBoot atau fob USB hanya baca seperti penginstal Lion baru atau fob pemulihan yang dikirimkan bersama beberapa mac yang kurang optik drive.

Memiliki memori virtual berarti sistem dapat berjalan jauh lebih cepat dan menggunakan lebih sedikit RAM ketika banyak program menggunakan kode perpustakaan umum yang sama. Setiap program berpikir memiliki salinan pribadi dari semua kode yang diperlukan, tetapi ketika ada memori virtual, sistem memiliki cara yang bagus untuk memetakan RAM fisik yang sama ke program yang berbeda.

Menonaktifkan swap mencegah mac dari menggunakan sebagian kecil dari drive Anda sebagai cache untuk beberapa memori yang telah dihitung tetapi program tidak cukup pintar untuk menulis hasil itu sendiri ke cache yang tepat.

Jika Anda memiliki cadangan dan waktu untuk bereksperimen, mengapa tidak mematikannya dan melihat bagaimana pengalaman Anda berubah.

Saya akan terus bertukar bahkan jika saya tahu pasti saya harus membayar untuk drive baru setiap tahun. Kecepatan swap yang saya berikan adalah BESAR. Ini tidak selalu demikian, dan pada saat sistem meronta-ronta atau paging - Anda dapat memiliki yang sebaliknya. Banyak orang memilih untuk menjalankan tanpa swap sehingga mereka mendapatkan kesalahan alokasi memori daripada membiarkan mac mereka memulai paging karena hal itu dapat memperlambat mesin ketika segala sesuatu tidak berjalan dengan lancar.

Kasing Anda dengan SSD bisa berbeda, jadi beri tahu kami jika Anda mencobanya.

bmike
sumber
2
Saya menemukan berlawanan, sebuah besar speedup ketika dynamic_pager yang dinonaktifkan . Tangkapan layar saat ini di apple.stackexchange.com/a/60661/8546 menunjukkan ukuran memori virtual dan halaman yang diukur sementara daemon tersebut dinonaktifkan (sementara swap file tidak digunakan).
Graham Perrin
Apa tepatnya yang diukur untuk menentukan speedup? (Atau apakah Anda melihat tidak adanya kelambatan atau keterlambatan dalam UI atau hal lain yang tidak mudah diukur atau diukur?)
bmike
Tanpa mengukur: dengan Lion, kebanyakan hal terasa lebih cepat - cukup bagi saya untuk menggunakan kata besar . Baru-baru ini: 10.8 dalam VirtualBoxVM, misalnya, untuk masuk dan melanjutkan Activity Monitor memerlukan waktu enam belas detik dynamic_pager, dua belas detik tanpa. Untuk perbandingan yang lebih luas dan lebih terukur, kami mungkin menggunakan Phoronix Test Suite atau Geekbench .
Graham Perrin
9

Saya akan menjadi penentang di sini: Saya menonaktifkan swap pada akhir 2008 unibody macbook pro saya dan itu meningkatkan kinerja secara nyata: Kurang menunggu, lebih cepat beralih antar aplikasi.

Pikiran Anda, saya mengawasi memori bebas saya dan saya sudah menginstal 6GB. Beberapa kali saya mencapai batas memori, sistem crash :-D

Di MacBook Air baru saya, saya tidak akan bermimpi menonaktifkan swap, ini sudah cepat dengan itu diaktifkan dan hanya memiliki 4GB untuk memulai.

Alasan bagus lainnya orang menonaktifkan swap pada SSD adalah karena mereka mendapatkan SSD kecil dan membutuhkan semua ruang yang bisa mereka dapatkan. Bagaimanapun, jangan lakukan itu.

w00t
sumber
Luar biasa memiliki pengalaman nyata di mana ini bekerja. Apa komitmen RAM pada mesin ketika swap dinonaktifkan? Apa yang terjadi ketika Anda membuka lebih banyak aplikasi daripada yang bisa muat di RAM? Berapa banyak RAM yang Anda miliki dan aplikasi apa yang akan berjalan di ruang itu dengan nyaman tanpa kesalahan?
bmike
1
@bmike, tidak yakin, sistem crash :-D, 6GB dan semua yang saya gunakan :). Aperture atau XCode adalah babi memori nyata dan mereka kadang-kadang bisa mengarah ke sistem tetapi Skype, Mail, Adium, Safari, Chrome, iTunes dan OmniFocus semuanya cocok dengan baik ...
w00t
6

Pengalaman saya mirip dengan w00t. Saya telah menonaktifkan file swap pada SL dan Lion karena peningkatan kinerja berfungsi untuk saya. Penggunaan kabel tidak di luar kendali setelah seminggu atau lebih tetapi reboot sederhana memperbaikinya. Saya tidak memiliki SSD tetapi disk 5400rpm lambat. Masa hidup SSD sebenarnya tidak seburuk orang yang mencoba membuatnya. Jika Anda melakukannya hanya karena Anda takut memakai SSD Anda, lihat: http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd / 2 dan http://communities.intel.com/thread/21717?tstart=0 Intel memberi peringkat drive mereka untuk lebih dari 20GB sehari, setiap hari, hingga 5 tahun pada drive 80GB. Drive berukuran lebih besar akan bertahan lebih lama. Rata-rata pengguna bahkan tidak menggunakan 10GB / hari.

Saya pastikan untuk memantau penggunaan memori 4GB dengan iStat Menus dan menggunakan skrip Automator dengan perintah "purge" bash (mengharuskan Xcode diinstal) untuk menghapus memori yang tidak aktif dan sering membuka lebih banyak memori bebas. Beberapa kali saya memiliki aplikasi dengan kebocoran memori menghabiskan semua RAM, saya memang harus melakukan hard reset. Kesempatan langka yang terjadi dan mempercepat secara umum membuatnya berharga untuk menjaga file swap dinonaktifkan untuk saya. Saya menyadari bahwa saya tidak dapat membuka banyak aplikasi sekaligus karena ini seperti yang dinyatakan oleh orang lain, tetapi saya dapat bekerja dengan itu.

Shlepto
sumber
Memory Scope memiliki opsi untuk membersihkan secara otomatis. (Jika dynamic_pager diaktifkan, saya melarang pembersihan.)
Graham Perrin
5

Hanya melempar 2 sen saya untuk mereka yang ingin menonaktifkan swap KARENA SSD kecil: sleepimage menggunakan ruang disk yang jauh lebih banyak.

Dan, bagi mereka yang khawatir tentang usia SSD yang terbatas (terutama yang memiliki chip MBA dan chip berkabel yang TIDAK DAPAT diganti), jika komputer Anda tidur berkali-kali per hari, penulisan ulang sleepimage mungkin menjadi masalah. Laptop saya tidur setengah lusin kali / hari dengan mudah. Itu menulis 48GB data ke SSD saya setiap hari.

Solusi dalam setiap kasus adalah dengan menonaktifkan hibernasi, dan kemudian menghapus file sleepimage yang sebesar RAM yang Anda instal (8GB dalam kasus saya).

Risiko downside: jika baterai Anda mati saat laptop Anda tidur, keadaan Anda saat ini akan hilang. Ini akan setara dengan hard restart paksa. Tidak ada kerusakan fisik pada laptop, hanya kehilangan produktivitas. Jika Anda menonaktifkan hibernasi, maka jalankan baterai Anda rendah dan tidak dapat diisi, cukup gunakan kode untuk mengaktifkan hibernasi!

Untuk menonaktifkan hibernasi, di Terminal, perintahnya adalah sebagai berikut:

 sudo pmset -a hibernatemode 0

Untuk mengaktifkan hibernasi, perintahnya adalah sebagai berikut:

 sudo pmset -a hibernatemode 3

Untuk menghapus sleepimage terakhir untuk mengosongkan ruang SSD / HDD (hanya masuk akal jika Anda mematikan hibernasi, kalau tidak hibernasi akan mengambil ruang itu lain kali saat komputer Anda tidur):

 sudo rm -rf /var/vm/sleepimage

Sumber: man pmset

pengguna38390
sumber
3

Menonaktifkan swap memang meningkatkan kinerja. Sebagai contoh, saya secara teratur menggunakan Aperture dan ketika swap meningkatkan kinerja, dan ketika melampaui 1Gb saya harus memulai ulang OS untuk membersihkannya dan memulihkan kinerja. Catatan: mesin memiliki 6GB RAM dan BUKAN semuanya terisi, sekitar 3GB gratis, tetapi 1G menukar secara signifikan menurunkan kinerja.

Konstantin
sumber
3

Saya telah menonaktifkan swap pada mesin selama bertahun-tahun, baik pada OS X dan varian UNIX lainnya.

Saya menggunakan alat untuk mengingatkan saya ketika kehabisan memori, dan tidak pernah khawatir tentang sistem saya crash.

IMac saya memiliki 12GB, dan dengan penonaktifan penonaktifan, saya hampir selalu memiliki 4GB gratis, bahkan dengan beberapa alat pengembangan, aplikasi, browser, dll. Terbuka

opensourceame
sumber
5
Alat memori apa yang Anda gunakan?
Dmitriy
1

Pola berulang di sini adalah ini:

Mereka yang MEMILIKI file swap yang dinonaktifkan mengalami peningkatan kinerja (dengan RAM fisik yang memadai)

Mereka yang TIDAK menonaktifkan ruang swap yakin bahwa itu tidak akan berfungsi, dan sesuatu yang buruk akan terjadi, dan dengan keras menyarankan agar Anda tidak melakukannya.

Ini hanya karena dua hal:

  1. Gagasan kuno tentang kelangkaan dan tingginya biaya RAM fisik yang tidak lagi valid
  2. Mekanisme swapping yang benar-benar buruk di MacOS menyebabkan penggunaan file swap ketika ada cukup RAM fisik.
Kaya
sumber
1
Jika ruang swap HANYA digunakan saat dibutuhkan, maka itu akan bagus. Namun, bukan itu masalahnya. Saya menjalankan mesin virtual 2gb dan 4gb di MacOS saya. Jika saya memiliki 1,6gb RAM gratis, saya seharusnya dapat menjalankan mesin virtual 1GB (atau program lain), tetapi saya tidak bisa karena OS mulai mengeluarkannya. Akibatnya, saya hanya bisa menggunakan sekitar 85-90% dari RAM saya. Jika saya ingin mendapatkan SEMUA RAM saya, saya harus menonaktifkan paging. Saya melakukan ini pada semua mesin Windows saya, dan ingin melakukan hal yang sama pada MacOS saya. Jika suatu program kehabisan RAM, maka itu akan gagal. Itulah yang saya inginkan terjadi. Saya tidak ingin yang lain, menjalankan aplikasi
3
YMMV. Saya tidak menonaktifkan swap lagi karena saya tidak menemukannya untuk membantu kinerja pada komputer modern yang menggunakan RAM. Saya dulu di masa lalu karena memang membantu kembali di masa lalu yang buruk. Saat ini saya tidak hanya TIDAK melihat perubahan kinerja dengan menonaktifkan swap, saya juga melihat ketidakstabilan aplikasi yang meningkat.
Brian Knoblauch
1
Hal yang tidak diinginkan yang akan terjadi adalah bahwa manusia akan lupa bahwa mereka tidak dapat meluncurkan program lain dan pada waktunya, mesin akan crash karena kesalahan memori yang rendah. Apakah ini mengerikan, lucu, mendidik tergantung pada waktu, frekuensi cadangan Anda, dan toleransi untuk keterlambatan.
bmike
1

Hanya pengalaman pribadi.

Memory Amount    |
 4 GB            | Don't disable it, Mountain Lion itself boots with about 1 GB.
 8 GB            | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more    | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.

Catatan singkat: Jika Mac Anda menggunakan grafik terintegrasi, memorinya dibagi dengan memori utama Anda dengan kernel_task. Dengan demikian, Anda harus mengurangi jumlah itu dari total yang dapat digunakan.

Pengguna SSD, sangat puas memiliki lebih banyak ruang, tetapi penting untuk mengetahui bahwa memori virtual berkembang pesat di SSD, Anda bisa mendapatkan banyak keuntungan kinerja dari itu. Apakah itu melukai SSD? Ya, tetapi Anda akan lama mengganti Mac Anda sebelum Anda perhatikan.

Shane Hsu
sumber
1
Saya pribadi telah menonaktifkan memori virtual pada Retina MacBook Pro saya dengan memori hanya 8 GB. Ini matematika, sistem menggunakan sekitar 2 GB memori yang menghitung grafik terintegrasi. Jadi itu 6 GB untuk saya. Saya melakukan Xcode untuk bekerja, pada saat itu mengkonsumsi tidak lebih dari 2 GB memori. Jadi saya punya banyak cadangan.
Shane Hsu
1

Ringkasan bisnis plan

Area swap (disebut partisi swap, file swap, atau file halaman) hanyalah mekanisme untuk menambah memori fisik yang dapat ditangani oleh OS.

Jika Anda kekurangan RAM fisik yang tersedia, dan pada mesin saat ini, saya akan mengatakan jika Anda memiliki RAM 4 GB atau kurang. Maka Anda mungkin harus memiliki swap. Tetapi ini tergantung pada beban kerja Anda dan bagaimana Anda menggunakan mesin Anda.

Jika Anda memiliki lebih dari 4GB RAM, ada kemungkinan besar sistem Anda tidak akan pernah menggunakan swap. Jadi jika swap diaktifkan atau tidak, ini tidak akan banyak berubah.
Meskipun ini tergantung pada faktor-faktor lain, semakin lama mesin Anda berjalan, semakin besar kemungkinan OS akan menukar sebagian kecil RAM yang tidak digunakan ke swap walaupun ada banyak tempat yang tersisa. Namun, seringkali sistem menggunakan RAM "bebas" untuk buffer file dan hal-hal lain, dan beberapa beban kerja mungkin membuat buffer file Anda menggunakan semua RAM yang tersedia.

Informasi latar belakang

Apa yang akan terjadi jika Anda menonaktifkan swap dan memori Anda sepenuhnya digunakan? Nah, saat berikutnya aplikasi meminta lebih banyak memori (seperti dengan malloc atau realloc), itu akan menerima kesalahan! Jika dikodekan dengan benar, aplikasi akan mendeteksinya, tetapi menangani kesalahan seperti itu dan menghentikan program dengan anggun masih bisa menjadi tantangan! Namun, banyak pengembang tidak menguji alokasi memori yang berhasil dan seringkali aplikasi macet segera setelah memori yang tidak dialokasikan ini akan digunakan. Jadi ada peluang kuat bahwa aplikasi akan macet, dan sebenarnya banyak aplikasi akan macet karena Anda memiliki lebih dari satu aplikasi yang biasanya berjalan pada saat yang sama. Mudah-mudahan, kernel itu sendiri harus kebal, tetapi dalam pengalaman saya itu tidak selalu terjadi.

Jika Anda memiliki swap, Anda akan memiliki perilaku yang sama , tetapi Anda memiliki batas lebih tinggi sehingga kemungkinan Anda tidak akan mencapai batas itu.

Saya memiliki 2 mesin personnaly dengan RAM 8 dan 16 GB. Penggunaan pribadi saya atas mesin ini seharusnya tidak pernah membuat saya dekat untuk menggunakan semua RAM ini (hari ini! Mungkin dalam beberapa tahun yang bisa berbeda). Satu-satunya alasan saya akan mencapai batas RAM fisik adalah bahwa suatu proses menjadi nakal dan memakan semua RAM. Tidak memiliki swap adalah suatu kelegaan, kernel akan segera membunuh proses jahat segera setelah mencapai batas RAM. Jika Anda memiliki swap, Anda akan mendapatkan pengalaman yang menyakitkan (mungkin bukan pada SSD ...) karena sistem Anda akan menukar dan menukar dan menukar dan kadang-kadang menjadi benar-benar tidak responsif sampai semoga kernel Anda membunuh pelakunya!

Saran

Anda seharusnya tidak takut oleh orang-orang yang mengatakan sesuatu yang sangat buruk akan terjadi jika Anda menghapus swap. Jika Anda melakukannya, ruang alamat fisik Anda akan berkurang, seperti jika Anda akan beralih dari 4 GB RAM menjadi 2 GB. Apakah Anda akan melakukan hal seperti itu? Maka Anda tidak harus menghapus swap. Namun Anda dapat memutuskan untuk membatasinya, dan itu akan menjadi bijaksana .

Jika orang mengira beban kerjanya mungkin membuatnya menggunakan dekat atau lebih dari RAM fisik yang tersedia, atau jika seseorang membutuhkan banyak I / O (baca / tulis ke disk), maka swap harus disimpan.

Ketika swap harus disimpan, pengguna harus mencoba untuk menetapkan batas jumlah memori yang dapat digunakan oleh suatu proses. Pada sistem Linux, seseorang dapat menggunakan batas memori cgroup untuk menghindari bahwa beberapa proses menjadi tidak terkendali, saya tidak tahu yang setara pada OS X tetapi itu harus menjadi caranya.

Namun, jika seseorang memiliki lebih dari cukup memori yang tersedia untuk beban kerjanya, maka ia dapat dengan aman menonaktifkan swap atau ia dapat menyimpannya. Itu tidak akan banyak berubah bahkan dalam hal kinerja karena jika sistem tidak menggunakan swap, maka Anda tidak terkena penurunan kinerja (terutama terlihat pada hard disk rotasi lama, kurang begitu pada SSD).

Menggunakan trik yang sama seperti di atas untuk mencoba menetapkan batas memori per proses atau kelompok proses juga merupakan penerima dalam hal RAM yang tersedia lebih dari cukup.

Contoh saya sendiri

Saya memiliki PC lama dengan RAM 1 GB, di sana saya memiliki pertukaran besar: 4 GB sehingga saya dapat menjalankan Firefox dan aplikasi lain di dalamnya. Saya cenderung menggunakan aplikasi sesedikit mungkin (atau tab di Firefox) untuk memiliki pengalaman pengguna yang benar.

Saya memiliki server kecil dengan RAM 8 GB. Di sana saya tahu persis pekerjaan saya dan saya tidak ingin server saya melambat karena suatu proses menjadi tidak benar dan menghabiskan semua memori. Di sana saya tidak memiliki batasan swap dan memori cgroup yang membatasi, sehingga aplikasi atau layanan dapat macet tetapi tidak pada kernel. Btw, ini adalah mesin Linux.

Lalu, saya memiliki Mac dengan RAM 16 GB. Saya bukan pengguna satu-satunya, dan kami tidak keberatan menunggu saat berpindah pengguna. Di sana kita punya swap, sulit bagi saya untuk merencanakan beban kerja pengguna lain dari komputer ini. Bahkan jika saya akan menjadi satu-satunya yang akan saya gunakan swap. Saya sering menjalankan beberapa VM dan menggunakan aplikasi yang menghabiskan banyak memori, tetapi tidak semuanya bersamaan, jadi saya tidak keberatan OS bertukar dalam aplikasi yang tidak digunakan sehingga saya bisa mendapatkan disk I / O yang lebih cepat atau meluncurkan VM lain. Sampai sekarang, saya belum melihat mesin ini bertukar!

Huygens
sumber
0

Saya baru saja menonaktifkan file swap pada 2011 Macbook air (RAM 4GB, 128GB SSD) saya karena saya muak dengan file swap yang perlahan memakan semua ruang HD saya yang tersisa dan kemudian harus memulai ulang. Dengan cara ini, idenya adalah saya hanya akan menjalankan lebih sedikit program.

Saya akan melihat apakah itu benar-benar berfungsi, atau jika saya harus me-restart lagi untuk menghapus memori "Wired", tetapi untuk saat ini tampaknya berfungsi dengan baik. Satu kali memori menjadi sangat penuh, komputer melambat seperti halnya ketika SSD saya kehabisan memori - tetapi ia pulih jauh lebih cepat begitu saya keluar dari aplikasi. (Dan saya sebenarnya bisa keluar dari aplikasi, yang biasanya tidak saya lakukan ketika SSD terisi).

Saya akan melihat bagaimana ini berjalan dengan bijaksana, tetapi sejauh ini saya adalah kemping yang bahagia. Itu juga memaksa saya untuk menjalankan lebih sedikit aplikasi (dan tab Chrome) sekaligus, yang bagus untuk fokus tugas.

Josh Penman
sumber
0

Alasan utama untuk menonaktifkan swapfile bukanlah kecepatan - ini adalah ruang disk.

Jika seseorang adalah pengguna yang secara rutin berjalan dalam 5 GB drive penuh, menonaktifkan swap akan menghentikan omelan terus-menerus kehabisan ruang; Saya secara rutin berakhir dengan swapfile 4+ GB dari penelusuran rutin.

Peningkatan kecepatan mengejutkan pada mesin yang lebih tua; tidak begitu mengesankan pada mesin modern yang dilengkapi SSD. (Di bawah OSX 10.0 pada iMac, menggunakan memori virtual mengurangi separuh kecepatan banyak operasi, termasuk menyalin file antar drive).

aramis
sumber
Itu terdengar seperti memperbaiki klakson karena remnya tidak berfungsi. Jika drive terlalu penuh, dapatkan beberapa data darinya.
Tetsujin
@Tujujin File tunggal terbesar pada drive itu ADALAH swapfile.
aramis
maksud saya masih berdiri. Lebih sedikit data, drive lebih besar, atau lebih banyak RAM & Anda tidak perlu melakukannya.
Tetsujin