Si j'appelle chat / dev / null deux fois de suite sur un fichier, le deuxième appel sera-t-il un non-OP?

StackOverflow https://stackoverflow.com/questions/6088169

  •  09-09-2020
  •  | 
  •  

Question

Je veux utiliser cat filepath > /dev/null comme mécanisme de mise en cache de mémoire bon marché. Ce que je m'interroge sur est: Si je l'appelle une seconde fois, et le fichier est déjà dans le cache de disque, est-ce que le système d'exploitation est assez intelligent pour ne rien faire?

mise à jour: j'ai testé cela sur un volume CIFS, à l'aide de fadvise posix_fadv_willneed mettre en cache le fichier localement (à l'aide de Linux-fools sur la ligne de commande).S'avère que Le volume doit être monté en mode lecture-écriture pour que cela fonctionne.En lecture seule mode, la fadvise semble être ignorée.Cela doit avoir quelque chose à voir avec la samba Mécanisme OPLOCK.

Était-ce utile?

La solution

Il est préférable de POSIX_FADVISE (..., POSIX_FADV_WILLNEED) que pour CAT Le fichier à / dev / null - il nécessite moins d'IO réelle et n'a pas besoin du contenu du fichier à lire dans les utilisateursPace Ram, détruire les caches CPU.

De plus, si la partie pertinente du fichier est déjà dans le cache, le POSIX_FADVISE fait pratiquement beaucoup moins de travail que le fichier CAT> / dev / null

Si vous sentez que vous avez vraiment besoin que vous avez vraiment besoin que les pages soient dans le noyau tout à présent , puis modifiez la section pertinente du fichier et le déverrouillez-la après la pression de la mémoire.est serré).Qui nécessite des privilèges racines.

En général, ce genre de chose est une pessimisation et doit être évité, cependant.Forcer le noyau à se comporter de la manière dont vous voulez peut réduire sa capacité à optimiser la charge de travail réelle tout à l'heure.

Autres conseils

Non, et il ne peut pas.

déterminer si un programme ne fera que rien n'est généralement plus complexe que de simplement l'exécuter.

Pourquoi avez-vous besoin de contrôler la mémoire de la mémoire de ma mémoire?Si cela est absolument nécessaire, envisagez d'utiliser un système de fichiers TMPFS ou en utilisant CompcAche (un périphérique de bloc de RAM compressé)

Cela ne fera pas rien , car les autres réponses ont dit.Mais si ce que vous vraiment signifiait était:

Si je l'appelle une seconde fois, et le Le fichier est déjà dans le cache de disque, est le système d'exploitation assez intelligent pour pas le lire du disque une seconde fois?

... alors la réponse est oui 1 .C'est ainsi que le cache de disque fonctionne, après tout.


1.Tant que le système de fichiers en question utilise le cache de page, de toute façon.

It will be fast as hell, but it won't be a no-op (if it were, there would be legit reasons for syscalls to do unexpected things instead of their promised functions...). However, depending on the filesystem driver used, and the kernel options, you could be running close to the memory bandwidth.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top