GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare le cache di I/O su disco su Linux?

Puoi farlo in questo modo:

# 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

Puoi usare strace per vedere che si tratta di tre diverse chiamate di sistema

Inoltre, potrebbe essere desiderabile disattivare la cache dell'HDD utilizzando hdparm, non sono sicuro di cosa stai analizzando.

In alcun modo, non è possibile impedire all'HDD di memorizzare nella cache gli ultimi 64/32/16 MB di dati utilizzati di recente. Per uccidere quella cache, basta scrivere una certa quantità di zeri (e svuotare) + leggere un posto non correlato dall'HDD. Ciò è necessario poiché la cache può essere divisa in parte di lettura e parte di scrittura. Successivamente puoi eseguire il benchmark dell'HDD.


Sembra che tu voglia il comando sync o la funzione sync().

Se vuoi svuotare la cache del disco:echo 3 | sudo tee /proc/sys/vm/drop_caches


Linux
  1. Come partizionare un disco in Linux

  2. Come scoprire se il disco è SSD o HDD in Linux

  3. Come trovare un disco è SSD o HDD in Linux?

  4. Come si esegue l'I/O della console non bloccante su Linux in C?

  5. Come fermare il processo "ininterrotto" su Linux?

Come elencare le partizioni del disco in Linux

Come montare il disco NTFS su Linux

Come crittografare la partizione su Linux

Come formattare le partizioni del disco su Linux

Come creare partizioni del disco su Linux

10 esempi di iozone per la misurazione delle prestazioni di I/O del disco su Linux