Saya ingin membandingkan kecepatan kedua perintah ini:
grep pattern1 files*
grep pattern2 files*
Sayangnya, grep pertama membaca banyak file * ke buffer memori, sehingga grep kedua berjalan sangat cepat, tetapi karena alasan yang salah.
Bagaimana saya memberi tahu Linux (Fedora 11): "tolong hentikan caching disk yang dibaca karena saya sedang menguji sesuatu."
Jawaban:
Saya tidak berpikir Anda bisa, dengan mudah, katakan "berhenti sementara untuk caching". Tetapi yang dapat Anda lakukan adalah memberi tahu sistem untuk menjatuhkan cache sebelum setiap kali dijalankan:
Sebagai root:
(Ini didokumentasikan dalam kernel kernel di Documentation / sysctl / vm.txt , yang berguna jika seperti sebagian dari kita, Anda tidak dapat selalu mengingat begitu saja apa yang dilakukan nilai 1, 2, atau 3.)
Atau secara bergantian, tentu saja, mengunggah cache dan membandingkan kinerja yang di-cache. (Saya pikir keduanya adalah angka yang berguna.)
sumber
echo 1
hanya akan menjatuhkan cache halaman, bukan cache disk apa pun.Ketika menghitung waktu hal-hal seperti ini saya biasanya menjalankannya terlebih dahulu untuk mengunggah cache. Kemudian jalankan perintah menggunakan waktu. Dalam menguji sesuatu seperti ini Anda harus lebih peduli tentang CPU dan waktu berlalu, dan kurang peduli tentang waktu I / O.
Bagaimanapun, sulit untuk mendapatkan pengaturan waktu yang sepenuhnya akurat. Jika file input melebihi ukuran memori yang tersedia untuk buffer, maka Anda kemungkinan akan mengakhiri semua file melalui cache buffer. Jika tidak, Anda dapat mengakses semua data dari cache buffer. Dalam kehidupan nyata, sering ada campuran data buffered dan membaca data dari disk.
sumber