Je veux comparer la vitesse de ces deux commandes:
grep pattern1 files*
grep pattern2 files*
Malheureusement, le premier grep lit une grande partie des fichiers * dans des tampons de mémoire, donc le deuxième grep s'exécute très rapidement, mais pour une mauvaise raison.
Comment puis-je dire à Linux (Fedora 11): "veuillez arrêter de mettre en cache les lectures de disque car je teste quelque chose."
Réponses:
Je ne pense pas que vous puissiez facilement lui dire "arrêter temporairement la mise en cache". Mais ce que vous pouvez faire, c'est de dire au système de supprimer le cache avant chaque exécution:
En tant que root:
(Ceci est documenté dans la documentation du noyau à Documentation / sysctl / vm.txt , ce qui est pratique si, comme certains d'entre nous, vous ne pouvez pas toujours vous souvenir à l'avance de ce que font les valeurs 1, 2 ou 3.)
Ou bien sûr, vous pouvez également amorcer le cache et comparer les performances mises en cache. (Je pense que les deux sont des chiffres utiles.)
la source
echo 1
supprimera uniquement le cache de pages, pas les caches de disque.Lorsque vous chronométrez des choses comme celle-ci, je l'exécute généralement en premier pour amorcer le cache. Exécutez ensuite la commande en utilisant le temps. En testant quelque chose comme ça, vous devriez être plus préoccupé par le CPU et les temps écoulés, et moins préoccupé par le temps d'E / S.
Dans tous les cas, il est difficile d'obtenir des horaires parfaitement précis. Si les fichiers d'entrée dépassent la taille de la mémoire disponible pour les tampons, vous finirez probablement par parcourir tous les fichiers via le cache de tampon. Sinon, vous pouvez simplement accéder à toutes les données du cache de tampon. Dans la vraie vie, il y a souvent un mélange de données en mémoire tampon et de données lues sur le disque.
la source