GNU/Linux >> Belajar Linux >  >> Linux

Apa yang secara khusus dapat ditukar dengan RAM yang tidak bisa?

Hibernasi (atau menangguhkan ke disk). Hibernasi nyata mematikan sistem sepenuhnya, sehingga konten RAM hilang, dan Anda harus menyimpan status ke penyimpanan persisten. AKA Tukar. Tidak seperti Windows dengan hiberfil.sys dan pagefile.sys , Linux menggunakan ruang swap untuk memori dengan komitmen berlebih dan hibernasi.

Di sisi lain, hibernasi tampaknya agak rewel untuk bekerja dengan baik di Linux. Apakah Anda "bisa" benar-benar hibernasi adalah hal yang berbeda. ¯\_(ツ)_/¯


Apa yang dapat dilakukan dengan swap yang juga tidak dapat dilakukan dengan menambahkan RAM?

Pertanyaan ini sebenarnya dapat diubah menjadi Apa yang dapat dilakukan dengan RAM non-volatile yang juga tidak dapat dilakukan dengan menambahkan lebih banyak RAM yang tidak stabil? . Hanya karena Anda mendedikasikan partisi untuk paging (cara khusus untuk berinteraksi dengan RAM yang mudah menguap), itu tidak mengubah fakta bahwa itu masih merupakan bagian dari media penyimpanan sekunder yang persisten. Partisi swap juga tidak wajib untuk menempatkan sistem ke dalam hibernasi, "file swap" yang dibuat pada partisi yang sudah ada sebelumnya dapat digunakan juga.

Pada akhirnya, apakah Anda menggunakan partisi swap atau file swap, yang akan Anda simpan adalah hal-hal yang akan ditulis ke atau dari RAM. Jika Anda menarik kabel daya dari sistem dengan partisi swap yang diaktifkan, partisi swap tersebut tidak akan terhapus secara ajaib.

Sementara data swap ini tidak akan dibaca pada boot Anda berikutnya (karena file halaman akan memiliki entri yang sesuai dengan proses yang tidak lagi berjalan), dan beberapa distro mungkin mengambil langkah yang disengaja untuk menghancurkannya baik selama shutdown yang tepat atau reboot yang tepat , jika seseorang mencabut kabel dari sistem, mereka akan dapat memeriksa partisi swap tersebut secara forensik.

Sejauh kasus perangkat tersemat yang Anda sebutkan, Flash, sebagai jenis penyimpanan RAM (NVRAM atau EEPROM) non-volatile, aus karena kemampuannya untuk mengambil hit I/O (Flash Cell Endurance diwakili dalam hal jumlah program / hapus siklus) artinya jika dibandingkan dengan RAM yang mudah menguap. Anda benar-benar memangkas lapisan oksida setiap kali Anda melakukan penulisan ke lokasi itu, dan pada akhirnya tidak ada oksida yang tersisa untuk memungkinkan penyimpanan muatan secara terus-menerus dan itu benar-benar bocor sebelum pembacaan selanjutnya.

Di sisi lain, daya tahan RAM volatile hampir tidak ada (berdasarkan urutan menit dalam kondisi percobaan yang ideal) dibandingkan dengan flash, jika atau ketika Anda memutus sumber dayanya. Dalam kasus RAM yang mudah menguap, tidak ada yang menghentikan kebocoran muatan dan status flip-flop yang sesuai (input, menentukan output, yang kemudian menentukan kembali input), alias kait yang dikontrol umpan balik.


RAM 32GB dan tanpa swapvs. Ram 16GB dengan swap 16GB.

Ditanya seperti itu, swap kebanyakan memang menghemat uang, meningkatkan rasio kinerja per dolar, mungkin juga per watt.

Tapi swap masih lebih dari "memori selambat disk". Ini adalah penyimpanan sementara untuk halaman memori, yang dapat langsung (kotor seperti apa adanya, tidak ada overhead sistem file) dimuat ke dalam RAM bila diperlukan.

Tentu saja banyak tergantung pada muatannya (jenis dari beban), dan gagasan bertukar bahkan bisa menjadi bumerang. Itu sebabnya ada parameter "swappiness", selain swapon / swapoff itu sendiri, dan diskusi tentang ukuran yang tepat.

Dari wikipedia saya mendapat pernyataan tentang "swap" di linux (dalam artikel "paging")

Kernel Linux mendukung jumlah backend swap yang hampir tidak terbatas (perangkat atau file...

Jika beberapa backend swap diberi prioritas yang sama, mereka digunakan dalam mode round-robin (yang agak mirip dengan tata letak penyimpanan RAID 0),...

Ini menunjukkan bahwa Anda dapat mengubah pertukaran menjadi sesuatu yang lebih masuk akal pada tingkat perangkat keras:"drive awal" khusus akan memberikan halaman yang ditukar ini rumah yang lebih baik. Idealnya, drive awal harus (sangat) kecil tetapi cepat dan kuat.

Menurut aturan ukuran "baru" (kuadrat root dari Giga), contoh Anda harus membandingkan:

16 GB RAM + 0 GB Swap+1000 GB Disk

16 GB RAM + 4 GB Swap+ 996 GB Disk

Karena yang benar-benar tidak masuk akal adalah:

16 GB RAM+0 GB Swap + 1000 GB Disk

12 GB RAM+4 GB Swap + 1000 GB Disk

Itu akan menjadi partisi swap pada tmpfs ("ramdisk") - bahkan mungkin tidak terlalu berbahaya, tapi saya tidak melihat manfaat sama sekali di sini. Anda bahkan tidak bisa hibernasi.

(lihat di bawah untuk zram, dan zswap, saat Anda menambahkan kompresi untuk itu)

Untuk memahami swap Anda harus mempertimbangkan keseluruhan sistem dan beban rata-rata. Dan karena vm/mm (manajemen memori virtual) adalah sistem yang kompleks, sangat sulit untuk menyebutkan keuntungan yang jelas. Saya menyukai ide transisi yang "halus" ke dalam sistem yang kelebihan beban.

Saya memiliki 8 GB RAM dan tidak ada swap. Tapi tetap saya pertahankan konsepnya, AFA saya bisa mengerti :-)

Saya menemukan kutipan redhat ini di salah satu tautan OP. Skenarionya adalah permintaan memori yang terus meningkat, pada 2 GB RAM + 2 GB Swap, jika saya ingat:

... Dalam kasus kami [hanya diilustrasikan], cukup banyak swap yang tersedia, sehingga waktu kinerja yang buruk menjadi lama.

Namun alternatifnya adalah OOM bahkan lebih awal!

"Waktu kinerja yang buruk" itu lama, ya, tetapi kinerja hanya menurun secara proporsional terhadap beban. Saya tidak tahu konteksnya, mungkin mereka hanya ingin memperingatkan terhadap terlalu besar tukar partisi. Ini terdengar anti-swap, tetapi pada tampilan kedua tidak.

Kemudian lagi, untuk alasan yang sama, saya tidak memiliki swap. Saya ingin tahu kapan saya dan aplikasi saya mencapai langit-langit, dan kemudian saya akan memutuskan apakah saya harus mengurangi beban, membeli lebih banyak RAM atau mengaktifkan partisi untuk swap (saya memiliki satu atau dua partisi kecil yang siap untuk itu).

Saya mencari zram ini , lalu zswap hal:sangat menarik...:

Sebagai perbandingan, zswap bertindak sebagai cache berbasis RAM untuk perangkat swap. Ini menyediakan zswap dengan mekanisme pengusiran untuk halaman yang ditukar yang jarang digunakan, yang tidak dimiliki zram.

Di sisi lain, zram berfungsi tanpa perangkat swap apa pun. Mungkin apa yang saya katakan tidak masuk akal, tetapi saya tidak memperhitungkan kompresi.

Maksud saya adalah penggusuran ini mekanisme yang melekat pada "swap". Ini bisa sangat berguna di bawah beban tinggi, apakah Anda menukar dengan menukar atau dengan mengompresi.


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

  2. Apa yang dapat dilakukan shell dotfile untuk Anda

  3. Apa yang dapat menyebabkan SIGHUP dihasilkan?

  1. Bagaimana saya bisa tahu proses mana yang menggunakan swap?

  2. Tukar ukuran partisi untuk RAM 4GB

  3. Bisakah saya menguji jaringan saya sendiri?

  1. Bagaimana saya tahu apa yang memutar drive saya?

  2. Bisakah saya menjalankan server Oracle tanpa swap?

  3. Perintah apa yang dapat digunakan untuk memaksa melepaskan semua yang ada di partisi swap kembali ke memori?