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