Lenteur des opérations de métadonnées comme ls -l, du ou find
Lorsqu'un répertoire dépasse 100 000 fichiers, les opérations de métadonnées telles que ls -l
, du
ou find
sont lentes.
En général, une opération ls -l
effectuée sur un répertoire File Storage comportant 100 000 fichiers se termine en 10 secondes au maximum. La taille du répertoire n'affecte pas de manière significative le débit d'écriture dans File Storage. Si vous constatez une lenteur de lecture/écriture, assurez-vous de ne pas utiliser les options de montage NFS rsize
et wsize
avec une valeur inférieure à 1048576. Il est recommandé de ne pas spécifier les options de montage rsize
et wsize
, mais de les laisser avec la valeur par défaut 1048576.
Cause : les opérations d'analyse de répertoire telles que ls
, du
, find
et rsync
sur un répertoire contenant 100 000 fichiers prennent plus de temps dans File Storage.
Solutions :
-
Redistribuez les fichiers dans des sous-répertoires au lieu de stocker un grand volume de fichiers dans un seul répertoire. Nous recommandons d'utiliser des sous-répertoires pour conserver des tailles de répertoire inférieures à 100 000 fichiers.
Conseil
Il est recommandé d'utiliser des sous-répertoires afin de limiter la taille des répertoires dans File Storage. - Utilisez
ls -ld
oustat
au lieu dels -l
. Ces opérations sont beaucoup plus rapides quels -l
pour les répertoires volumineux.Par exemple :
[opc@instance01 dd]$ time ls -l|wc -l 401425 real 0m39.786s user 0m4.389s sys 0m5.403s [opc@instance01 dd]$ time ls -ld drwxrwxr-x. 4 opc opc 401424 Apr 17 14:18 . real 0m0.009s user 0m0.001s sys 0m0.003s [opc@instance01 dd]$ time stat .|grep Size Size: 401424 Blocks: 785 IO Block: 32768 directory real 0m0.010s user 0m0.002s sys 0m0.003s [opc@instance01 dd]$
-
Parfois, un problème de client NFS peut provoquer une boucle dans les opérations d'analyse de répertoire et entraîner une augmentation du temps d'analyse. Ce problème affecte les versions d'Oracle Linux suivantes :
- Oracle Linux 6
- Oracle Linux 7 avec des versions d'UEK (Unbreakable Enterprise Kernel) antérieures à 4.14.35-1902.301.1
Si vous utilisez Oracle Linux 6, mettez à niveau vers Oracle Linux 7 ou version ultérieure. La dernière version est recommandée.
Les utilisateurs d'Oracle Linux 7 peuvent exécuter la commande
uname -a
pour vérifier la version d'UEK. Si la version d'UEK est antérieure à 4.14.35-1902.301.1, effectuez une mise à niveau vers une version ultérieure du noyau. Le patch traitant ce comportement a été mis à disposition le 17 avril 2020 et peut être installé avec Oracle Ksplice.Oracle Ksplice vous permet d'appliquer d'importantes mises à jour de sécurité ainsi que d'autres mises à jour de noyau critiques sans redémarrage. Oracle Ksplice doit être installé sur l'instance. Après l'installation de Ksplice, vous pouvez installer les patches Ksplice disponibles. Pour obtenir des instructions, reportez-vous à Oracle Ksplice.
Une fois le patch installé, vous pouvez vérifier la version du noyau en cours. La commande
uptrack
Ksplice ne modifie pas la sortie de la commandeuname
.uname
continue de refléter la version du noyau dans laquelle l'instance a été initialisée.A la place, utilisez
uptrack-uname
pour voir le noyau en cours exécuté par une instance.uptrack-uname
a le même format queuname
et prend en charge les indicateursuname
courants, y compris-r
et-a
.Par exemple :
$ uptrack-uname -r 4.14.35-1902.302.2.el7uek.x86_64
-
Les opérations d'analyse de répertoire appellent l'opération NFS
READDIRPLUS
, qui est coûteuse en ressources lorsque le répertoire contient de nombreux fichiers. Lors du montage, les appelsREADDIRPLUS
peuvent être désactivés sur les instances à l'aide de l'optionnordirplus
. Pour désactiver les opérations NFSREADDIRPLUS
sur l'instance, procédez comme suit :- Ouvrez une fenêtre de terminal sur l'instance.
-
Démontez le système de fichiers à l'aide de la commande
umount
. Par exemple :sudo umount 10.x.x.x:/fs-export-path /mnt/yourmountpoint
-
Remontez le système de fichiers et incluez l'option
-o nordirplus
pour désactiverREADDIRPLUS
. Par exemple :sudo mount -o nordirplus 10.x.x.x:/fs-export-path /mnt/yourmountpoint