6 - Performances et accélération matérielle

Exploiter le GPU, régler les tâches et surveiller les performances d'Immich.

6.1 - Transcodage NVIDIA avec une Quadro P2000

La NVIDIA Quadro P2000 peut accélérer le transcodage vidéo avec NVENC et réduire la charge CPU. Immich indique que le transcodage matériel peut produire des fichiers plus volumineux et parfois de qualité inférieure à réglage comparable.

Vérifier le GPU sur TrueNAS

sudo lspci -nnk | grep -A3 -i nvidia
nvidia-smi

Ton environnement a déjà utilisé un pilote NVIDIA 570.172.08 avec la P2000 reconnue. Après chaque mise à jour TrueNAS, refaire le contrôle.

Vérifier dans le conteneur

Découvrir le conteneur :

sudo docker ps --format '{{.Names}} {{.Image}}' | grep -i immich

Puis :

sudo docker exec NOM_CONTENEUR_IMMICH nvidia-smi

L'image serveur observée utilisait NVIDIA_DRIVER_CAPABILITIES=all. Vérifier cette variable et l'allocation GPU dans l'interface TrueNAS plutôt que de modifier les fichiers Compose générés.

Activer dans TrueNAS

  1. éditer l'application Immich ;
  2. activer la configuration GPU ;
  3. sélectionner la P2000 pour le serveur Immich ;
  4. redéployer ;
  5. ouvrir les paramètres de transcodage vidéo ;
  6. choisir NVENC ;
  7. commencer avec le décodage matériel désactivé ;
  8. tester un fichier compatible puis activer le décodage si utile.

Contrôler l'utilisation

watch -n 1 nvidia-smi

Dans une autre session, lancer une tâche de transcodage et suivre les journaux :

sudo docker logs -f NOM_CONTENEUR_IMMICH

Limites de la P2000

En cas d'artefacts

  1. tester le même fichier en transcodage logiciel ;
  2. désactiver le décodage matériel ;
  3. comparer H.264 et HEVC ;
  4. vérifier les journaux FFmpeg ;
  5. contrôler pilote et température ;
  6. ne pas conclure à une panne GPU à partir d'un seul fichier corrompu.

Référence : https://docs.immich.app/features/hardware-transcoding/

6.2 - Machine learning avec CUDA

Le machine learning Immich fournit la recherche intelligente et la reconnaissance faciale. CUDA est pris en charge sur les GPU NVIDIA avec une capacité de calcul 5.2 ou supérieure.

Conditions actuelles

La Quadro P2000 répond à la condition de capacité de calcul et ton pilote 570.172.08 dépasse le minimum documenté.

Docker Compose

Le service doit utiliser une image se terminant par -cuda et réserver un GPU. Exemple conceptuel :

immich-machine-learning:
  image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities:
              - gpu

Utiliser de préférence les fichiers officiels hwaccel.ml.yml correspondant à la version Immich.

TrueNAS

Dans les paramètres de l'application :

  1. activer le GPU pour le machine learning ;
  2. sélectionner la P2000 ;
  3. redéployer ;
  4. vérifier le conteneur ;
  5. lancer une tâche de visages ou recherche intelligente.

Vérifier

sudo docker exec NOM_CONTENEUR_ML nvidia-smi
sudo docker logs --tail 200 NOM_CONTENEUR_ML

Chercher :

CUDAExecutionProvider
Available ORT providers

Surveiller :

watch -n 1 nvidia-smi

Gestion de la VRAM

La P2000 possède 5 Go de VRAM. Éviter de lancer simultanément un import massif, plusieurs transcodages et de nombreux traitements ML sans surveillance.

Réduire si nécessaire :

Après activation

Il n'est pas nécessaire de relancer tous les anciens jobs uniquement pour profiter de l'accélération. Les prochaines tâches utiliseront le backend disponible.

Référence : https://docs.immich.app/features/ml-hardware-acceleration/

6.3 - Concurrence, tâches et choix du stockage

Priorités de stockage

  1. PostgreSQL sur SSD si possible.
  2. Miniatures sur SSD si la navigation est lente.
  3. Originaux sur le pool de capacité.
  4. Sauvegardes sur un autre support et un autre système.

Séparer les datasets peut améliorer l'organisation, mais complexifie la restauration. Mesurer avant de multiplier les montages.

Concurrence des tâches

Dans Administration > Settings, ajuster progressivement :

Ne pas dépasser sans raison le nombre de coeurs disponibles, surtout pour les miniatures. Une concurrence trop forte peut ralentir l'API et saturer le stockage.

Import massif

Avant :

df -hT
free -h
nvidia-smi

Pendant :

docker stats
iostat -xz 2
watch -n 2 nvidia-smi

iostat est fourni par sysstat sur de nombreuses distributions.

Machine learning distant

Immich peut envoyer les aperçus à un service machine learning plus puissant. Cette option convient à un serveur limité, mais ajoute une dépendance réseau et un second service à sauvegarder ou reconstruire.

Base PostgreSQL

Éviter les modifications manuelles de paramètres PostgreSQL copiées depuis un autre environnement. L'image officielle Immich contient des réglages et extensions adaptés.

Contrôles utiles :

docker exec -it immich_postgres psql -U postgres -d immich -c 'select version();'
docker exec -it immich_postgres pg_isready -U postgres -d immich

Adapter utilisateur, base et conteneur.

Nettoyage

Après une mise à jour Docker validée :

docker image prune

Cette commande supprime les images inutilisées, pas les images en cours d'utilisation. Ne pas supprimer les volumes ou dossiers de données pour gagner de la place.

Mesurer

Comparer avant et après :

Références :

6.4 - Surveillance, journaux et contrôles

État des conteneurs

Docker Compose :

docker compose ps
docker compose logs --tail=100
docker stats --no-stream

TrueNAS :

sudo docker ps --format 'table {{.Names}}\t{{.Status}}'
sudo docker stats --no-stream

Version et schéma

docker exec -it immich_server immich-admin version
docker exec -it immich_server immich-admin schema-check

Adapter le nom du conteneur.

Santé de PostgreSQL

docker exec immich_postgres pg_isready -U postgres -d immich
docker logs --tail 100 immich_postgres

Ressources hôte

uptime
free -h
df -hT
df -i
lsblk -f

TrueNAS :

sudo zpool status
sudo zpool list
sudo zfs list

GPU :

nvidia-smi

Interface Immich

Collecte de diagnostic

Le pack contient scripts/diagnostic_immich.sh. Exemple :

IMMICH_COMPOSE_DIR=/srv/immich/app \
  ./scripts/diagnostic_immich.sh

Le script n'effectue aucune modification. Examiner le rapport avant de le partager, car il peut contenir noms de conteneurs, chemins, versions et adresses.

Alertes utiles

Ne pas attendre un incident pour tester les commandes de diagnostic et la restauration.