Bagaimana saya harus memutuskan ukuran apa yang akan membuat swap saya pada mesin Linux baru (Debian) dengan RAM 2-4 GB? Apakah saya benar-benar membutuhkan ruang swap?
2-4 GB bukan memori yang benar-benar tinggi lagi 5 tahun kemudian.
Keuangan fifi
@KasperSouren Tidak, tidak. Adalah jumlah yang wajar pada saat itu.
C. Ross
Jawaban:
54
Ada banyak cara untuk mengetahui berapa banyak swap yang digunakan di mesin. Saran umum menggunakan rumus berdasarkan RAM seperti 2 x RAM, 1,5 x RAM, 1 x RAM, .75 x RAM, dan .5 x RAM. Banyak kali formula bervariasi tergantung pada jumlah RAM (jadi kotak dengan 1GB RAM mungkin menggunakan 2 x RAM swap (2GB), sedangkan kotak dengan 16GB ram mungkin menggunakan 0,55 RAM swap (8GB).
Satu hal yang perlu dipertimbangkan adalah untuk apa kotak itu akan digunakan. Jika Anda akan memiliki sejumlah besar proses yang berjalan secara bersamaan berjalan di kotak, tetapi sejumlah besar dari mereka akan menganggur untuk periode waktu, kemudian menambahkan swap ekstra masuk akal. Jika Anda akan menjalankan sejumlah kecil proses kritis, maka menambahkan swap ekstra masuk akal (ini mungkin tampak kontra-intuitif, tapi saya akan jelaskan sebentar lagi). Jika Anda menjalankan kotak sebagai desktop, maka menambahkan pertukaran ekstra masuk akal.
Adapun apakah Anda harus memasukkan swap, ya, Anda harus. Anda harus selalu menyertakan ruang swap kecuali Anda benar - benar tahu apa yang Anda lakukan, dan Anda benar-benar memiliki alasan yang bagus untuk itu.
Lihat, cara kerja kernel Linux, swap tidak hanya digunakan ketika Anda telah kehabisan semua memori fisik. Kernel Linux akan mengambil aplikasi yang tidak aktif (tidur) dan setelah periode waktu tertentu, pindahkan aplikasi untuk bertukar dari memori nyata. Hasilnya adalah ketika Anda membutuhkan aplikasi itu, akan ada penundaan sesaat (biasanya hanya satu atau dua detik) sementara memori aplikasi dibaca kembali dari swap ke RAM. Dan ini biasanya hal yang baik.
Ini memungkinkan Anda untuk meletakkan aplikasi yang tidak aktif ke "sleep", memberikan akses aplikasi aktif Anda ke RAM tambahan. Selain itu, Linux akan menggunakan RAM yang tersedia (tidak terisi) pada mesin sebagai cache disk, membuat sebagian besar (lambat) aktivitas disk lebih cepat dan lebih responsif. Mengganti proses yang tidak aktif memberi Anda lebih banyak cache disk dan membuat mesin Anda secara keseluruhan lebih cepat.
Terakhir, mari kita hadapi itu, ruang disk murah. Sangat murah. Benar-benar tidak ada alasan bagus sama sekali untuk tidak menggesek sepotong (relatif) sedikit ruang untuk swap. Jika saya menjalankan dengan 2GB - 4GB RAM di mesin, saya mungkin akan mengatur ruang swap saya untuk setidaknya sama dengan RAM. Jika itu kurang dari 2GB RAM, maka saya masih akan pergi dengan minimal 2GB swap.
UPDATE: Seperti komentar yang sangat baik disebutkan (dan saya lupa untuk memasukkan), jika Anda menjalankan laptop atau desktop yang Anda mungkin ingin dimasukkan ke dalam mode 'hibernate' (Tangguhkan ke Disk), maka Anda selalu ingin setidaknya sebanyak swap karena Anda memiliki memori. Ruang swap akan digunakan untuk menyimpan konten RAM di komputer saat 'tidur'.
Jawaban yang bagus, tetapi Anda lupa satu hal. Jika itu desktop atau laptop, pastikan swap setidaknya sebesar RAM yang Anda miliki sehingga Anda dapat hibernasi komputer Anda. Ini menghemat RAM untuk swap.
Sander Marechal
4
Pos yang bagus. Sander mengalahkan saya ke satu-satunya hal yang akan saya tambahkan ke sana. Saya pikir satu item tambahan, jika Anda memiliki beberapa drive, menempatkan swap Anda pada drive yang tidak memiliki sisa sistem file aktif Anda dapat meningkatkan kinerja karena tidak akan memiliki banyak konflik.
GreenKiwi
seperti yang saya temukan pada musim panas yang lalu, Anda perlu memiliki ruang swap yang besar jika Anda menjalankan Java
warren
Jika pengguna memiliki jumlah RAM yang jauh lebih besar daripada jumlah yang sebenarnya akan mereka gunakan (16GB / 32GB) pada komputer Desktop uptime 100% (tidak ada hibernasi) maka apakah Anda masih menyarankan meminta proses untuk dimasukkan ke SWAP? Sepertinya saya akan ada manfaat meninggalkan semuanya pada RAM kecuali jika Anda sudah mendekati kapasitasnya.
earthmeLon
1
@earthmeLon - Saya sarankan masih memiliki sedikit swap. Disk besar dan murah akhir-akhir ini, sehingga kehilangan beberapa GB ruang disk untuk bertukar dapat diabaikan. Memiliki ruang swap memberi Anda polis asuransi jika ada sesuatu yang memakan lebih banyak RAM daripada yang Anda harapkan.
Christopher Cashell
17
Red Hat merekomendasikan formula berikut untuk server dengan banyak ram:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
Jika sistem Anda memiliki ram 1 GB, swap Anda akan menjadi 2 GB, untuk 16 GB itu akan menjadi 18 GB.
Tautan yang Relevan dari panduan Penyimpanan RHEL6
Ophidian
Sebuah server akan sangat terhenti jika secara konsisten menggunakan 1Gb swap karena ram akan penuh.
user2284570
12
Jawaban yang terlambat, dan saya pikir ini cukup banyak tercakup dalam jawaban yang dipilih, tetapi ada beberapa info yang baik dan mudah dicerna dalam jawaban yang diberikan oleh @ssapkota di sini (salin / tempel di bawah).
Dalam beberapa tahun terakhir, jumlah ruang swap yang direkomendasikan meningkat secara linear dengan jumlah RAM dalam sistem. Tetapi karena jumlah memori dalam sistem modern telah meningkat menjadi ratusan gigabyte, sekarang diakui bahwa jumlah ruang swap yang dibutuhkan suatu sistem adalah fungsi dari beban kerja memori yang berjalan pada sistem itu. Namun, mengingat bahwa ruang swap biasanya ditunjuk pada waktu instalasi, dan bahwa mungkin sulit untuk menentukan terlebih dahulu beban kerja memori suatu sistem , kami sarankan menentukan swap sistem menggunakan tabel berikut.
Tabel saat ini (per Desember 2012):
Amount of RAM in the system Recommended swap space Recommended swap space
if allowing for hibernation
--------------------------- ---------------------------- ---------------------------
2GB of RAM or less 2 times the amount of RAM 3 times the amount of RAM
2GB to 8GB of RAM Equal to the amount of RAM 2 times the amount of RAM
8GB to 64GB of RAM 0.5 times the amount of RAM 1.5 times the amount of RAM
64GB of RAM or more 4GB of swap space No extra space needed
Meja asli:
Amount of RAM in the System Recommended Amount of Swap Space
4GB of RAM or less a minimum of 2GB of swap space
4GB to 16GB of RAM a minimum of 4GB of swap space
16GB to 64GB of RAM a minimum of 8GB of swap space
64GB to 256GB of RAM a minimum of 16GB of swap space
256GB to 512GB of RAM a minimum of 32GB of swap space
Tergantung pada apa yang Anda lakukan dengannya. Dengan beban kerja yang sesuai, Anda sebenarnya tidak memerlukan ruang swap apa pun, apakah Anda memiliki RAM 16MB atau 16384MB; memang sebagian besar perangkat Linux tertanam berjalan tanpa (apa yang akan mereka tukarkan?)
Mengingat harga RAM, Anda mungkin tidak akan menggunakan swap untuk perhitungan aktif. Jadi, apa yang tersisa?
Pada desktop, swap space digunakan untuk suspend-to-disk. Ruang swap ini harus sekitar 1 × RAM, tergantung pada seberapa baik isi memori dikompres.
Mengizinkan tugas tidak aktif dihapus dari RAM untuk membuat lebih banyak ruang untuk cache disk
Sama, tetapi untuk memungkinkan proses aktif menggunakannya untuk heap / stack
(2) dan (3) sangat tergantung pada beban kerja. Di desktop saya, saya dapat dengan mudah menggunakan 4GB + on (2), dari membiarkan vims, xterms, dll berjalan di desktop lain.
Pada sebagian besar server yang saya jalankan, hampir tidak pernah ada yang bertukar dan swap 1-2 GB (terlepas dari jumlah RAM) tampaknya OK.
swap space juga digunakan jika Anda menjalankan apa pun yang menggunakan JVM: jangan chintz dan lupa untuk mengalokasikan ruang swap jika Anda menjalankan Java!
warren
@warren: Saya punya instance Tomcat, masing-masing melebihi 3GB, namun tidak menggunakan swap (dan satu menggunakan hugepages, dan karenanya tidak dapat ditukar). Tidak yakin apa yang Anda bicarakan.
derobert
ada bug semi-kabur di JVM terkait dengan pengaturan memori minimum dan maksimum yang saya jalankan di musim panas yang lalu ( antipaucity.com/?p=984 ). TL; DR - setiap kali JVM meminta lebih banyak memori dari OS, ia menulis sendiri untuk bertukar, mendapatkan potongan memori baru, kemudian membaca sendiri kembali ke RAM sehingga memorinya bersebelahan
warren
@warren: OK, saya menjalankan OpenJDK pada 64-bit, dengan Xmx dan Xms sama. Tapi saya tidak yakin bagaimana java akan memaksa dirinya untuk bertukar, satu-satunya penutupan syscall adalah madvise, tapi itu tidak akan gagal ... bahwa bug berbicara tentang kehabisan memori selama pengumpulan sampah. Menambahkan swap mencegahnya, tentu saja, tetapi begitu juga dengan menambah RAM. Mungkin karena 32-bit dengan PAE?
derobert
itu terjadi dengan JVM 64-bit, juga: jika Anda memiliki Xmsdan Xmxtidak menyetel ke nilai yang sama, itu dapat menggigit Anda dengan buruk: menyebabkan masalah besar bagi kami selama dua minggu hingga kami akhirnya melacaknya
warren
4
Yah, itu tergantung pada layanan dan aplikasi apa yang Anda rencanakan untuk dijalankan. Anda dapat menonton penggunaan memori Anda dengan bebas -m dan menyesuaikan partisi swap Anda dari waktu ke waktu.
Inilah diskusi yang menarik tentang masalah ini. Secara pribadi (dan setelah membaca diskusi itu) saya masih menyisakan sekitar 1 GB untuk swap.
Saya tidak dapat berbicara dengan Debian secara langsung, tetapi saya tahu bahwa ketika Anda mendapatkan RAM di atas 2 GB, persamaan 2xRAM aslinya berubah, biasanya turun menjadi 1xRAM. Saya pikir setelah Anda menekan 16 GB RAM sarannya turun lagi menjadi .75xRAM.
Tentu saja, saya menemukan ini benar untuk Solaris, dan sebenarnya adalah metrik yang digunakan untuk instalasi Oracle, jadi YMMV tergantung pada aplikasi yang akan Anda jalankan di sana.
Saya selalu melakukan swap (setidaknya) sebanyak RAM. Kalau-kalau saya ingin hibernasi mesin suatu hari. Dapat bekerja dengan lebih sedikit, tetapi bisa juga tidak.
Ruang HDD murah hari ini, oleh karena itu saya tidak ragu memberikan ruang swap.
Swap space dapat berfungsi sebagai "padding" saat Anda kehabisan memori segera.
Ketika suatu proses mengkonsumsi semua RAM yang tersedia dan kemudian beberapa mesin akan berjalan sangat lambat, tetapi Anda biasanya akan dapat pulih. Ini juga akan lebih mudah untuk melihat proses mana yang menyebabkan masalah.
Ini adalah pedang bermata dua: di PC rumah saya, saya menghapus swap ketika saya menggunakan Firefox 2.x, karena perlahan-lahan memakan semua memori, dan ketika mesin bertukar, itu menjadi benar-benar tidak dapat digunakan; tanpa swap, proses firefox itu hanya ditutup oleh kernel :)
wazoox
1
Selama bertahun-tahun saya telah mengikuti aturan bahwa untuk mesin Windows Anda memiliki swap lebih banyak dari RAM Anda ... Di Novell kita akan menyetel swap lebih tinggi jika kita memiliki lebih banyak printer ... Untuk linux aturan dan praktiknya untuk saya adalah 1GB tukar untuk setiap RAM 2GB yang Anda miliki. Dan Anda meletakkannya di bagian depan disk sehingga diakses lebih cepat.
Jika itu adalah gateway email / spam saya menggunakan gandakan swap ke RAM
Jika server * saya tidak menggunakan swap sama sekali
jika itu adalah server LAMP aturan 1/2 berlaku.
Mileage akan bervariasi tergantung pada aplikasi dan penggunaan GUI.
Untuk apa Anda menggunakan sistem ini? Secara pribadi saya tidak menggunakan swap apa pun. Jika ada yang menggunakan token 512MB atau sesuatu hanya supaya hal-hal bisa dimasukkan ke disk jika tetap tetapi tidak aktif untuk waktu yang lama.
Saya hanya menggunakan token swap kecil (biasanya 256 MB, tetapi saya bahkan sudah melakukan 64 MB) karena mengkonfigurasi sistem dengan nol swap memerlukan konfigurasi khusus.
Ruang disk murah, tapi slooooooooow. Segera setelah sistem mulai bertukar, kinerjanya nol. Dan RAM tidak lagi begitu mahal.
Percayalah, beli prosesor yang sedikit lebih lambat dan beli lebih banyak RAM. 2,8 GHz bukannya 3,0 GHz akan menghemat cukup uang untuk membeli RAM 2 GB, setidaknya.
Jawaban:
Ada banyak cara untuk mengetahui berapa banyak swap yang digunakan di mesin. Saran umum menggunakan rumus berdasarkan RAM seperti 2 x RAM, 1,5 x RAM, 1 x RAM, .75 x RAM, dan .5 x RAM. Banyak kali formula bervariasi tergantung pada jumlah RAM (jadi kotak dengan 1GB RAM mungkin menggunakan 2 x RAM swap (2GB), sedangkan kotak dengan 16GB ram mungkin menggunakan 0,55 RAM swap (8GB).
Satu hal yang perlu dipertimbangkan adalah untuk apa kotak itu akan digunakan. Jika Anda akan memiliki sejumlah besar proses yang berjalan secara bersamaan berjalan di kotak, tetapi sejumlah besar dari mereka akan menganggur untuk periode waktu, kemudian menambahkan swap ekstra masuk akal. Jika Anda akan menjalankan sejumlah kecil proses kritis, maka menambahkan swap ekstra masuk akal (ini mungkin tampak kontra-intuitif, tapi saya akan jelaskan sebentar lagi). Jika Anda menjalankan kotak sebagai desktop, maka menambahkan pertukaran ekstra masuk akal.
Adapun apakah Anda harus memasukkan swap, ya, Anda harus. Anda harus selalu menyertakan ruang swap kecuali Anda benar - benar tahu apa yang Anda lakukan, dan Anda benar-benar memiliki alasan yang bagus untuk itu.
Lihat, cara kerja kernel Linux, swap tidak hanya digunakan ketika Anda telah kehabisan semua memori fisik. Kernel Linux akan mengambil aplikasi yang tidak aktif (tidur) dan setelah periode waktu tertentu, pindahkan aplikasi untuk bertukar dari memori nyata. Hasilnya adalah ketika Anda membutuhkan aplikasi itu, akan ada penundaan sesaat (biasanya hanya satu atau dua detik) sementara memori aplikasi dibaca kembali dari swap ke RAM. Dan ini biasanya hal yang baik.
Ini memungkinkan Anda untuk meletakkan aplikasi yang tidak aktif ke "sleep", memberikan akses aplikasi aktif Anda ke RAM tambahan. Selain itu, Linux akan menggunakan RAM yang tersedia (tidak terisi) pada mesin sebagai cache disk, membuat sebagian besar (lambat) aktivitas disk lebih cepat dan lebih responsif. Mengganti proses yang tidak aktif memberi Anda lebih banyak cache disk dan membuat mesin Anda secara keseluruhan lebih cepat.
Terakhir, mari kita hadapi itu, ruang disk murah. Sangat murah. Benar-benar tidak ada alasan bagus sama sekali untuk tidak menggesek sepotong (relatif) sedikit ruang untuk swap. Jika saya menjalankan dengan 2GB - 4GB RAM di mesin, saya mungkin akan mengatur ruang swap saya untuk setidaknya sama dengan RAM. Jika itu kurang dari 2GB RAM, maka saya masih akan pergi dengan minimal 2GB swap.
UPDATE: Seperti komentar yang sangat baik disebutkan (dan saya lupa untuk memasukkan), jika Anda menjalankan laptop atau desktop yang Anda mungkin ingin dimasukkan ke dalam mode 'hibernate' (Tangguhkan ke Disk), maka Anda selalu ingin setidaknya sebanyak swap karena Anda memiliki memori. Ruang swap akan digunakan untuk menyimpan konten RAM di komputer saat 'tidur'.
sumber
Red Hat merekomendasikan formula berikut untuk server dengan banyak ram:
Jika sistem Anda memiliki ram 1 GB, swap Anda akan menjadi 2 GB, untuk 16 GB itu akan menjadi 18 GB.
sumber
Jawaban yang terlambat, dan saya pikir ini cukup banyak tercakup dalam jawaban yang dipilih, tetapi ada beberapa info yang baik dan mudah dicerna dalam jawaban yang diberikan oleh @ssapkota di sini (salin / tempel di bawah).
Berikut rekomendasi yang sangat bagus dari RedHat: Recommended System Swap Space
Kutipan dari tautan yang sama:
Tabel saat ini (per Desember 2012):
Meja asli:
sumber
Tergantung pada apa yang Anda lakukan dengannya. Dengan beban kerja yang sesuai, Anda sebenarnya tidak memerlukan ruang swap apa pun, apakah Anda memiliki RAM 16MB atau 16384MB; memang sebagian besar perangkat Linux tertanam berjalan tanpa (apa yang akan mereka tukarkan?)
Mengingat harga RAM, Anda mungkin tidak akan menggunakan swap untuk perhitungan aktif. Jadi, apa yang tersisa?
(2) dan (3) sangat tergantung pada beban kerja. Di desktop saya, saya dapat dengan mudah menggunakan 4GB + on (2), dari membiarkan vims, xterms, dll berjalan di desktop lain.
Pada sebagian besar server yang saya jalankan, hampir tidak pernah ada yang bertukar dan swap 1-2 GB (terlepas dari jumlah RAM) tampaknya OK.
sumber
madvise
, tapi itu tidak akan gagal ... bahwa bug berbicara tentang kehabisan memori selama pengumpulan sampah. Menambahkan swap mencegahnya, tentu saja, tetapi begitu juga dengan menambah RAM. Mungkin karena 32-bit dengan PAE?Xms
danXmx
tidak menyetel ke nilai yang sama, itu dapat menggigit Anda dengan buruk: menyebabkan masalah besar bagi kami selama dua minggu hingga kami akhirnya melacaknyaYah, itu tergantung pada layanan dan aplikasi apa yang Anda rencanakan untuk dijalankan. Anda dapat menonton penggunaan memori Anda dengan bebas -m dan menyesuaikan partisi swap Anda dari waktu ke waktu.
Inilah diskusi yang menarik tentang masalah ini. Secara pribadi (dan setelah membaca diskusi itu) saya masih menyisakan sekitar 1 GB untuk swap.
sumber
Saya tidak dapat berbicara dengan Debian secara langsung, tetapi saya tahu bahwa ketika Anda mendapatkan RAM di atas 2 GB, persamaan 2xRAM aslinya berubah, biasanya turun menjadi 1xRAM. Saya pikir setelah Anda menekan 16 GB RAM sarannya turun lagi menjadi .75xRAM.
Tentu saja, saya menemukan ini benar untuk Solaris, dan sebenarnya adalah metrik yang digunakan untuk instalasi Oracle, jadi YMMV tergantung pada aplikasi yang akan Anda jalankan di sana.
sumber
Saya selalu melakukan swap (setidaknya) sebanyak RAM. Kalau-kalau saya ingin hibernasi mesin suatu hari. Dapat bekerja dengan lebih sedikit, tetapi bisa juga tidak.
Ruang HDD murah hari ini, oleh karena itu saya tidak ragu memberikan ruang swap.
sumber
Swap space dapat berfungsi sebagai "padding" saat Anda kehabisan memori segera.
Ketika suatu proses mengkonsumsi semua RAM yang tersedia dan kemudian beberapa mesin akan berjalan sangat lambat, tetapi Anda biasanya akan dapat pulih. Ini juga akan lebih mudah untuk melihat proses mana yang menyebabkan masalah.
sumber
Selama bertahun-tahun saya telah mengikuti aturan bahwa untuk mesin Windows Anda memiliki swap lebih banyak dari RAM Anda ... Di Novell kita akan menyetel swap lebih tinggi jika kita memiliki lebih banyak printer ... Untuk linux aturan dan praktiknya untuk saya adalah 1GB tukar untuk setiap RAM 2GB yang Anda miliki. Dan Anda meletakkannya di bagian depan disk sehingga diakses lebih cepat.
jika itu adalah server LAMP aturan 1/2 berlaku.
Mileage akan bervariasi tergantung pada aplikasi dan penggunaan GUI.
sumber
Saya membuat swap 1GB dan membeli lebih banyak RAM begitu digunakan. Anda tidak benar-benar membutuhkan swap di komputer modern, RAM sangat murah.
sumber
Untuk apa Anda menggunakan sistem ini? Secara pribadi saya tidak menggunakan swap apa pun. Jika ada yang menggunakan token 512MB atau sesuatu hanya supaya hal-hal bisa dimasukkan ke disk jika tetap tetapi tidak aktif untuk waktu yang lama.
sumber
Saya hanya menggunakan token swap kecil (biasanya 256 MB, tetapi saya bahkan sudah melakukan 64 MB) karena mengkonfigurasi sistem dengan nol swap memerlukan konfigurasi khusus.
Ruang disk murah, tapi slooooooooow. Segera setelah sistem mulai bertukar, kinerjanya nol. Dan RAM tidak lagi begitu mahal.
Percayalah, beli prosesor yang sedikit lebih lambat dan beli lebih banyak RAM. 2,8 GHz bukannya 3,0 GHz akan menghemat cukup uang untuk membeli RAM 2 GB, setidaknya.
sumber