Kernel Linux

Ruang Pertukaran Pengurusan Memori Kernel Linux

Ruang Pertukaran Pengurusan Memori Kernel Linux

Bahagian Pertama. Ruang Pertukaran

Untuk berfungsi dengan baik komputer bergantung pada jumlah memori yang mencukupi. Cukup dengan mengatakan bahawa tidak akan pernah ada cukup. Semakin banyak memori fizikal dipasang semakin mahal. Kebanyakannya, hasilnya adalah kompromi pintar antara kos dan kelajuan untuk mengakses sel memori.

Untuk mencapai kompromi ini sistem UNIX / Linux menggabungkan dua jenis memori - memori fizikal (RAM), dan ruang pertukaran. Secara keseluruhannya ini disebut memori maya dari sistem pengkomputeran. Memori fizikal agak mahal tetapi cepat dan boleh diakses dalam nanodetik. Sebaliknya, memori pertukaran agak murah, tetapi perlahan, dan dapat diakses dalam milisaat.

Terdapat beberapa sebab mengapa memori pertukaran berguna. Pertama, kadang-kadang proses tunggal memerlukan lebih banyak memori daripada sistem yang dimiliki secara fizikal dan dapat memberikan lebih banyak proses yang memerlukannya. Akibatnya, semua data yang disimpan dalam memori fizikal tidak dapat disimpan di sana lagi. Sekarang, ruang pertukaran dimainkan, dan pilihan halaman memori dipindahkan ke ruang pertukaran untuk membebaskan memori fizikal.

Kedua, tidak semua data diperlukan dalam memori pada masa yang sama. Itulah sebabnya halaman memori yang kurang digunakan diparkir di tempat pertukaran untuk mempunyai memori fizikal percuma sebanyak mungkin. Kaedah ini dinamakan Algoritma Penggantian Halaman Paling Lambat Digunakan (LRU) [1].

Jenis pertukaran

Ruang pertukaran wujud dalam dua varian. Versi 1 adalah partition disk yang berasingan yang disebut partisi swap. Tidak ada fail yang disimpan ke partisi itu tetapi maklumat memori (lambakan). Cukup, versi 2 adalah fail pada cakera yang berada dalam sistem fail pada cakera keras 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 pertukaran mana yang aktif pada sistem UNIX / Linux anda jalankan arahan berikut di terminal:

$ / sbin / swapon -s
Jenis Fail Jenis Saiz Keutamaan Digunakan
/ dev / dm-3 partition 16150524 316484 -1
$

Sebagai alternatif, anda boleh mengirim permintaan ke sistem file proc, dan jalankan perintah cat / proc / swaps

Sistem Linux ini mempunyai partisi swap dengan ukuran sekitar 15 GB di mana lebih dari 300M sedang digunakan, pada masa ini. Lajur Keutamaan menunjukkan ruang pertukaran mana yang harus digunakan terlebih dahulu. Nilai lalai adalah -1. Semakin tinggi nilai keutamaan, lebih awal ruang pertukaran ini diambil kira. Pilihan -s adalah versi ringkas -summary. Opsi ini tidak digunakan lagi, dan disarankan untuk menggunakan pilihan -tunjukkan seperti berikut, sebagai gantinya:

$ / sbin / swapon --show = NAMA, JENIS, SAIZ, DIGUNAKAN, PRIO
SAIZ JENIS NAMA DIGUNAKAN PRIO
/ dev / dm-3 partition 15,4G 307,1M -1
$

Opsyen-menunjukkan menunjukkan senarai nilai yang mewakili tajuk lajur. Untuk mencapai pesanan output tertentu pilih tajuk lajur yang dikehendaki dan urutannya.

Saiz pertukaran

Sebagai peraturan umum, ukuran ruang pertukaran disarankan dua kali lebih banyak daripada sistem yang mempunyai memori fizikal. Ingatlah ini untuk persediaan dan mesin desktop untuk tujuan umum. Untuk pelayan UNIX / Linux dengan memori fizikal yang lebih banyak, anda boleh menurunkan saiz ruang pertukaran kepada 50% RAM. Komputer riba yang dapat hibernasi perlu sedikit lebih besar daripada memori fizikal.

Pemasangan

Untuk partisi swap, disarankan untuk memikirkan ruang pertukaran dari awal membelah cakera menjadi partisi tunggal, atau membiarkan ruang cakera yang tidak digunakan untuk menggunakannya kemudian, akhirnya. Biasanya, semasa konfigurasi disk yang akan digunakan, rutin persediaan menanyakan kepada anda mengenai ukuran ruang pertukaran. Sebagai contoh, pada Debian GNU / Linux ini kelihatan seperti berikut:

Seperti yang disebutkan di atas, selagi anda mempunyai ruang untuk partisi baru pada harddisk anda, anda boleh membuat dan memasukkan partisi swap dengan penggunaan perintah seperti fdisk, dan swapon.

Sebagai alternatif, ruang pertukaran juga boleh diaktifkan kemudian sebagai fail pertukaran. Linux menyokong cara ini supaya anda dapat membuat, menyiapkan, dan memasangnya dengan cara yang serupa dengan partisi swap. Kelebihan cara ini adalah bahawa anda tidak perlu menghidupkan semula cakera untuk menambah ruang pertukaran tambahan.

Sebagai contoh, kami membuat fail bernama / swapfile dengan ukuran 512M, dan mengaktifkannya sebagai ruang pertukaran tambahan. Pertama, dengan bantuan arahan dd kita membuat fail kosong. Kedua, mkswap menggunakan fail ini untuk mengubahnya menjadi gaya pertukaran. Anda mungkin melihat bahawa kandungan fail diperlakukan seperti partition, dan UUID yang sesuai diberikan. Ketiga, kami mengaktifkannya menggunakan swapon. Akhirnya, perintah swapon -show memaparkan dua entri pertukaran - partition, dan fail yang baru dibuat.

# dd if = / dev / zero of = / swapfile bs = 1024 count = 524288
524288 + 0 set data dalam
524288 + 0 set data keluar
536870912 bait (537 MB) disalin, 0,887744 s, 605 MB / s
# mkswap / pertukaran
Menyiapkan ruang pertukaran versi 1, ukuran = 524284 KiB
tiada label, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# pertukaran / swapfile
# swapon --show = NAMA, JENIS, UKURAN, DIGUNAKAN, PRIO
SAIZ JENIS NAMA DIGUNAKAN PRIO
/ dev / dm-3 partition 15,4G 288,9M -1
/ fail swapfile 512M 0B -2
#

Untuk menggunakan fail pertukaran ini semasa boot, tambahkan, sebagai pentadbir, baris berikut ke fail / etc / fstab:

/ swapfile tiada swap sw 0 0

Melumpuhkan ruang pertukaran

Paling tidak tetapi terakhir ada satu perintah untuk mematikan fail pertukaran, sekali lagi. Perintah dipanggil pertukaran. Ia memerlukan satu parameter yang menunjukkan bahawa peranti swap dinonaktifkan. Perintah ini melumpuhkan fail pertukaran yang diaktifkan sebelumnya:

# pertukaran / pertukaran

Juga, pertukaran boleh berfungsi dengan UUID sistem fail. Untuk membuat pertukaran bertindak dengan cara ini menggunakan pilihan -U diikuti oleh UUID sistem fail yang sesuai. Sekiranya diperlukan untuk mematikan semua ruang pertukaran sekaligus pilihan -a (pilihan panjang-semua) cukup berguna. Perintah penuh adalah pertukaran -a.

Menala ekosistem pertukaran

Bermula dengan pelepasan kernel Linux 2.6 nilai baru diperkenalkan. Ini disimpan dalam pemboleh ubah / proc / sys / vm / swappinessdan mengawal berat relatif yang diberikan untuk menukar memori runtime, berbanding dengan menjatuhkan halaman memori dari cache halaman sistem [2]. Nilai lalai adalah 60 (peratus memori bebas sebelum mengaktifkan pertukaran). Semakin rendah nilai, semakin sedikit pertukaran digunakan, dan semakin banyak halaman memori disimpan dalam memori fizikal.

Untuk menetapkan nilai untuk sementara menetapkan nilai dalam sistem file / proc seperti berikut:

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

Sebagai alternatif, anda boleh menggunakan sysctl arahan seperti berikut:

# sysctl -w vm.swappiness = 10

Untuk menetapkan nilai secara kekal tambahkan baris berikut ke fail / etc / sysctl.konfigurasi:

vm.swappiness = 10

Adakah pertukaran masih terkini?

Anda mungkin bertanya mengapa kita menangani topik itu. Komputer moden mempunyai memori fizikal yang mencukupi - jadi mengapa kita harus mengambil berat tentang perkara itu? Terdapat beberapa sebab mengapa teknologi ini bernilai lebih dari sekadar pemikiran.

Perlu diingat bahawa anda tetap menggunakan mesin anda untuk sementara waktu, tetapi mungkin mengemas kini perisian yang anda gunakan dari semasa ke semasa. Pada masa ini, kedua-dua perkakasan dan perisian saling sesuai. Di masa depan ia mungkin berubah, dan anda memerlukan lebih banyak memori daripada yang anda ada sekarang. Kecuali menaik taraf atau membeli perkakasan baru, partisi Swap dapat menjimatkan sedikit wang anda.

Anda mungkin pernah mendengar tentang ciri yang disebut suspend to disk, atau mode hibernate [3]. Mesin anda akan tidur. Sebelum melakukan itu, ia mesti menyimpan keadaannya sekarang di suatu tempat. Kini ruang pertukaran dimainkan, dan berfungsi sebagai wadah untuk menyimpan data ini. Sebaik sahaja mesin bangun pada waktu berikutnya seluruh data dibaca dari ruang Pertukaran, dimuat ke dalam memori, dan anda boleh terus bekerja di tempat yang anda hentikan sebelumnya.

Sistem, jika hanya mempunyai satu peranti storan tetap, harus membaca dan menulis fail anda semasa menukar pada peranti yang sama. Anda akan melihat peningkatan besar jika anda mempunyai peranti kedua dan dapat memisahkan peranti pertukaran daripada akses fail yang bertentangan.

Fail pertukaran mesti menyebarkan data melalui sistem fail. Ini menambahkan lapisan tidak langsung, untuk membuatnya kelihatan bahawa ada ruang alamat logik yang bersebelahan dengan kernel untuk digunakan. Ini menambahkan kitaran memori tambahan dan kitaran cpu. Anda akan mendapat hasil terbaik menggunakan partisi swap mentah.

Kesimpulannya

Sehingga hari ini pengetahuan mengenai Swap sangat penting. Topik ini adalah sebahagian daripada pengetahuan yang diperlukan untuk lulus Sijil Institut Profesional Linux Tahap 1 (LPIC 1). Sebilangan besar peperiksaan mengandungi satu atau dua soalan mengenai topik ini.

Tukar ruang membantu sistem Linux anda (kernel) untuk mengatur memori dengan cepat sekiranya memerlukannya. Untuk terbuka dengan anda, Swap space tidak semestinya diperlukan sekiranya sistem anda mempunyai banyak RAM. Sekiranya berlaku kecemasan, sistem anda dapat bertahan. Itulah sebabnya saya tidak akan pernah meninggalkan jalan persediaan tradisional tanpa menukar ruang.

Gabungan Swap dan SSD dibincangkan secara kontroversial kerana jumlah penulisan cakera pada SSD agak terhad. Kedua-dua Swap dan fail sementara dibina untuk menulis banyak data. Sebaliknya, SSD moden mempunyai lebih banyak ruang tambahan (7%) untuk mengatasi kegagalan sektor. Untuk berada di sisi yang selamat: jika boleh, lakukan pertukaran yang terpisah pada cakera keras konvensional - jangan gunakan ramdisk, atau SSD, sekurang-kurangnya untuk pertukaran [4]. Sistem Linux anda akan mengucapkan terima kasih atas keputusan ini.

Untuk mengelakkan meletakkan ruang pertukaran pada SSD anda, anda boleh menggunakan ZRAM, sebagai gantinya [5,6]. Ini adalah Virtual Swap Compressed dalam RAM, juga dinamakan zSwap. Teknologi ini membolehkan peranti blok termampat dalam memori. Sebaik sahaja tidak ada lagi memori, halaman memori yang tersisa dipindahkan ke peranti blok ini. Ini menghasilkan penggunaan swap yang lebih sedikit, dan membantu memperpanjang umur harddisk anda juga.

Pautan dan Rujukan

Siri Pengurusan Memori Linux

Ucapan terima kasih

Penulis ingin mengucapkan terima kasih kepada Mandy Neumeyer dan Gerold Rupprecht atas sokongan mereka semasa menyiapkan artikel ini.

Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...
Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...