GNU/Linux >> Belajar Linux >  >> Linux

Pengantar ruang swap pada sistem Linux

Ada dua tipe dasar memori di komputer biasa. Tipe pertama, random access memory (RAM), digunakan untuk menyimpan data dan program saat sedang aktif digunakan oleh komputer. Program dan data tidak dapat digunakan oleh komputer kecuali disimpan dalam RAM. RAM adalah memori yang mudah menguap; yaitu data yang tersimpan di RAM akan hilang jika komputer dimatikan.

Hard drive adalah media magnetik yang digunakan untuk penyimpanan data dan program jangka panjang. Media magnetik tidak mudah menguap; data yang disimpan pada disk tetap ada bahkan ketika daya dimatikan dari komputer. CPU (central processing unit) tidak dapat secara langsung mengakses program dan data pada hard drive; itu harus disalin ke RAM terlebih dahulu, dan di sanalah CPU dapat mengakses instruksi pemrogramannya dan data yang akan dioperasikan oleh instruksi tersebut. Selama proses boot, komputer menyalin program sistem operasi tertentu, seperti kernel dan init atau systemd, dan data dari hard drive ke RAM, yang diakses langsung oleh prosesor komputer, CPU.

Jenis memori kedua dalam sistem Linux modern adalah ruang swap.

Tukar ruang

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Fungsi utama dari ruang swap adalah untuk menggantikan ruang disk dengan memori RAM ketika RAM yang sebenarnya telah terisi dan diperlukan lebih banyak ruang.

Misalnya, anggap Anda memiliki sistem komputer dengan RAM 8 GB. Jika Anda memulai program yang tidak mengisi RAM itu, semuanya baik-baik saja dan tidak diperlukan pertukaran. Tapi misalkan spreadsheet yang sedang Anda kerjakan bertambah ketika Anda menambahkan lebih banyak baris, dan itu, ditambah semua hal lain yang sedang berjalan, sekarang mengisi semua RAM. Tanpa ruang swap yang tersedia, Anda harus berhenti mengerjakan spreadsheet sampai Anda dapat mengosongkan sebagian dari RAM Anda yang terbatas dengan menutup beberapa program lain.

Kernel menggunakan program manajemen memori yang mendeteksi blok, alias halaman, memori yang isinya belum digunakan baru-baru ini. Program manajemen memori menukar cukup banyak halaman memori yang relatif jarang digunakan ini ke partisi khusus pada hard drive yang khusus ditujukan untuk "paging", atau bertukar. Ini membebaskan RAM dan memberi ruang bagi lebih banyak data untuk dimasukkan ke dalam spreadsheet Anda. Halaman-halaman memori yang ditukar ke hard drive dilacak oleh kode manajemen memori kernel dan dapat di-page kembali ke RAM jika diperlukan.

Jumlah total memori di komputer Linux adalah RAM ditambah ruang swap dan disebut sebagai memori virtual .

Jenis pertukaran Linux

Linux menyediakan dua jenis ruang swap. Secara default, sebagian besar instalasi Linux membuat partisi swap, tetapi juga dimungkinkan untuk menggunakan file yang dikonfigurasi secara khusus sebagai file swap. Partisi swap sesuai dengan namanya—partisi disk standar yang ditetapkan sebagai ruang swap oleh mkswap perintah.

File swap dapat digunakan jika tidak ada ruang disk kosong untuk membuat partisi swap baru atau ruang dalam grup volume tempat volume logis dapat dibuat untuk ruang swap. Ini hanyalah file biasa yang dibuat dan dialokasikan sebelumnya ke ukuran tertentu. Kemudian mkswap perintah dijalankan untuk mengkonfigurasinya sebagai ruang swap. Saya tidak menyarankan menggunakan file untuk ruang swap kecuali benar-benar diperlukan.

Meronta-ronta

Thrashing dapat terjadi ketika total memori virtual, baik RAM dan ruang swap, menjadi hampir penuh. Sistem menghabiskan begitu banyak waktu untuk paging blok memori antara ruang swap dan RAM dan kembali sehingga sedikit waktu yang tersisa untuk pekerjaan nyata. Gejala khasnya sangat jelas:Sistem menjadi lambat atau sama sekali tidak responsif, dan lampu aktivitas hard drive hampir selalu menyala.

Jika Anda dapat mengatur untuk mengeluarkan perintah seperti free yang menunjukkan beban CPU dan penggunaan memori, Anda akan melihat bahwa beban CPU sangat tinggi, mungkin sebanyak 30 hingga 40 kali jumlah inti CPU dalam sistem. Gejala lainnya adalah RAM dan ruang swap hampir sepenuhnya dialokasikan.

Padahal, melihat data SAR (system activity report) juga bisa menunjukkan gejala tersebut. Saya menginstal SAR di setiap sistem tempat saya bekerja dan menggunakannya untuk analisis forensik pasca-perbaikan.

Berapa jumlah ruang swap yang tepat?

Bertahun-tahun yang lalu, aturan praktis untuk jumlah ruang swap yang harus dialokasikan pada hard drive adalah 2X jumlah RAM yang terpasang di komputer (tentu saja, saat itulah sebagian besar RAM komputer diukur dalam KB atau MB) . Jadi jika komputer memiliki 64KB RAM, partisi swap 128KB akan menjadi ukuran yang optimal. Aturan ini memperhitungkan fakta bahwa ukuran RAM biasanya cukup kecil pada waktu itu dan mengalokasikan lebih dari 2X RAM untuk ruang swap tidak meningkatkan kinerja. Dengan lebih dari dua kali RAM untuk swap, sebagian besar sistem menghabiskan lebih banyak waktu untuk bekerja daripada benar-benar melakukan pekerjaan yang bermanfaat.

RAM telah menjadi komoditas yang murah dan kebanyakan komputer saat ini memiliki jumlah RAM yang mencapai puluhan gigabyte. Sebagian besar komputer saya yang lebih baru memiliki setidaknya 8GB RAM, satu memiliki 32GB, dan workstation utama saya memiliki 64GB. Komputer lama saya memiliki RAM 4 hingga 8 GB.

Ketika berhadapan dengan komputer yang memiliki RAM dalam jumlah besar, faktor kinerja pembatas untuk ruang swap jauh lebih rendah daripada pengali 2X. Panduan Instalasi online Fedora 28, yang dapat ditemukan online di Panduan Instalasi Fedora, mendefinisikan pemikiran terkini tentang alokasi ruang swap. Saya telah menyertakan di bawah ini beberapa diskusi dan tabel rekomendasi dari dokumen itu.

Tabel berikut memberikan ukuran partisi swap yang disarankan tergantung pada jumlah RAM di sistem Anda dan apakah Anda ingin memori yang cukup untuk sistem Anda hibernasi. Ukuran partisi swap yang direkomendasikan dibuat secara otomatis selama instalasi. Namun, untuk mengizinkan hibernasi, Anda perlu mengedit ruang swap di tahap partisi khusus.

Tabel 1:Ruang pertukaran sistem yang direkomendasikan dalam dokumentasi Fedora

Jumlah RAM sistem

Ruang swap yang disarankan

Pertukaran yang disarankan dengan hibernasi

kurang dari 2 GB

2 kali jumlah RAM

3 kali jumlah RAM

2 GB - 8 GB

Sama dengan jumlah RAM

2 kali jumlah RAM

8 GB - 64 GB

0,5 kali jumlah RAM

1,5 kali jumlah RAM

lebih dari 64 GB

tergantung beban kerja

hibernasi tidak disarankan

Di batas antara setiap rentang yang tercantum di atas (misalnya, sistem dengan RAM sistem 2 GB, 8 GB, atau 64 GB), gunakan kebijaksanaan sehubungan dengan ruang swap dan dukungan hibernasi yang dipilih. Jika sumber daya sistem Anda memungkinkan, menambah ruang swap dapat menghasilkan kinerja yang lebih baik.

Tentu saja, sebagian besar administrator Linux memiliki ide mereka sendiri tentang jumlah ruang swap yang sesuai—dan juga hampir semua hal lainnya. Tabel 2, di bawah, berisi rekomendasi saya berdasarkan pengalaman pribadi saya di berbagai lingkungan. Ini mungkin tidak cocok untuk Anda, tetapi seperti Tabel 1, ini mungkin membantu Anda memulai.

Tabel 2:Ruang pertukaran sistem yang direkomendasikan per penulis

Jumlah RAM

Ruang swap yang direkomendasikan

2GB

2X RAM

2GB – 8GB

=RAM

>8GB

8GB

Satu pertimbangan di kedua tabel adalah bahwa ketika jumlah RAM meningkat, di luar titik tertentu menambahkan lebih banyak ruang swap hanya mengarah ke meronta-ronta jauh sebelum ruang swap bahkan hampir terisi. Jika Anda memiliki terlalu sedikit memori virtual saat mengikuti rekomendasi ini, Anda harus menambahkan lebih banyak RAM, jika memungkinkan, daripada lebih banyak ruang swap. Seperti semua rekomendasi yang memengaruhi kinerja sistem, gunakan yang terbaik untuk lingkungan spesifik Anda. Ini akan membutuhkan waktu dan usaha untuk bereksperimen dan membuat perubahan berdasarkan kondisi di lingkungan Linux Anda.

Menambahkan lebih banyak ruang swap ke lingkungan disk non-LVM

Karena perubahan persyaratan untuk ruang swap pada host dengan Linux yang sudah diinstal, mungkin perlu untuk mengubah jumlah ruang swap yang ditentukan untuk sistem. Prosedur ini dapat digunakan untuk kasus umum di mana jumlah ruang swap perlu ditingkatkan. Ini mengasumsikan ruang disk yang tersedia cukup tersedia. Prosedur ini juga mengasumsikan bahwa disk dipartisi dalam EXT4 "mentah" dan partisi swap dan tidak menggunakan manajemen volume logis (LVM).

Langkah-langkah dasar yang harus diambil sederhana:

  1. Matikan ruang swap yang ada.

  2. Buat partisi swap baru dengan ukuran yang diinginkan.

  3. Baca ulang tabel partisi.

  4. Konfigurasikan partisi sebagai ruang swap.

  5. Tambahkan partisi baru/etc/fstab.

  6. Aktifkan pertukaran.

Reboot seharusnya tidak diperlukan.

Demi keamanan, sebelum mematikan swap, paling tidak Anda harus memastikan bahwa tidak ada aplikasi yang berjalan dan tidak ada ruang swap yang digunakan. free atau top perintah dapat memberi tahu Anda apakah ruang swap sedang digunakan. Agar lebih aman, Anda dapat kembali ke mode run level 1 atau single-user.

Matikan partisi swap dengan perintah yang mematikan semua ruang swap:

$ swapoff -a 

Sekarang tampilkan partisi yang ada pada harddisk.

$ fdisk -l 

Ini menampilkan tabel partisi saat ini di setiap drive. Identifikasi partisi swap saat ini dengan nomor.

Mulai fdisk dalam mode interaktif dengan perintah:

$ fdisk /dev/<device name> 

Misalnya:

$ fdisk /dev/sda 

Pada titik ini, fdisk bersifat interaktif dan hanya beroperasi pada drive disk yang ditentukan.

Gunakan fdisk p sub-perintah untuk memverifikasi bahwa ada cukup ruang kosong pada disk untuk membuat partisi swap baru. Ruang pada hard drive ditampilkan dalam bentuk blok 512-byte dan nomor silinder awal dan akhir, jadi Anda mungkin harus melakukan beberapa perhitungan untuk menentukan ruang yang tersedia antara dan di akhir partisi yang dialokasikan.

Gunakan n sub-perintah untuk membuat partisi swap baru. fdisk akan menanyakan silinder awal. Secara default, ia memilih silinder bernomor terendah yang tersedia. Jika Anda ingin mengubahnya, ketikkan nomor silinder awal.

fdisk perintah sekarang memungkinkan Anda untuk memasukkan ukuran partisi dalam beberapa format, termasuk nomor silinder terakhir atau ukuran dalam byte, KB atau MB. Ketik 4000M, yang akan memberikan sekitar 4GB ruang pada partisi baru (misalnya), dan tekan Enter.

Gunakan p sub-perintah untuk memverifikasi bahwa partisi telah dibuat seperti yang Anda tentukan. Perhatikan bahwa partisi mungkin tidak persis seperti yang Anda tentukan kecuali Anda menggunakan nomor silinder akhir. fdisk perintah hanya dapat mengalokasikan ruang disk secara bertahap di seluruh silinder, jadi partisi Anda mungkin sedikit lebih kecil atau lebih besar dari yang Anda tentukan. Jika partisi tersebut tidak sesuai dengan keinginan Anda, Anda dapat menghapusnya dan membuatnya kembali.

Sekarang perlu untuk menentukan bahwa partisi baru akan menjadi partisi swap. Sub-perintah t memungkinkan Anda untuk menentukan jenis partisi. Jadi masukkan t , tentukan nomor partisi, dan ketika meminta jenis partisi kode hex, ketik 82, yang merupakan jenis partisi swap Linux, dan tekan Enter.

Ketika Anda puas dengan partisi yang telah Anda buat, gunakan w sub-perintah untuk menulis tabel partisi baru ke disk. fdisk program akan keluar dan mengembalikan Anda ke prompt perintah setelah selesai menulis tabel partisi yang direvisi. Anda mungkin akan menerima pesan berikut sebagai fdisk selesai menulis tabel partisi baru:

Tabel partisi telah diubah!
Memanggil ioctl() untuk membaca ulang tabel partisi.
PERINGATAN:Gagal membaca ulang tabel partisi dengan kesalahan 16:Perangkat atau sumber daya sibuk.
Kernel masih menggunakan tabel lama.
Tabel baru akan digunakan pada reboot berikutnya.
Menyinkronkan disk.

Pada titik ini, Anda menggunakan partprobe perintah untuk memaksa kernel membaca ulang tabel partisi sehingga tidak perlu melakukan reboot.

$ partprobe 

Sekarang gunakan perintah fdisk -l untuk membuat daftar partisi dan partisi swap baru harus ada di antara yang terdaftar. Pastikan tipe partisi baru adalah “Linux swap”.

Anda perlu memodifikasi file /etc/fstab untuk menunjuk ke partisi swap yang baru. Baris yang ada mungkin terlihat seperti ini:

LABEL=SWAP-sdaX   swap        swap    defaults        0 0 

dimana X adalah nomor partisi. Tambahkan baris baru yang terlihat seperti ini, tergantung pada lokasi partisi swap baru Anda:

/dev/sdaY         swap        swap    defaults        0 0 

Pastikan untuk menggunakan nomor partisi yang benar. Sekarang Anda dapat melakukan langkah terakhir dalam membuat partisi swap. Gunakan mkswap perintah untuk mendefinisikan partisi sebagai partisi swap.

$ mkswap /dev/sdaY 

Langkah terakhir adalah mengaktifkan swap menggunakan perintah:

$ swapon -a 

Partisi swap baru Anda sekarang online bersama dengan partisi swap yang sudah ada sebelumnya. Anda dapat menggunakan kode free atau top perintah untuk memverifikasi ini.

Menambahkan swap ke lingkungan disk LVM

Jika pengaturan disk Anda menggunakan LVM, mengubah ruang swap akan cukup mudah. Sekali lagi, ini mengasumsikan bahwa ruang tersedia di grup volume di mana volume swap saat ini berada. Secara default, prosedur instalasi untuk Fedora Linux di lingkungan LVM membuat partisi swap sebagai volume logis. Ini membuatnya mudah karena Anda cukup menambah ukuran volume swap.

Berikut adalah langkah-langkah yang diperlukan untuk meningkatkan jumlah ruang swap di lingkungan LVM:

  1. Matikan semua pertukaran.

  2. Tingkatkan ukuran volume logis yang ditunjuk untuk swap.

  3. Konfigurasikan volume yang diubah ukurannya sebagai ruang swap.

  4. Aktifkan pertukaran.

Pertama, verifikasi bahwa swap ada dan merupakan volume logis menggunakan lvs perintah (daftar volume logis).

 # lvs 
lv vg attr lsize pool origin data% meta% move log cpy% sync convert
home fedora_studentvm1 -wi-ao ---- 2.00g
pool00 fedora_studentvm1 twi-aotz - 2.00g 8.17 2.93
root fedora_studentvm1 vwi-aotz-- 2.00g pool00 8.17
Swap fedora_studentvm1 -wi-ao ---- 8.00G
tmp fedora_studentvm1 -wi-ao --- - 5.00G
usr fedora_studentvm1 -wi-ao ---- 15.00g
var fedora_studentvm1 -wi-ao ---- 10.00g

Anda dapat melihat bahwa ukuran swap saat ini adalah 8GB. Dalam hal ini, kami ingin menambahkan 2GB ke volume swap ini. Pertama, hentikan swap yang ada. Anda mungkin harus menghentikan program yang sedang berjalan jika ruang swap sedang digunakan.

$ swapoff -a 

Sekarang tingkatkan ukuran volume logis.

# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
  Ukuran volume logis fedora_studentvm1/swap diubah dari 8,00 GiB (2048 ekstensi) menjadi 10,00 GiB (2560 ekstensi).
  Volume logis fedora_studentvm1/swap berhasil diubah ukurannya.

Jalankan mkswap perintah untuk membuat seluruh partisi 10GB ini menjadi ruang swap.

# mkswap /dev/mapper/fedora_studentvm1-swap
mkswap:/dev/mapper/fedora_studentvm1-swap:peringatan:menghapus tanda tangan swap lama.
Mengatur swapspace versi 1, ukuran =10 GiB ( 10737414144 byte)
tanpa label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a

Aktifkan kembali swap.

# swapon -a 

Sekarang verifikasi ruang swap baru hadir dengan perintah daftar blok perangkat. Sekali lagi, reboot tidak diperlukan.

 # LSBLK 
Nama MAJ:MIN RM Ukuran RO Type Mountpoint
SDA 8:0 0 60g 0 Disk
| -sda1 8:1 0 1g 0 Bagian / Boot
`-sda2                                 8:2    0   59G  0 bagian
  |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-swap         253:4    0   10G  0 lvm  >   
| -fedora_studentvm1-home 253:7 0 2g 0 lvm / home
| -fedora_studentvm1-var 253:8 0 10g 0 lvm / var
`-fedora_studentvm1-tmp 253:9 0 5G 0 lvm  /tmp
sr0

Anda juga dapat menggunakan swapon -s perintah, atau top , free , atau salah satu dari beberapa perintah lain untuk memverifikasi ini.

 # gratis 
Total buff / cache bersama gratis yang tersedia
MEM:4038808 382404 2754072 4152 902332 3404184
Swap:10485756 0 10485756
Perhatikan bahwa perintah yang berbeda ditampilkan atau diperlukan sebagai input file khusus perangkat dalam bentuk yang berbeda. Ada beberapa cara di mana perangkat tertentu diakses di direktori /dev. Artikel saya, Mengelola Perangkat di Linux, mencakup informasi lebih lanjut tentang direktori /dev dan isinya.

Artikel ini awalnya diterbitkan pada September 2018 dan telah diperbarui dengan informasi tambahan oleh editor.


Linux
  1. Linux – Bagaimana Cara Menggunakan Ruang Swap Untuk Keadaan Darurat Saja?

  2. Buat file swap Linux

  3. Panduan Pemula untuk Swap Space Management di Linux

  1. Berapa jumlah ruang swap yang tepat untuk sistem Linux modern?

  2. Bagaimana cara menambahkan ruang swap di linux

  3. Cara menambah ruang swap di Linux

  1. Cara Membuat Atau Menambah Ruang Swap Di Linux

  2. 13 tutorial keamanan Linux

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