GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membersihkan cache I/O disk di Linux?

Anda dapat melakukannya seperti ini:

# sync # (move data, modified through FS -> HDD cache) + flush HDD cache
# echo 3 > /proc/sys/vm/drop_caches # (slab + pagecache) -> HDD (https://www.kernel.org/doc/Documentation/sysctl/vm.txt)
# blockdev --flushbufs /dev/sda
# hdparm -F /dev/sda

# NEXT COMMAND IS NOT FOR BENCHMARKING:
# should be run before unplug, flushes everything possible guaranteed.
# echo 1 > /sys/block/sdX/device/delete

Anda dapat menggunakan strace untuk melihat bahwa ini adalah tiga syscall yang berbeda

Juga, mungkin diinginkan untuk mematikan cache HDD menggunakan hdparm, tidak yakin apa yang Anda tolok ukur.

Dengan cara apa pun, Anda tidak dapat mencegah HDD menyimpan cache 64/32/16 MB terakhir dari data yang baru saja digunakan. Untuk mematikan cache itu, cukup tulis sejumlah nol (dan siram) + baca beberapa tempat yang tidak terkait dari HDD. Ini diperlukan karena cache dapat dibagi menjadi bagian baca dan bagian tulis. Setelah itu, Anda dapat membandingkan HDD.


Sepertinya Anda menginginkan perintah sinkronisasi, atau fungsi sync().

Jika Anda ingin membersihkan cache disk:echo 3 | sudo tee /proc/sys/vm/drop_caches


Linux
  1. Cara mempartisi disk di Linux

  2. Cara Mengetahui Apakah Disk Adalah SSD Atau HDD Di Linux

  3. Bagaimana menemukan Disk adalah SSD atau HDD di Linux?

  1. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?

  2. Bagaimana Anda melakukan non-blocking console I/O di Linux di C?

  3. Bagaimana cara memeriksa penggunaan I/O disk per proses?

  1. Bagaimana cara menghentikan proses 'tidak terputus' di Linux?

  2. Mengevaluasi CPU I/O menunggu di Linux

  3. Penurunan kinerja I/O yang masif dan tidak dapat diprediksi di Linux