Saya perlu mengatur sistem penyimpanan dalam memori untuk sekitar 10 GB data, yang terdiri dari banyak file tunggal 100 kb (gambar). Akan ada banyak membaca dan menulis cukup berkala (menambahkan file baru, menghapus beberapa yang lama).
Sekarang, saya tahu tmpfs berperilaku seperti sistem file biasa yang Anda dapat, misalnya, memeriksa ruang kosong / bekas dengan df , yang merupakan fitur bagus untuk dimiliki. Namun saya tertarik jika ramf akan menawarkan beberapa keunggulan berkaitan dengan kecepatan operasi IO. Saya tahu bahwa saya tidak dapat mengontrol ukuran memori yang dikonsumsi saat menggunakan ramf dan bahwa sistem saya dapat hang jika benar-benar mengkonsumsi RAM gratis, tetapi itu tidak akan menjadi masalah dalam skenario ini.
Singkatnya, saya tertarik:
- Kinerja bijaksana, yang lebih cepat: ramfs atau tmpfs (dan mungkin mengapa)?
- Kapan tmpfs menggunakan ruang swap? Apakah ini memindahkan data yang sudah tersimpan untuk ditukar (untuk membebaskan RAM untuk program lain yang sedang berjalan) atau hanya data baru jika pada saat itu tidak ada RAM yang tersisa?
sumber
Jawaban:
Rekomendasi saya:
Ukur dan amati aktivitas kehidupan nyata dalam kondisi normal.
File-file itu sepertinya TIDAK SEMUA dibutuhkan dan disajikan dari cache setiap saat. Tapi ada alat bagus bernama vmtouch yang dapat memberi tahu Anda apa yang ada di cache pada saat tertentu. Anda juga dapat menggunakannya untuk mengunci direktori atau file tertentu ke dalam cache. Jadi lihatlah apa yang terlihat setelah digunakan secara teratur. Menggunakan tmpfs dan ramf tidak diperlukan untuk situasi ini.
Lihat: http://hoytech.com/vmtouch/
Saya pikir Anda akan terkejut melihat bahwa file yang paling aktif mungkin sudah ada dalam cache.
Sejauh tmpf dibandingkan ramf, tidak ada perbedaan kinerja yang cukup besar. Ada perbedaan operasional. Case use kehidupan nyata adalah Oracle, di mana ramf digunakan untuk memungkinkan Oracle mengelola data dalam RAM tanpa risiko swap. Data tmpfs dapat ditukar keluar di bawah tekanan memori. Ada juga perbedaan dalam mengubah ukuran dan mengubah pengaturan dengan cepat.
sumber
Jangan terlalu memikirkan ini. Masukkan RAM yang cukup di sistem Anda dan biarkan cache disk kernel menangani hal-hal untuk Anda. Dengan begitu Anda mendapatkan manfaat dari bacaan yang datang langsung dari memori, sambil tetap bisa mempertahankan data pada disk.
sumber
1) Tolok ukur kinerja.
Menggunakan halaman ini sebagai referensi, saya melakukan perbandingan I / O antara tmpfs dan ramfs, dan hasilnya cukup identik dalam hal kinerja:
2) Menurut halaman ini , tmpfs menggunakan swap, dan ramfs tidak menggunakan swap.
sumber
Jika Anda memiliki jumlah RAM yang cukup diinstal untuk meng-host berbagai buffer kernel, aplikasi menumpuk dan menumpuk, cache sistem file biasa dan semua file yang ingin Anda masukkan ke dalamnya,
ramfs
tidak boleh lebih lambat daripadatmpfs
karena tidak akan ada risiko I / O fisik dengan desain. I / O Fisik tidak diragukan lagi merupakan penyebab utama penurunan kinerja di area tersebut.Namun, jika Anda belum memiliki jumlah RAM yang terpasang, menggunakan
ramfs
mungkin dan mungkin akan lebih lambat daripadatmpfs
yang terakhir menggunakan heuristik memori virtual untuk memutuskan apa yang harus lebih baik pada disk (yaitu di area swap) vs apa yang harus di RAM sementara dengan itutmpfs
, data sistem file Anda macet pada RAM yang mungkin merupakan pemborosan sumber daya.Untuk menjawab pertanyaan kedua Anda, ya,
tmpfs
akan memindahkan data lama terlebih dahulu ke area swap, bukan yang "panas" terakhir.sumber