Setelah menambahkan preload
paket, aplikasi saya tampaknya mempercepat tetapi jika saya menyalin file besar, cache file tumbuh lebih dari dua kali lipat ukuran file.
Dengan mentransfer gambar virtualbox 3-4 GB atau file video ke drive eksternal, cache yang besar ini tampaknya menghapus semua aplikasi yang dimuat sebelumnya dari memori, yang mengarah ke peningkatan waktu muat dan penurunan kinerja secara umum.
Apakah ada cara untuk menyalin file berukuran besar, multi-gigabyte tanpa menyimpannya (yaitu mem-bypass cache file)? Atau cara daftar putih atau daftar hitam folder tidak di-cache?
sumber
Untuk satu file besar, gunakan
dd
dengan I / O langsung untuk mem-bypass cache file:Jika Anda ingin mentransfer satu (atau beberapa) file multi-gigabyte besar, mudah dilakukan dengan
dd
:direct
bendera memberitahudd
menggunakan opsi I / O langsung kernel (O_DIRECT
) saat membaca dan menulis, sehingga benar-benar melewati file cache.bs
pilihan Blocksize harus diatur ke nilai yang cukup besar karena untuk meminimalkan jumlah operasi disk fisikdd
harus melakukan, karena membaca / menulis tidak lagi cache dan terlalu banyak operasi langsung kecil dapat mengakibatkan perlambatan serius.4M
).Sayangnya, untuk banyak direktori / salinan rekursif , tidak ada alat yang mudah tersedia; yang biasa
cp
, dll tidak mendukung I / O langsung./ e iflags & oflags diubah ke iflag & oflag yang benar
sumber
zsh
's**
operator.zsh
perlu diinstal secara manual dari repo.dd
Sintaks aneh mengotori oprtator **. Anda masih bisa menggunakan script shell yang mendapat argumen biasanya (dd.sh in.file out.file
dengan ** di nama file) dan memberikan nama file untukdd
menggunakan$1
,$2
, dll, yang tidak boleh dilanggar oleh sintaks aneh dd.Anda dapat menyalin direktori secara rekursif dengan
dd
menggunakanfind
danmkdir
Kita perlu menyelesaikan dua masalah:
dd
tidak tahu apa yang harus dilakukan dengan direktoridd
hanya dapat menyalin satu file pada satu waktuPertama mari kita tentukan direktori input dan output:
Sekarang mari
cd
masuk ke direktori sumber sehinggafind
akan melaporkan direktori relatif yang dapat kita manipulasi dengan mudah:Gandakan pohon direktori dari
$SOURCE
ke$TARGET
File duplikat dari
$SOURCE
ke$TARGET
menghilangkan write cache (tapi memanfaatkan cache yang membaca!)Harap dicatat bahwa ini tidak akan menghemat waktu modifikasi file, kepemilikan, dan atribut lainnya.
sumber