Kernel Linux

Ruang Pertukaran Manajemen Memori Kernel Linux

Ruang Pertukaran Manajemen Memori Kernel Linux

Bagian satu. Ruang Pertukaran

Agar dapat bekerja dengan baik, komputer bergantung pada jumlah memori yang memadai. Cukup dengan mengatakan bahwa tidak akan pernah cukup. Semakin banyak memori fisik yang dipasang, semakin mahal biayanya. Sebagian besar, hasilnya adalah kompromi cerdas antara biaya dan kecepatan untuk mengakses sel memori.

Untuk mencapai kompromi ini, sistem UNIX/Linux menggabungkan dua jenis memori - memori fisik (RAM), dan ruang swap. Secara keseluruhan ini disebut memori virtual dari sistem komputasi. Memori fisik agak mahal tetapi cepat dan dapat diakses dalam nanodetik. Sebaliknya, memori swap agak murah, tetapi lambat, dan dapat diakses dalam milidetik.

Ada beberapa alasan mengapa memori swap berguna. Pertama, terkadang proses tunggal membutuhkan lebih banyak memori daripada yang dimiliki sistem secara fisik dan dapat menyediakan lebih banyak untuk proses yang membutuhkannya. Akibatnya, semua data yang disimpan dalam memori fisik tidak dapat disimpan di sana lagi. Sekarang, ruang swap ikut bermain, dan pilihan halaman memori ditransfer ke ruang swap untuk membebaskan memori fisik.

Kedua, tidak semua data dibutuhkan dalam memori secara bersamaan. Itu sebabnya halaman memori yang lebih jarang digunakan diparkir di ruang swap untuk memiliki sebanyak mungkin memori fisik gratis yang tersedia. Metode ini diberi nama Least Recent Used Page Replacement Algorithm (LRU) [1].

Jenis pertukaran

Ruang swap ada dalam dua varian. Versi 1 adalah partisi disk terpisah yang disebut partisi swap. Tidak ada file yang disimpan ke partisi itu kecuali informasi memori (dumps). Sederhananya, versi 2 adalah file pada disk yang berada di sistem file pada harddisk Anda. Versi 1 sangat umum pada sistem UNIX/Linux, BSD dan OS X, sedangkan versi 2 ada pada sistem yang menjalankan Microsoft Windows. Versi 2 juga dapat diaktifkan pada sistem UNIX/Linux (lihat di bawah).

Untuk melihat ruang swap mana yang aktif pada sistem UNIX/Linux Anda, jalankan perintah berikut di terminal:

$ /sbin/swapon -s
Nama file      Jenis       Ukuran        Digunakan      Prioritas
/dev/dm-3   partisi  16150524   316484  -1
$

Sebagai alternatif, Anda dapat mengirim permintaan ke sistem file proc, dan menjalankan perintah cat /proc/swaps

Sistem Linux ini memiliki partisi swap dengan ukuran sekitar 15 GB di mana lebih dari 300 juta sedang digunakan, saat ini. Kolom Prioritas menunjukkan ruang swap mana yang digunakan terlebih dahulu. Nilai defaultnya adalah -1. Semakin tinggi nilai prioritas, semakin awal ruang swap ini diperhitungkan. Opsi -s adalah versi singkat dari -ringkasan. Opsi ini tidak digunakan lagi, dan disarankan untuk menggunakan opsi -show sebagai berikut:

$ /sbin/swapon --show=NAME,TYPE,SIZE,USED,PRIO
NAMA       JENIS       UKURAN   DIGUNAKAN PRIO
/dev/dm-3 partisi 15,4G 307.1M   -1
$

Opsi -show menerima daftar nilai yang mewakili header kolom. Untuk mencapai urutan keluaran tertentu, pilih tajuk kolom yang diinginkan dan urutannya.

Tukar ukuran

Sebagai aturan umum, ukuran ruang swap direkomendasikan dua kali lebih besar dari memori fisik sistem. Ingatlah hal ini untuk pengaturan tujuan umum dan mesin desktop. Untuk server UNIX/Linux dengan lebih banyak memori fisik, Anda dapat menurunkan ukuran ruang swap hingga 50% dari RAM. Laptop yang dapat hibernasi harus sedikit lebih besar dari memori fisik.

Instalasi

Untuk partisi swap, disarankan untuk memikirkan ruang swap sejak awal membagi disk menjadi partisi tunggal, atau meninggalkan cukup ruang disk yang tidak terpakai untuk digunakan nanti, pada akhirnya. Biasanya, selama konfigurasi disk yang akan digunakan, rutinitas pengaturan menanyakan kepada Anda tentang ukuran ruang swap. Sebagai contoh, pada Debian GNU/Linux ini terlihat sebagai berikut:

Seperti disebutkan di atas, selama Anda memiliki ruang untuk partisi baru di harddisk Anda, Anda dapat membuat dan memasukkan partisi swap dengan menggunakan perintah seperti fdisk, dan swapon.

Atau, ruang swap juga dapat diaktifkan nanti sebagai file swap. Linux mendukung cara ini sehingga Anda dapat membuat, menyiapkan, dan memasangnya dengan cara yang mirip dengan partisi swap. Keuntungan dari cara ini adalah Anda tidak perlu mempartisi ulang disk untuk menambahkan ruang swap tambahan.

Sebagai contoh, kami membuat file bernama /swapfile dengan ukuran 512M, dan mengaktifkan ini sebagai ruang swap tambahan. Pertama, dengan bantuan perintah dd kita membuat file kosong. Kedua, mkswap menggunakan file ini untuk mengubahnya menjadi gaya swap. Anda mungkin memperhatikan bahwa konten file diperlakukan seperti partisi, dan UUID yang sesuai ditetapkan. Ketiga, kami mengaktifkan ini menggunakan swapon. Akhirnya, perintah swapon -show menampilkan dua entri swap - sebuah partisi, dan file yang baru dibuat.

# dd if=/dev/zero of=/swapfile bs=1024 count=524288
524288+0 kumpulan data di
524288+0 kumpulan data keluar
536870912 byte (537 MB) disalin, 0,887744 dtk, 605 MB/dtk
#mkswap /swapfile
Menyiapkan swapspace versi 1, ukuran = 524284 KiB
tanpa label, UUID=e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show=NAME,TYPE,SIZE,USED,PRIO
NAMA      JENIS       UKURAN   DIGUNAKAN PRIO
/dev/dm-3 partisi 15.4G 288,9M   -1
/swapfile file       512M      0B   -2
#

Untuk menggunakan file swap ini saat boot, tambahkan, sebagai administrator, baris berikut ke file: /etc/fstab:

/swapfile  none   swap  sw   0   0

Menonaktifkan ruang swap

Setidaknya tetapi tidak terakhir ada satu perintah untuk menonaktifkan file swap, lagi. Perintah tersebut disebut pertukaran. Ini membutuhkan satu parameter yang menunjukkan perangkat swap dinonaktifkan. Perintah ini menonaktifkan file swap yang sebelumnya diaktifkan:

#swapoff /swapfile

Juga, pertukaran dapat bekerja dengan UUID sistem file. Untuk membuat pertukaran bertindak seperti ini menggunakan opsi -kamu diikuti oleh UUID dari sistem file yang sesuai. Jika diperlukan untuk menonaktifkan semua ruang swap sekaligus opsi -Sebuah (opsi panjang -semua) cukup berguna. Perintah lengkapnya adalah swapoff -a.

Menyetel ekosistem swap swap

Dimulai dengan rilis kernel Linux 2.6 nilai baru diperkenalkan. Ini disimpan dalam variabel /proc/sys/vm/swappinessdan mengontrol bobot relatif yang diberikan untuk menukar memori runtime, sebagai lawan untuk menjatuhkan halaman memori dari cache halaman sistem [2]. Nilai default adalah 60 (persen dari memori bebas sebelum mengaktifkan swap). Semakin rendah nilainya, semakin sedikit swapping yang digunakan, dan semakin banyak halaman memori yang disimpan di memori fisik.

Untuk menetapkan nilai sementara, atur nilai dalam sistem file /proc sebagai berikut:

# echo 10 > /proc/sys/vm/swappiness

Sebagai alternatif, Anda dapat menggunakan sysctl perintah sebagai berikut:

# sysctl -w vm.pertukaran = 10

Untuk mengatur nilai secara permanen tambahkan baris berikut ke file /etc/sysctl.konf:

vm.pertukaran = 10

Apakah swap masih up to date?

Anda mungkin bertanya mengapa kami membahas topik itu. Komputer modern memiliki memori fisik yang cukup - jadi mengapa kita harus peduli tentang itu?? Ada beberapa alasan mengapa teknologi ini bernilai lebih dari sekadar pemikiran.

Ingatlah bahwa Anda tetap menggunakan mesin Anda untuk sementara waktu, tetapi dapat memperbarui perangkat lunak yang Anda gunakan dari waktu ke waktu. Saat ini, perangkat keras dan perangkat lunaknya cocok satu sama lain. Di masa depan itu mungkin berubah, dan Anda membutuhkan lebih banyak memori daripada yang Anda miliki sekarang. Kecuali memutakhirkan atau membeli perangkat keras baru, partisi Swap dapat menghemat sedikit uang Anda.

Anda mungkin pernah mendengar tentang fitur yang disebut suspend to disk, atau mode hibernasi [3]. Mesin Anda akan tidur. Sebelum melakukan itu, ia harus menyimpan kondisinya saat ini di suatu tempat. Sekarang ruang swap ikut bermain, dan bertindak sebagai wadah untuk menyimpan data ini. Segera setelah mesin bangun saat berikutnya seluruh data dibaca dari ruang Swap, dimuat ke dalam memori, dan Anda dapat terus bekerja di tempat Anda telah berhenti sebelumnya.

Sistem, jika hanya memiliki satu perangkat penyimpanan permanen, harus membaca dan menulis file Anda saat bertukar di perangkat yang sama. Anda akan melihat peningkatan besar jika Anda memiliki perangkat kedua dan dapat memisahkan perangkat swap dari akses file yang bertentangan.

File swap harus melewati data melalui sistem file. Ini menambahkan lapisan tipuan, untuk membuatnya tampak bahwa ada ruang alamat logis yang berdekatan untuk kernel untuk bekerja. Ini menambahkan overhead memori tambahan dan siklus cpu. Anda akan mendapatkan hasil terbaik menggunakan partisi swap mentah.

Kesimpulan

Bahkan saat ini pengetahuan tentang Swap sangat penting. Topik ini adalah bagian dari pengetahuan yang diperlukan untuk lulus Linux Professional Institute Certificate Level 1 (LPIC 1). Sebagian besar ujian berisi satu atau dua pertanyaan tentang topik ini.

Ruang swap membantu sistem Linux Anda (kernel) untuk mengatur memori dengan cepat jika diperlukan. Agar terbuka dengan Anda, ruang Swap tidak mutlak diperlukan jika sistem Anda memiliki banyak RAM. Dalam keadaan darurat, ini membantu sistem Anda untuk bertahan hidup. Itu sebabnya saya tidak akan pernah meninggalkan jalur pengaturan tradisional tanpa ruang Swap.

Kombinasi Swap dan SSD dibahas dengan cara yang kontroversial karena jumlah penulisan disk pada SSD cukup terbatas. File Swap dan sementara dibuat untuk menulis banyak data. Di sisi lain, SSD modern memiliki lebih dari cukup ruang tambahan (7%) untuk mengatasi kegagalan sektor. Untuk amannya: jika memungkinkan, miliki Swap terpisah pada hard drive konvensional - jangan gunakan ramdisk, atau SSD, setidaknya untuk swap [4]. Sistem Linux Anda akan berterima kasih atas keputusan ini.

Untuk menghindari menempatkan ruang swap pada SSD Anda, Anda dapat menggunakan ZRAM, sebagai gantinya [5,6]. Ini adalah Virtual Swap Terkompresi dalam RAM, juga bernama zSwap. Teknologi ini memungkinkan perangkat blok terkompresi dalam memori. Segera setelah tidak ada lagi memori, halaman memori yang tersisa dipindahkan ke perangkat blok ini. Ini menghasilkan lebih sedikit penggunaan swap, dan membantu memperpanjang umur harddisk Anda juga.

Tautan dan Referensi

Seri Manajemen Memori Linux

Ucapan Terima Kasih

Penulis ingin mengucapkan terima kasih kepada Mandy Neumeyer dan Gerold Rupprecht atas dukungannya selama mempersiapkan artikel ini.

Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...
10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...