Après avoir ajouté le preload
package, mes applications semblent accélérer mais si je copie un gros fichier, le cache de fichiers augmente de plus du double de la taille du fichier.
En transférant une seule image ou fichier vidéo Virtualbox de 3 à 4 Go sur un disque externe, cet énorme cache semble supprimer toutes les applications préchargées de la mémoire, ce qui entraîne une augmentation des temps de chargement et une baisse générale des performances.
Existe-t-il un moyen de copier des fichiers volumineux de plusieurs gigaoctets sans les mettre en cache (c'est-à-dire en contournant le cache de fichiers)? Ou un moyen de mettre sur liste blanche ou sur liste noire des dossiers spécifiques à mettre en cache?
la source
Pour les fichiers volumineux uniques, utilisez
dd
avec des E / S directes pour contourner le cache de fichiers:Si vous souhaitez transférer un (ou quelques) fichiers volumineux de plusieurs gigaoctets, c'est facile à faire avec
dd
:direct
indicateurs indiquentdd
d'utiliser l'option d'E / S directes du noyau (O_DIRECT
) pendant la lecture et l'écriture, contournant ainsi complètement le cache de fichiers.bs
option de taille de bloc doit être définie sur une valeur raisonnablement élevée car pour minimiser le nombre d'opérations sur le disque physiquedd
, car les lectures / écritures ne sont plus mises en cache et trop de petites opérations directes peuvent entraîner un ralentissement grave.4M
).Pour les copies de répertoires multiples / récursives , malheureusement, il n'y a pas d'outils facilement disponibles; l'habituel
cp
, etc. ne prend pas en charge les E / S directes./ e iflags & oflags modifiés en iflag & oflag correct
la source
zsh
l'**
opérateur de.zsh
doit être installé manuellement à partir du référentiel.dd
La syntaxe étrange de l 'encrasse l' oprtateur **. Vous pouvez toujours utiliser un script shell qui a obtenu des arguments normalement (dd.sh in.file out.file
avec ** dans les noms de fichiers) et a donné les noms de fichiers à l'dd
aide$1
,$2
etc., qui ne devrait pas être encrassé par la syntaxe bizarre de dd.Vous pouvez copier un répertoire récursivement en
dd
utilisantfind
etmkdir
Nous devons contourner deux problèmes:
dd
ne sait pas quoi faire des répertoiresdd
ne peut copier qu'un seul fichier à la foisDéfinissons d'abord les répertoires d'entrée et de sortie:
Entrons maintenant
cd
dans le répertoire source afin defind
rapporter les répertoires relatifs que nous pouvons facilement manipuler:Dupliquez l'arborescence de répertoires de
$SOURCE
à$TARGET
Dupliquer des fichiers de
$SOURCE
à$TARGET
omettre le cache d'écriture (mais en utilisant le cache de lecture!)Veuillez noter que cela ne préservera pas les délais de modification des fichiers, la propriété et d'autres attributs.
la source