Seberapa besar seharusnya partisi swap?

10

selama beberapa tahun, saya telah membaca bahwa itu adalah ide yang baik untuk membuat partisi swap yang memiliki ruang ganda RAM saya. apakah masih berlaku hari ini? atau ini tidak diperlukan lagi?

Saya memiliki server dengan 8 GiB RAM dan saya perlu membuat partisi swap, dan saya bertanya-tanya apakah 16 GiB terlalu banyak.

cd1
sumber

Jawaban:

11

Pada sistem besar, 8GB RAM fisik, kami biasanya mengalokasikan 2GB swap. Ini adalah server database yang dimuat yang menjalankan Oracle atau PostgreSQL. Selama bertahun-tahun, saya belum pernah melihat swap hit bahkan di bawah beban berat. Beban berat sekitar 100 hingga 150 pengguna melakukan sekitar 10.000 pembacaan SQL, dan mungkin 2.500 menulis per menit.

Kami juga menyesuaikan tingkat swapiness hingga mencegah pertukaran dan kami mematikan proses yang tidak diperlukan yang kami tahu tidak perlu berjalan. (Custom Linux builds)

Seperti Eddie, mengatakan di atas, 1x RAM fisik adalah aturan praktis yang baik untuk apa pun di bawah 4GB. Saya membuat custom Linux build untuk perusahaan besar, Fortune-500 dan ini adalah hal-hal yang biasanya kami lakukan, dan kami belum pernah mengalami masalah apa pun selama 5 tahun terakhir ini. Saya telah berkonsultasi untuk mereka.

Pada sistem yang lebih besar: 64bit Linux dengan 32GB dan 64GB RAM, ini adalah server database Oracle kami, dan kami biasanya menyimpan 2GB swap untuk hal-hal seperti yang ditunjukkan Eddie di atas - proses idle akan dipindahkan untuk swap tergantung pada pengaturan swapiness Anda.

Kilo
sumber
5

Sebuah pertanyaan yang tampaknya tak lekang oleh waktu. Orang-orang baik di SlashDot membahas ini beberapa waktu yang lalu. Lihat apa yang mereka katakan:

  • Ruang disk bukan masalah dengan HDD modern, 16GB masih merupakan jumlah yang sepele untuk drive TB modern.
  • Namun, ruang swap yang signifikan dapat menjadi masalah jika manajemen memori buruk:

Jika saya menonton film 4 GB selama 2 jam, banyak manajer memori akan memutuskan bahwa upaya untuk men-cache semua data itu mungkin merupakan hal yang baik. Setengah jalan melalui film, ia akan berpikir bahwa semua program yang berjalan lainnya telah tidak digunakan selama satu jam dan dapat dengan aman ditukar demi cache lebih dari file 4 GB itu. Hasil akhirnya adalah separuh dari program Anda diganti setelah menonton film, menghasilkan sistem yang lamban yang merusak seluruh file swap.

  • Pada akhirnya, keputusan yang tepat harus berasal dari persyaratan memori, bukan rumus kasarnya:

Jika Anda memiliki [cukup RAM untuk menjalankan program yang ingin Anda gunakan setiap hari], maka tidak ada alasan untuk pernah menggunakan swap.

KPWINC
sumber
3

Lihat jawabannya. Berapa ruang SWAP pada sistem memori tinggi? untuk beberapa panduan, meskipun pertanyaan Anda lebih umum. Pendapat sangat bervariasi mengenai hal ini, tetapi umumnya orang dengan RAM 1 GiB atau lebih tampaknya berjalan tanpa swap sepenuhnya, atau dengan memori 1x sebagai swap.

Bahkan jika Anda tidak berencana untuk menggunakan begitu banyak RAM sehingga Anda akan memaksa swapping terjadi, ada beberapa nilai dalam memiliki setidaknya 1xememory sebagai swap: Ini memungkinkan sistem operasi untuk menukar beberapa hal yang tidak diharapkan untuk digunakan segera sehingga ia dapat menggunakan memori itu untuk disk atau buffer IO, misalnya.

Eddie
sumber
3

Jika Anda mengharapkan sistem Anda dapat melakukan hibernasi dan kemudian melanjutkan dengan sukses :-), mungkin lebih baik mengalokasikan lebih banyak ruang untuk partisi swap daripada jumlah RAM fisik

dmityugov
sumber
3

Penyedia VPS saya bahkan tidak menyediakan ruang swap untuk server, dan milik saya sudah berjalan baik tanpa itu.

Sebagian besar server yang saya lihat setiap hari di tempat kerja juga tanpa swap.

Edit

Namun - jika Anda menjalankan JVM, membuat yakin Anda memiliki setidaknya sebanyak ruang swap yang Anda akan pernah mengatur -Xmxkarena diketahui masalah dengan JVM.

Singkatnya, ketika JVM membutuhkan lebih banyak memori daripada yang saat ini digunakan (tetapi masih belum mencapai Xmx), itu:

  • swap sendiri ke disk
  • mengalokasikan memori baru
  • membaca sendiri kembali ke RAM

Ini berarti bahwa jika Anda menukar kurang dari Anda Xmx, itu bisa gagal.

Mengutip laporan bug

Hal terbaik untuk dilakukan adalah meningkatkan ukuran swap pada mesin yang mengalami kesalahan ini.

Saya mencoba memainkannya dengan aman ketika bekerja dengan JVM dan mengatur swap ke memori fisik yang sama.

warren
sumber
2

Mengingat kecepatan hard disk modern, swap besar hanyalah undangan untuk meronta-ronta. Mungkin SSD akan membalikkan tren ini, tetapi dengan kecepatan transfer maksimum 300MB / s untuk disk, menukar 2-4GB akan memakan waktu cukup lama.

Di masa lalu (yaitu: Linux 1.2, i386, SunOS 4.x), Anda mungkin memiliki 5-15 MB proses daemon berjalan dan di mana saja dari 4-32MB RAM dan sebagainya daemon yang baru saja diblokir menunggu I / O dapat ditukar dengan tidak ada kinerja yang nyata ... Dan mereka akan lebih baik karena program pengguna mungkin memiliki sedikitnya 2-3MB RAM yang tersedia. Bertukar banyak artinya.

Sekarang di lingkungan saya, sebagian besar server memiliki beban kerja berat memori tunggal dan RAM dapat diperkirakan secara akurat ... Tukar ada untuk keadaan darurat, proses run-away dan sebagainya.

The pengecualian adalah untuk laptop dan workstation yang mungkin tidur. Banyak OS akan menggunakan area swap untuk menyimpan gambar yang ditangguhkan dan dalam kasus tersebut, swap harus lebih besar daripada memori fisik. Di Linux dengan suspend2 / tuxonice Anda harus memiliki 2xRAM dalam ukuran swap untuk mendukung suspend-to-disk.

Alexandre Carmel-Veilleux
sumber
Di masa lalu, Sistem V 3.2 dan sebelumnya menggunakan persis swap berukuran RAM. Kurang rusak dan terbuang sia-sia, karena itu tidak secanggih sistem memori virtual seperti BSD.
kmarsh
2

Hari-hari ini jika Anda menjalankan server 32GB atau 64GB, 4 GB swap untuk default adalah jumlah yang aman. Apa pun yang lebih besar dari itu berlebihan dengan banyaknya RAM fisik yang tersedia.

Edward_178118
sumber
1

Idealnya Anda tidak akan menggunakan swap sama sekali, dan hal 2x RAM benar-benar sesuatu yang tersisa dari tahun lalu.

Jika Anda khawatir tentang itu, saya akan melakukan sesuatu seperti:

Max Memory Requirement - Physical Ram = Swap

Saya pikir 16GB terdengar terlalu besar, secara pribadi.

WerkkreW
sumber
1

Di masa lalu yang Anda inginkan sebanyak mungkin, konsumsi memori dalam kernel * nix modern adalah hal di masa lalu. Pepatah lama adalah "2x ingatanmu". Antara 2GB atau jumlah ruang yang dimiliki alat ini hari ini dan usia akan membawa Anda mendekati tempat yang Anda inginkan.

XTZ
sumber
1

Swap ini juga digunakan untuk menyimpan dump setelah panik kernel. Jika Anda tertarik dengan menganalisis dump ini dan tidak menentukan tujuan dump lain, swap Anda setidaknya harus sebesar RAM Anda.

Benoit
sumber
0

Tidak ada algoritma tunggal yang memberi tahu Anda berapa banyak swap yang Anda butuhkan. Dalam praktiknya, Anda perlu menempatkan sistem Anda di bawah beban terbesar yang Anda rencanakan untuk didukung, dan mencari tahu berapa banyak sumber daya yang sebenarnya digunakan. Setel file swap Anda sesuai.

Untuk RAM fisik, Anda harus meletakkan sistem Anda di bawah beban "pelayaran" yang sebenarnya Anda harapkan untuk ditangani, dan membeli yang sesuai. Untuk sistem dengan latensi rendah, Anda tidak boleh bertukar sama sekali di dalam muatan jelajah Anda (ini tidak sama dengan tidak memiliki swap yang dialokasikan atau bahkan sedang digunakan.) Sejumlah kecil swapping dapat terjadi karena utilitas sistem yang sedikit digunakan melakukan pemeliharaan rumah. , tetapi pada umumnya Anda harus bertukar sesedikit mungkin.

Tentu saja, Anda dapat menukar kinerja dengan harga lebih rendah.

Christopher
sumber