Vous pouvez le faire comme ceci :
# 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
Vous pouvez utiliser strace pour voir qu'il s'agit de trois appels système différents
En outre, il peut être souhaitable de désactiver le cache du disque dur à l'aide de hdparm, sans savoir quelle chose vous comparez.
En aucun cas, vous ne pouvez empêcher le disque dur de mettre en cache les derniers 64/32/16 Mo de données récemment utilisées. Afin de tuer ce cache, écrivez simplement une certaine quantité de zéros (et videz) + lisez un endroit sans rapport avec le disque dur. Ceci est nécessaire car le cache peut être divisé en partie lecture et partie écriture. Après cela, vous pouvez comparer le disque dur.
On dirait que vous voulez la commande sync ou la fonction sync().
Si vous souhaitez vider le cache disque :echo 3 | sudo tee /proc/sys/vm/drop_caches