Saya ingin membuat ramdisk Linux ukuran tetap yang tidak pernah bertukar ke disk. Perhatikan bahwa pertanyaan saya bukan "mengapa" saya ingin melakukan ini (katakanlah, misalnya, bahwa ini untuk tujuan edukatif atau untuk penelitian): pertanyaannya adalah bagaimana melakukannya.
Seperti yang saya pahami ramfs
tidak dapat dibatasi dalam ukuran, sehingga tidak sesuai dengan kebutuhan saya untuk memiliki ramdisk ukuran tetap.
Tampaknya juga tmpfs
dapat ditukar ke disk. Jadi tidak cocok dengan persyaratan saya untuk tidak pernah menukar ke disk.
Bagaimana Anda bisa membuat ramdisk Linux ukuran tetap yang tidak pernah bertukar ke disk?
Apakah mungkin, misalnya, untuk membuat tmpfs
di dalam ramfs
(apakah solusi seperti itu sesuai dengan persyaratan saya) dan jika demikian bagaimana?
Perhatikan bahwa kinerja bukan masalah dan ramdisk menjadi penuh dan memicu kesalahan "disk penuh" juga bukan masalah.
sumber
ram
perangkatdev
. Jika tidak, cobamodprobe rd
.Jawaban:
Ini hanya pemikiran dan memiliki lebih dari satu kelemahan, tetapi mungkin bisa digunakan juga.
Bagaimana dengan membuat file gambar dan sistem file di dalamnya di atas ramfs, kemudian mount gambar sebagai perangkat loop? Dengan begitu Anda bisa membatasi ukuran ramdisk hanya dengan membatasi ukuran file gambar. Sebagai contoh:
Dalam (agak terlalu lama) contoh di atas file gambar dibuat menjadi 2 megabyte dan ketika mencoba untuk menulis lebih dari 2 megabyte di atasnya, menulis gagal karena sistem file penuh.
Satu pengurangan yang jelas untuk semua ini tentu saja ada banyak kerumitan yang ditambahkan, tetapi setidaknya untuk tujuan akademis ini sudah cukup.
sumber
Buku (tanggal!) "Linux Device Drivers" oleh Corbet, Rubini dan Kroah-Hartman memiliki contoh driver yang hanya mengalokasikan area memori tetap untuk bermain-main. Bukan sistem file, tapi ...
sumber
Tidak bisa dilakukan Semua RAM tunduk pada paging oleh desain perangkat keras CPU dan desain microkernel Linux. Tidak ada alasan sah untuk memperlakukan memori sebaliknya. SEMUA algoritma perangkat lunak BISA diadaptasi untuk menggunakan skema caching file dan memori halaman. Virtual SELALU lebih baik dan lebih efisien.
Disk RAM dengan ukuran terbatas bertentangan dengan prinsip dasar dunia virtual. Anda harus mengasumsikan bahwa hanya permintaan file yang berguna yang dibuat untuk sistem file host dan bahwa semua permintaan tersebut memiliki kepentingan dan prioritas yang sama di dunia virtual (satu-satunya model yang diperhitungkan).
Telah terbukti secara matematis bahwa bahkan proses waktu nyata sesuai dengan aturan ini. Jika Anda mengalami masalah kecepatan, maka TIDAK BISA dipecahkan dengan menggunakan RAM sebagai penyimpanan == seluruh sistem host perlu beroperasi lebih cepat dari CPU ke bus I / O ke perangkat penyimpanan permanen. Semua kecuali masalah komputasi degenerasi buatan memiliki cabang yang cukup dan persyaratan I / O file bahwa peningkatan kecepatan rata-rata cache RAM adalah yang terbaik yang dapat Anda lakukan.
sumber
mlock()
,,mlock2()
danmlockall()
mengunci sebagian atau semua ruang alamat virtual proses pemanggilan ke dalam RAM, mencegah agar memori tersebut tidak diarahkan ke area swap."