Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Comment puis-je empêcher l'utilisation ntfs-3g Échapper ma mémoire ZFS ARC?

Mon microcore est en cours d'exécution HP
http://www.openmediavault.org/
2.1.18 (Stone Burner) sur la base Debian GNU / Linux 7 (wheezy).

Il y a quelques jours, j'avais besoin de copier un grand nombre de fichiers d'un lecteur USB formaté dans NTFS. Connecté, monté, a lancé une copie et laissée jusqu'à la fin.

Un jour plus tard, j'ai trouvé qu'il n'avait pas copié presque rien, et la performance de mon NAS abattre. Au cours de l'enquête, j'ai constaté que la page et le cache tampon occupent maintenant plus 3/4 Mémoire système (ensemble ils prennent généralement moins 10%), et ZFS ARC Maintenant compressé dans la mémoire restante (moins 1/4 De la taille normale. ).

Lorsque je me suis rendu compte que ce n'était pas le cas, j'ai arrêté la copie, non montée et éteint le disque, et très rapidement, Kechi est retourné à leur taille normale, puis ARC A commencé à remplir un niveau normal.

Donc, si je dois faire plus de copies directes à l'avenir, comment puis-je empêcher le montage des disques ntfs, conduisant à la consommation d'un grand nombre de mémoire et de la privation de mon ZFS ARC mémoire nécessaire?

Remarque: j'ai essayé de courir

echo 3 > /proc/sys/vm/drop_caches

(sur "Pages de cache libre dentries et inodes» selon

man 5 proc

), car
https://serverfault.com/users/269155/shodanshok
https://serverfault.com/a/734645/25092
, Mais il a aussi effacé mon ARC (À l'exception de la mémoire requise pour la mise en cache d'en-tête L2ARC). Ainsi, il y avait beaucoup de mémoire libre dans mon système, mais comme tout est mis en cache seulement dans ARC ou L2ARC, Mon système a passé toute l'éternité à recharger des disques pour un remplissage répété ARC, Quel était un état de choses indésirable.

Dans cette image, vous pouvez voir le jeûne ZFS Au début du 5, quand j'ai lancé ma copie ntfs, tout revient à la normale lorsque le disque est déconnecté ntfs Au début du 6, puis, enfin, effacé (et restaure) ARC Après avoir utilisé drop_caches, 7 février jours.
Invité:

Babette

Confirmation de:

La solution la plus simple - Nettoyez périodiquement le tampon et la cache de page. Vous pouvez facilement le faire en exécutant une chaîne similaire. bash en arrière-plan (ou autre tty):


while true; do echo 1 > /proc/sys/vm/drop_caches; sleep 5; done

De plus, vous pouvez essayer une autre façon d'éviter la mémoire tampon de contamination / Pages de cache. En substance, vous devez copier chaque fichier en utilisant DIRECT_IO, Cache de pages contournant complètement les pages. Vous pouvez le faire avec une équipe comme:


dd if=srcfile of=dstfile bs=1M iflag=direct

La commande ci-dessus s'ouvre srcfile Avec option O_DIRECT, Contourner le cache des pages en lisant.

Mais pas pendant l'enregistrement

. Si vous avez besoin de vous déplacer même une mise en cache d'enregistrement, vous pouvez ajouter un autre

oflag=direct

option.

Ce problème avec la décision ci-dessus est que vous devez spécifier le fichier un par un en effectuant plusieurs (Peut-être des milliers). Cela signifie que vous deviez écrire un script autour

dd

, Vous pouvez donc copier tout le répertoire de trois.

D'autres options incluent:

utilisation

ddrescue

au lieu de

dd

Utiliser simple

cp

Avec le premier démarrage

libdirectio

(voir
https://github.com/gburd/libdirectio
Plus de détails)

Enfin, vous pouvez essayer de démarrer l'application / copie NTFS de l'autre côté

systemd-run

et installer certaines restrictions de mémoire qui doivent également fonctionner pour limiter la mise en cache de page.

Pour répondre aux questions, connectez-vous ou registre