bagaimana benar-benar menghapus cache filesytem di linux?

9

Dalam tes kinerja, saya ingin memotong pengaruh cache sistem linux (termasuk cache halaman / cache inode dan sebagainya).

Saya telah mencoba flag O_DIRECT, tetapi ternyata I / O langsung masih "menikmati" efek dari beberapa cache.

Apakah ada cara menyeluruh untuk menutup efek cache sistem?


sumber
2
Apa gunanya tes kinerja "tidak nyata" seperti itu? Anda mencoba menguji sesuatu yang tidak akan pernah terjadi oleh OS modern.
Sayangnya, ini bukan tidak nyata sama sekali, ini masih merupakan cara kerja kernel aio saat ini. Saya sangat berharap Mr.T akan menyadari bahwa asynchronous I / O dan cache bukan istilah yang saling eksklusif. Ini adalah sesuatu yang sudah direalisasikan oleh orang-orang di Microsoft 15 tahun yang lalu (meskipun diakui kinerja sebelum Vista dapat mengecewakan, terutama di bawah konkurensi). Beberapa pria India juga menulis tambalan bertahun-tahun yang lalu, tetapi ditolak.

Jawaban:

14

(sebenarnya turun begitu ..) jalankan syncdulu, lalu

pagecache gratis:

echo 1 > /proc/sys/vm/drop_caches

gigi dan inode gratis:

echo 2 > /proc/sys/vm/drop_caches

pagecache, gigi, dan inode gratis:

echo 3 > /proc/sys/vm/drop_caches

Kemudian Anda bisa mulai dengan cache bersih, tapi tentu saja caching akan tetap berfungsi.

Karoly Horvath
sumber
Saya pernah mendengar tentang metode ini di suatu tempat. tetapi tidak ada file seperti itu di Ubuntu 10,04 saya. jadi saya gagal menjalankan perintah di atas.
@tom_cat: Anda memerlukan kernel yang lebih baru dari 2.6.16, dan Ubuntu 10.04 datang dengan 2.6.32 jika saya tidak salah, jadi ini seharusnya bekerja. Saya baru saja memeriksa instalasi 11,04 saya untuk apa nilainya, yang memang memiliki entri proc ini (sayangnya tidak ada 10,04 lagi di sini)
@Damon: Ya, Anda benar. Terima kasih banyak. Saya telah menemukan bahwa saya telah masuk ke mesin remote dari kernel lama.
0

tidak, Anda tidak dapat mem-bypass cache. Namun, Anda dapat memaksa sinkronisasi sistem file (yang berarti, menghapus cache dan menulis data ke disk) dengan panggilan sistem tambahan fsync (3).

Salam, CK


sumber