comment vider totalement le cache du système de fichiers sur linux?

9

Dans un test de performance, je veux contourner l'influence du cache du système Linux (y compris le cache de page / cache d'inode et ainsi de suite).

J'ai essayé le drapeau O_DIRECT, mais il s'est avéré que les E / S directes "apprécient" toujours l'effet d'un cache.

Existe-t-il un moyen complet de fermer l'effet du cache système?


la source
2
Quel est l'intérêt d'un tel test de performance "irréel"? Vous essayez de tester quelque chose qu'aucun système d'exploitation moderne ne permettrait jamais de se produire.
Malheureusement, ce n'est pas du tout irréel, c'est toujours ainsi que fonctionne le noyau aio aujourd'hui. Je souhaite tellement que Mr.T se rende compte que les E / S asynchrones et le cache ne sont pas des termes mutuellement exclusifs. C'est quelque chose que les gars de Microsoft ont réalisé il y a 15 ans déjà (bien que les performances avant Vista puissent être décevantes, en particulier sous concurrence). Un Indien a également écrit un patch il y a des années, mais il a été refusé.

Réponses:

14

(il tombe en fait donc ..) courez d' syncabord, puis

pagecache gratuit:

echo 1 > /proc/sys/vm/drop_caches

dentiers et inodes libres:

echo 2 > /proc/sys/vm/drop_caches

pagecache, dentiers et inodes gratuits:

echo 3 > /proc/sys/vm/drop_caches

Ensuite, vous pouvez commencer avec un cache propre, mais bien sûr, la mise en cache fonctionnera toujours.

Karoly Horvath
la source
j'ai entendu parler de cette méthode quelque part. mais il n'y a pas de tels fichiers sur mon ubuntu 10.04. donc je n'ai pas réussi à exécuter les commandes ci-dessus.
@tom_cat: Vous avez besoin d'un noyau plus récent que 2.6.16, et Ubuntu 10.04 est venu avec 2.6.32 si je ne me trompe pas, donc cela devrait fonctionner. Je viens de vérifier mon installation 11.04 pour ce qu'elle vaut, qui a cette entrée proc (malheureusement pas 10.04 ici plus)
@Damon: Ouais, tu as raison. Merci beaucoup. J'ai découvert que j'avais ouvert une session sur une machine distante d'un noyau plus ancien.
0

non, vous ne pouvez pas contourner le cache. Mais, cependant, vous pouvez forcer une synchronisation du système de fichiers (ce qui signifie, vider le cache et écrire les données sur le disque) avec l'appel système supplémentaire fsync (3).

Salutations, CK


la source