La latence du stockage ralentit Immich lorsque les lectures ou écritures nécessaires doivent attendre, en particulier lorsque les importations concurrencent l’activité de la base de données et la navigation sur des appareils partagés.
Deux téléphones sauvegardent les photos d’un week-end tandis qu’un autre membre de la famille fait défiler d’anciens albums sur le même NAS. Les fichiers volumineux continuent d’être copiés à un débit respectable, mais les vignettes apparaissent de façon irrégulière et certaines requêtes marquent une pause. La question importante est de savoir si l’attente du stockage concerne ces opérations précises, plutôt que de déterminer si le disque peut atteindre un débit de transfert séquentiel élevé.
Des transferts rapides peuvent coexister avec des petites lectures lentes
Le débit indique combien d’octets sont transférés au fil du temps ; la latence indique combien de temps une opération attend avant de se terminer. Un disque peut fournir efficacement un flux séquentiel volumineux tout en traitant moins rapidement des petites lectures dispersées. La navigation dans Immich et l’état de l’application ne correspondent pas toujours à une copie de fichier continue ; ces deux observations peuvent donc coexister.
L’analyse des performances de l’hôte examine l’attente du périphérique et le comportement de la file d’attente en parallèle du débit, et pas seulement un pourcentage d’utilisation isolé. Des mesures comme la latence des requêtes, la profondeur de la file d’attente, l’attente du processeur et le minutage de l’application sont utiles lorsqu’elles sont analysées ensemble. Leur interprétation dépend de la pile de stockage, notamment lorsque la virtualisation, la mise en cache ou plusieurs appareils se trouvent sous le volume indiqué.
À titre d’exemple simplifié, vingt opérations dépendantes prenant chacune 5 millisecondes consomment 100 millisecondes avant même de compter les autres tâches. À raison de 0,5 milliseconde chacune, elles consomment 10 millisecondes. Les requêtes réelles peuvent exécuter des opérations en parallèle ou utiliser des caches ; il s’agit donc d’une explication de l’attente cumulée, et non d’une prévision mesurée du temps de réponse d’Immich.
Les différents rôles des données sollicitent le stockage différemment
Un fichier original importé ajoute des octets multimédias ; la préparation en arrière-plan lit les fichiers sources et écrit les fichiers dérivés ; la navigation récupère les ressources d’affichage ; la base de données gère les enregistrements et les requêtes de l’application. Le même pool physique peut les servir tous, mais leurs tailles de requête et leurs modes d’accès diffèrent. Une modification du stockage peut donc aider beaucoup plus une étape qu’une autre.
Une installation Immich documentée sur le terrain plaçait PostgreSQL sur un SSD tout en conservant les fichiers multimédias et les miniatures sur des disques durs. Cette configuration mixte documentée montre que les rôles du stockage peuvent être séparés ; elle ne prouve pas que cette organisation soit optimale et ne quantifie pas le gain de vitesse du SSD. Utilisez ce type d’exemple pour identifier le rôle concerné par une observation avant de généraliser à partir de la liste du matériel.
Pour la sauvegarde familiale, distinguez les originaux acceptés des aperçus entièrement préparés et des enregistrements indexables. Des écritures plus rapides des originaux ne supprimeront pas un goulot d’étranglement lié à l’inférence, et une base de données rapide ne garantit pas qu’une lecture d’image absente du cache sera rapide. Le point de terminaison pertinent est l’action du foyer dont vous mesurez la durée, avec toutes les étapes nécessaires incluses.
Les importations transforment le stockage partagé en file d’attente
Pendant une importation, les écritures en arrière-plan et les lectures interactives peuvent rejoindre la même file d’attente du périphérique. Un plus grand nombre de tâches concurrentes peut augmenter la quantité de travail en attente, même lorsque le débit global augmente. Le coût visible apparaît souvent sous la forme de quelques requêtes très longues, qu’une moyenne peut masquer tandis que la plupart des vignettes de la chronologie continuent de se charger normalement.
La demande de stockage séparé pour les miniatures venait explicitement du souhait d’utiliser un stockage rapide pour les ressources de navigation générées et un stockage de masse pour les originaux. Cela démontre l’existence de priorités d’accès distinctes, et non l’idée universelle que chaque installation a besoin de disques séparés. Le bénéfice réel dépend de l’endroit où les requêtes actuelles attendent et de la mesure dans laquelle le niveau proposé modifie cette attente.
Ce mécanisme cesse d’expliquer le ralentissement lorsque la latence du périphérique reste stable, mais que le client bloque pendant le décodage, que le réseau réessaie les transferts ou que l’inférence reste saturée. Déplacer les données uniquement parce que l’utilisation du processeur est faible peut alors passer à côté de la cause. Le stockage partagé est une dépendance possible, pas un verdict automatique pour chaque pause pendant les importations.
Corrélez l’attente du disque avec une action familiale
Choisissez une action familiale reproductible, comme ouvrir le même album ou importer un échantillon défini. Mesurez sa durée sur un hôte peu sollicité puis pendant une importation représentative, en parallèle de la latence du périphérique, du comportement de la file d’attente, du minutage de la base de données et des erreurs. Ne modifiez ni le compte, ni le chemin réseau, ni les réglages multimédias, ni le client afin que la comparaison conserve un sens précis.
La même distinction concernant le chemin critique apparaît dans l’analyse du stockage d’un serveur domestique partagé : la persistance en arrière-plan n’implique pas que chaque action visible attende une écriture sur le disque. Ce principe interapplicatif aide à cadrer l’observation, mais les temps de Home Assistant ne constituent pas des benchmarks d’Immich. Le flux photo doit démontrer lui-même le lien entre l’attente du stockage et le délai visible pour l’utilisateur.
Considérez le stockage comme une explication étayée lorsque ses attentes plus longues coïncident régulièrement avec l’étape retardée et qu’une autre condition contrôlée modifie les deux. Si seule la première lecture à froid est lente, consignez-la séparément d’une contention persistante. Arrêtez-vous à la dépendance identifiée ; cette analyse du mécanisme ne nécessite pas de tests de charge destructifs sur la photothèque de production.
Centre Tech & IA
Plus à lire

Les modèles ouverts rattrapent l’IA de pointe : 2026 sera-t-elle l’année où l’IA locale deviendra suffisamment performante ?
Les modèles ouverts deviennent suffisamment performants pour davantage de charges de travail d’IA locales, tandis que les modèles cloud de pointe restent utiles pour...

NVIDIA PAIR transforme votre réseau domestique en cluster d’IA local : avez-vous toujours besoin d’un gros serveur équipé d’un GPU ?
NVIDIA PAIR répartit les requêtes d’IA locales sur plusieurs PC, rendant les capacités de calcul plus flexibles, tandis qu’un seul serveur domestique peut conserver...

Pourquoi Immich semble-t-il plus rapide sur un réseau local que via des connexions distantes ?
Les requêtes sur le réseau local empruntent généralement un chemin plus court et à latence plus faible. L’accès à distance ajoute les limites de...

