mengontrol penggunaan memori tmpfs


5

Adakah cara untuk membatasi jumlah RAM yang digunakan oleh tmpfs tanpa membatasi jumlah swap?

Sebagian besar dokumentasi mengatakan bahwa sizeopsi tmpfs akan membatasi ukuran total partisi tmpfs dan nantinya akan mengatakan bahwa ruang ini digunakan baik oleh RAM maupun SWAP. Dan kemudian mengatakan bahwa default adalah setengah ram Anda karena jika menggunakan semua RAM Anda mendapatkan kesalahan fatal OOM. Ini membingungkan.

Saya ingin memilikinya menggunakan 1/4 ram saya tetapi hingga 3/4 swap, misalnya.

Jawaban:


7

Sejauh yang saya tahu Anda tidak dapat mengontrol bagian mana dari sistem memori virtual (yaitu RAM atau swap) yang digunakan untuk tmpfs.

Namun, tidak benar bahwa membuat tmpf besar akan menyebabkan kesalahan fatal OOM. Anda dapat membuat tmpfs lebih besar dari total RAM + SWAP Anda karena tidak ada yang benar-benar digunakan hingga Anda memasukkan file ke tmpfs.

Ketika Anda melakukan menempatkan file dalam tmpfs, yang akan menggunakan memori, tetapi hanya sebanyak file yang dimasukkan ke dalam tmpfs. Jika Anda kemudian tidak menyentuh file-file itu untuk waktu yang lama dan sistem perlu menggunakan RAM lebih dari yang dibutuhkan untuk menyimpannya dalam buffer cache, file-file itu akan benar-benar didukung dari swap bukan RAM.

Ketika tuntutan Anda pada tmpfs menjadi sebagian besar RAM, itu akan memengaruhi cache buffer Anda (hal-hal akan berhenti di-cache dalam RAM karena itu diperlukan untuk file tmpfs). Seiring meningkatnya permintaan, maka itu akan mulai beralih ke swap. Akhirnya ketika Anda tidak memiliki cache buffer, semua swap Anda digunakan dan masih banyak permintaan untuk memori dibuat, maka dan hanya dengan begitu Anda akan mulai mendapatkan kesalahan OOM.

Jadi sebenarnya aman untuk menentukan tmpfs besar /tmpselama Anda memiliki jumlah swap yang layak juga. Anda mengatakan bahwa Anda akan baik-baik saja dengan menggunakan 25% RAM Anda dan 75% dari swap Anda. Dalam hal ini, katakanlah Anda biasanya memiliki 1G RAM dan 2G swap. Saya akan mengatur tmpfs menjadi 1G dan meningkatkan swap sedikit, katakanlah ke 3G.

Jika sistem Anda berada di bawah tekanan memori, hal pertama yang akan terjadi adalah bahwa file yang jarang digunakan pada /tmpakhirnya akan didukung oleh swap bukan RAM. Anda tidak kehilangan semua RAM dengan membuat tmpf dengan ukuran yang sama dengan RAM.


ia mengatakan "default 1/2 memori Anda" dan di sini itu berarti memori yang berarti RAM fisik. tetapi juga dapat diperluas untuk menggunakan SWAP. Saya ingin memiliki tidak lebih dari 400MB /tmp, tetapi beberapa aplikasi aneh, seperti UNetBootin bersikeras untuk mengunduh gambar ISO ke / tmp ... Saya tidak keberatan mengunduh file-file itu untuk bertukar pada kesempatan langka yang saya gunakan .. tapi saya akan keberatan meninggalkan tmpfs saya bisa makan semua domba jantan saya sepanjang waktu. dan itulah yang size=4gakan dilakukan
gcb

Maaf, saya salah membaca pertanyaan Anda. Saya akan sangat mengedit jawaban saya karena saat ini sebagian besar lebih buruk daripada tidak berguna. Sayangnya, saat ini saya tidak tahu bagaimana membuatnya berguna.
grifferz

Terima kasih. Saya sedang melakukan eksperimen sekarang (kebanyakan menguji asumsi yang Anda uraikan), akan tertaut ke utas forum debian ketika saya memiliki sesuatu yang konklusif.
gcb

jadi bagaimana hasil tes (gcb?)
ck_

@ck_ Saya membuatnya bekerja sesuai yang saya inginkan (saya bisa mengunduh ISO menggunakan liveUSB dan kemudian memperluas iso pada perangkat blok lain tanpa kehilangan semua ram saya dalam proses) Memori saya tidak berfungsi dengan baik, tapi saya ingat saya menemukan bendera lain selain sizedi kernel yang lebih baru. Juga saya tidak dapat menemukan utas di forum debian ... mungkin itu telah dihapus (dimulai dengan beberapa pria gila mengeluh saya 'lintas posting' dengan memposting pertanyaan yang sama di sini juga. Mungkin beberapa admin tidak memperhatikan ada diskusi yang bermanfaat setelah argumen idiot). akan membawa sistem yang saya gunakan waktu itu kembali minggu depan :)
gcb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.