GNU/Linux >> Belajar Linux >  >> Linux

Apakah Saya Membutuhkan Ruang Tukar Jika Saya Memiliki Jumlah Ram Lebih Dari Cukup?

Dari apa yang saya pahami, tujuan dari swap partisi di Linux adalah untuk membebaskan beberapa informasi "tidak sering diakses" dari RAM dan memindahkannya ke partisi tertentu pada hard drive Anda (dengan biaya membuatnya lebih lambat untuk membaca atau menulis), yang pada dasarnya memungkinkan aplikasi aktif lebih banyak “memori berkecepatan tinggi”.

Ini bagus untuk saat Anda menggunakan mesin dengan sedikit RAM dan tidak ingin mengalami masalah jika Anda kehabisan. Namun, jika sistem Anda memiliki 16 GB atau 32 GB RAM, dan dengan asumsi Anda tidak menjalankan database MySQL untuk StackExchange atau mengedit film berdurasi penuh 1080p di Linux, haruskah partisi swap digunakan?

Jawaban yang Diterima:

Ya.

Anda pasti harus selalu mengaktifkan swap, kecuali jika ada alasan yang sangat memaksa dan melarang (seperti, tidak ada disk sama sekali, atau hanya ada disk jaringan). Haruskah Anda melakukan swap pada urutan ukuran konyol yang sering direkomendasikan (seperti, dua kali jumlah RAM)? Yah, tidak .

Alasannya adalah bahwa swap tidak hanya berguna ketika aplikasi Anda menggunakan lebih banyak memori daripada RAM fisik (sebenarnya, dalam hal ini, swap tidak terlalu berguna sama sekali karena sangat berdampak pada kinerja). Insentif utama untuk swap saat ini adalah tidak untuk secara ajaib mengubah 16GiB RAM menjadi 32 GiB, tetapi untuk membuat penggunaan RAM yang tersedia dan terpasang lebih efisien.

Pada komputer modern, RAM tidak akan terpakai. RAM yang tidak digunakan adalah sesuatu yang Anda tidak bisa membeli dan menyimpan uang sebagai gantinya. Oleh karena itu, apa pun yang Anda muat atau apa pun yang dipetakan dengan memori, apa pun yang mungkin digunakan kembali oleh siapa saja kapan saja nanti (dibatasi oleh kendala keamanan) sedang di-cache. Segera setelah mesin di-boot, semua RAM fisik akan digunakan untuk sesuatu .

Setiap kali Anda meminta halaman memori baru dari sistem operasi, manajer memori harus membuat keputusan yang tepat:

  1. Membersihkan halaman dari cache buffer
  2. Membersihkan halaman dari pemetaan (secara efektif sama dengan #1, di sebagian besar sistem)
  3. Pindahkan halaman yang sudah lama tidak diakses — sebaiknya jangan pernah — untuk bertukar (ini bahkan bisa terjadi secara proaktif, tidak harus pada saat-saat terakhir)
  4. Bunuh proses Anda, atau matikan proses acak (OOM)
  5. Kepanikan kernel

Opsi #4 dan #5 sangat tidak diinginkan dan hanya akan terjadi jika sistem operasi sama sekali tidak punya pilihan lain. Opsi #1 dan #2 berarti Anda membuang sesuatu yang mungkin akan segera Anda butuhkan lagi. Ini berdampak negatif pada kinerja.

Opsi #3 berarti Anda memindahkan sesuatu yang (mungkin) tidak Anda perlukan dalam waktu dekat ke penyimpanan lambat. Tidak apa-apa karena sekarang sesuatu yang Anda butuhkan dapat menggunakan RAM yang cepat.

Dengan menghapus opsi #3, Anda secara efektif membatasi sistem operasi untuk melakukan #1 atau #2. Memuat ulang halaman dari disk sama dengan memuat ulang dari swap, kecuali harus memuat ulang dari swap biasanya lebih kecil kemungkinannya (karena membuat keputusan paging yang tepat).

Dengan kata lain, dengan menonaktifkan swap Anda tidak mendapatkan apa-apa, tetapi Anda membatasi jumlah opsi berguna sistem operasi dalam menangani permintaan memori. Yang mana mungkin tidak , tapi sangat mungkin mungkin kerugian (dan tidak akan pernah menjadi keuntungan).

Terkait:Listrik – Saya mencolokkan Pemanas Ruang ke stopkontak, sekarang stopkontak tidak berfungsi. Listrik masih menyala?

[EDIT]

Pembaca yang cermat dari mmap halaman manual, khususnya deskripsi MAP_NORESERVE , akan melihat alasan bagus lainnya mengapa swap agak diperlukan bahkan pada sistem dengan memori fisik "cukup":

“Ketika ruang swap tidak dicadangkan, seseorang mungkin mendapatkan SIGSEGV saat menulis jika tidak ada memori fisik yang tersedia.”

— Tunggu sebentar, apa maksudnya?

Jika Anda memetakan file, Anda dapat mengakses konten file secara langsung seolah-olah file itu entah bagaimana, secara ajaib, di ruang alamat program Anda. Untuk akses hanya baca, sistem operasi membutuhkan pada prinsipnya tidak lebih dari satu halaman memori fisik yang dapat diisi ulang dengan data yang berbeda setiap kali Anda mengakses halaman virtual yang berbeda (untuk alasan efisiensi, tentu saja bukan itu yang dilakukan, tetapi pada prinsipnya Anda dapat mengakses data senilai terabyte dengan satu halaman memori fisik). Sekarang bagaimana jika Anda juga menulis ke pemetaan file? Dalam hal ini, sistem operasi harus memiliki halaman fisik — atau ruang swap — siap untuk setiap halaman yang ditulis. Tidak ada cara lain untuk menyimpan data sampai proses writeback halaman kotor melakukan tugasnya (yang bisa memakan waktu beberapa detik). Untuk alasan ini, OS mencadangkan (tetapi tidak selalu melakukan) ruang swap, jadi jika Anda menulis ke pemetaan sementara tidak ada halaman fisik yang tidak digunakan (itu sangat mungkin, dan kondisi normal), Anda' kembali dijamin bahwa itu akan tetap berfungsi.

Sekarang bagaimana jika tidak ada swap? Ini berarti bahwa tidak ada swap yang dapat dipesan (duh!), dan ini berarti bahwa segera setelah tidak ada halaman fisik gratis yang tersisa, dan Anda menulis ke sebuah halaman, Anda akan mendapatkan kejutan yang menyenangkan dalam bentuk proses Anda menerima kesalahan segmentasi, dan mungkin dibunuh.

[/EDIT]

Namun, rekomendasi tradisional untuk membuat swap dua kali ukuran RAM tidak masuk akal. Meskipun ruang disk murah, tidak masuk akal untuk menetapkan swap sebanyak itu. Membuang sesuatu yang murah tetap saja boros, dan Anda sama sekali tidak mau untuk terus bertukar masuk dan keluar perangkat berukuran beberapa ratus megabita (atau lebih besar).

Tidak ada satu pun “benar” ukuran swap (ada banyak ukuran "benar" karena ada pengguna dan pendapat). Saya biasanya menetapkan 512MiB tetap, terlepas dari ukuran RAM, yang bekerja sangat baik untuk saya. Alasan di balik itu adalah bahwa 512MiB adalah sesuatu yang Anda selalu mampu saat ini, bahkan pada disk kecil. Di sisi lain, menambahkan beberapa gigabyte swap tidak lebih baik. Anda tidak akan menggunakannya, kecuali jika terjadi kesalahan serius.

Bahkan pada SSD, swap lebih lambat dari RAM (karena bandwidth dan latensi bus), dan meskipun itu sangat dapat diterima untuk memindahkan sesuatu untuk ditukar yang mungkin tidak akan diperlukan lagi (yaitu, kemungkinan besar Anda tidak akan menukarnya lagi, sehingga kumpulan halaman yang tersedia secara efektif diperbesar secara gratis), jika Anda benar-benar membutuhkan jumlah swap yang cukup besar (yaitu, Anda memiliki aplikasi yang menggunakan, misalnya, kumpulan data 50GiB), Anda akan sangat tersesat.

Terkait:Apakah ruang merangkak perlu ventilasi?

Setelah komputer Anda mulai menukar masuk dan keluar halaman senilai gigabyte, semuanya berjalan merangkak. Jadi, bagi kebanyakan orang (termasuk saya) ini bukan pilihan, dan karena itu melakukan swap sebanyak itu tidak masuk akal.


Linux
  1. Tukar ruang di server cloud

  2. Cara Menambahkan Ruang Swap di Ubuntu 22.04

  3. Cara menambah ruang swap di Linux

  1. Pengantar ruang swap pada sistem Linux

  2. Df Mengatakan Saya Memiliki 20g Lebih Banyak Ruang Disk yang Digunakan Daripada Du. Mengapa??

  3. Cara Menambahkan Ruang Swap di Debian 11

  1. Bagaimana cara menambahkan ruang swap di linux

  2. Bagaimana cara memuat ulang semua aplikasi yang sedang berjalan dari ruang swap ke dalam RAM?

  3. Bagaimana Cara Mengalokasikan Lebih Banyak Ruang untuk Bertukar dan Meningkatkan Ukurannya Lebih Besar dari Ram?