Home Assistant n’a pas de réponse unique et pertinente à la question « combien de tâches simultanées peut-il gérer ? ». Dix courtes tâches asynchrones peuvent être moins coûteuses qu’une seule intégration qui bloque la boucle d’événements, tandis que cinquante automatisations en file d’attente peuvent rester inoffensives si elles passent la majeure partie de leur temps à attendre des opérations d’E/S indépendantes.
La limite utile est le point où l’ajout de travail crée un retard reproductible dans le chemin de contrôle important : un événement attend plus longtemps avant d’être traité, une file d’automatisations s’allonge, un appel de service dépasse son délai cible, ou une ressource partagée — processeur, mémoire, stockage ou réseau — commence à subir une pression. La concurrence est donc d’abord un problème de latence et de files d’attente, avant d’être un problème de nombre de tâches.
La concurrence de Home Assistant commence avec la boucle d’événements asyncio
Home Assistant Core repose sur Python asyncio. Les composants planifient leur travail sous forme de tâches, et le code asynchrone coopératif cède la main pendant l’attente d’opérations d’E/S, ce qui permet aux autres tâches de progresser sans consacrer un thread du système d’exploitation à chaque intégration.
La documentation actuelle destinée aux développeurs de Home Assistant explique que Core planifie les tâches des composants via une boucle d’événements centrale et s’appuie sur la suspension correcte des tâches pendant leurs attentes. C’est pourquoi « simultané » ne signifie pas que chaque tâche exécute des instructions du processeur exactement au même instant.
Une analyse pratique de la concurrence fait la même distinction : les tâches asynchrones peuvent se chevaucher dans le temps écoulé, tandis que l’exécution réelle dans la boucle d’événements reste sérialisée entre les points await. La capacité dépend de la durée pendant laquelle chaque tâche occupe la boucle et de ce qu’elle attend.
Les opérations bloquantes peuvent dégrader de nombreuses tâches simultanément
La défaillance de concurrence la plus dommageable n’est souvent pas un nombre excessif d’automatisations. Il s’agit plutôt d’une opération qui bloque suffisamment longtemps la boucle d’événements pour empêcher l’exécution des mises à jour d’état et des rappels sans rapport.
Home Assistant avertit explicitement que les opérations bloquantes dans la boucle d’événements immobilisent tout le système pendant la durée de l’appel. Cela inclut les opérations d’E/S sur fichiers mal gérées, les bibliothèques réseau, les pauses ou les traitements synchrones lourds exécutés dans une intégration.
Cela change la manière dont il faut interpréter un test de capacité. Si la latence du contrôle local augmente lorsqu’une intégration précise est active, alors que l’utilisation globale du processeur reste faible, le problème peut tout de même venir d’un blocage de la boucle d’événements plutôt que d’une puissance de calcul insuffisante.
Le mode d’automatisation détermine comment les déclenchements répétés deviennent du travail
Les automatisations ajoutent un autre niveau de politique de concurrence. Une règle peut ignorer un second déclenchement, redémarrer l’exécution en cours, mettre le travail en file d’attente ou créer des exécutions parallèles. Ces choix modifient à la fois le comportement attendu et la demande en ressources.
La documentation actuelle des modes d’automatisation de Home Assistant définit les modes single, restart, queued et parallel, avec un nombre maximal configurable d’exécutions en file d’attente ou en parallèle. La valeur maximale par défaut pour les modes en file d’attente et en parallèle est de 10, mais cette valeur de configuration ne constitue pas une mesure de la capacité globale de la plateforme.
Une automatisation de capteur de porte qui attend deux secondes avant d’envoyer une notification et une automatisation d’éclairage qui effectue cinq appels réseau ne sont pas des tâches équivalentes. Choisissez d’abord le mode d’automatisation en fonction de l’ordre d’exécution et de la fiabilité attendue, puis vérifiez si la file d’attente ou le chevauchement qui en résultent affectent la latence du contrôle.
Mesurez l’allongement des files et la latence de fin de distribution, pas seulement le pourcentage d’utilisation du processeur
Utilisez une automatisation locale critique comme sonde de latence. Notez l’arrivée du déclenchement, le début de l’automatisation, l’appel de service et la réponse de l’appareil physique, tout en augmentant une seule variable de concurrence à la fois : déclenchements répétés, clients du tableau de bord, intégrations en arrière-plan ou services voisins.
L’article de ZimaSpace consacré au travail piloté par les événements et à la charge d’un serveur inactif fournit la bonne base : les systèmes pilotés par les événements sont efficaces lorsque le travail ne se réveille qu’en cas de besoin, mais les pics nécessitent tout de même suffisamment de marge de planification et de ressources pour être résorbés sans files persistantes.
Surveillez la latence médiane et les exécutions normales les plus lentes. Un système peut utiliser en moyenne 10 % du processeur tout en générant des blocages d’une seconde lors de brèves pointes. La limite de capacité utile apparaît lorsque les files continuent de s’allonger, que les avertissements concernant le nombre maximal d’exécutions se répètent ou que la latence de fin de distribution ne revient plus à son niveau de référence après la fin du pic.
Distinguéz la concurrence de Home Assistant de la contention sur l’hôte
Home Assistant peut planifier correctement ses tâches alors qu’un autre conteneur sature le processeur, la mémoire, le stockage ou le réseau. Dans ce cas, augmenter ou réduire la valeur max des automatisations peut ne rien changer, car l’hôte partagé a déjà perdu sa marge de ressources.
Répétez le test de concurrence après avoir suspendu la charge voisine. Si la temporisation de la boucle d’événements et la latence du contrôle local s’améliorent immédiatement, considérez la limite comme un problème de capacité de l’hôte partagé. Si ce n’est pas le cas, examinez les opérations bloquantes, le comportement des intégrations ou la conception des files d’automatisation dans Home Assistant.
Utilisez une condition d’arrêt plutôt que de publier un nombre de tâches
| Signal observé | Signification | Test suivant |
|---|---|---|
| Les exécutions parallèles ou en file d’attente atteignent la valeur maximale configurée | Limite de file au niveau de l’automatisation | Vérifier le mode, l’ordre d’exécution et la fréquence des déclenchements |
| Avertissement concernant la boucle d’événements ou blocage généralisé de l’interface et du contrôle | Opération potentiellement bloquante | Identifier l’intégration ou l’appel synchrone |
| La latence augmente uniquement lorsqu’un autre service est actif | Contention sur l’hôte partagé | Mesurer la pression exercée sur le processeur, la mémoire, les E/S et le réseau |
| Le chemin d’un seul appareil est lent tandis que les autres restent rapides | Limite propre à une dépendance | Examiner le chemin de cette intégration ou du réseau |
| Les files se résorbent et la latence de fin de distribution reste dans la cible | Une marge de concurrence utile subsiste | Arrêter d’ajouter de la charge au pic prévu |
La capacité de Home Assistant doit donc être exprimée comme une charge de travail testée avec un objectif de latence, et non comme un nombre universel de tâches simultanées. La bonne question est de savoir quelle quantité de travail chevauchant le mélange actuel d’intégrations et l’hôte peuvent absorber avant que le chemin critique du contrôle local ne respecte plus son délai.
Centre Tech & IA
Plus à lire

Les caméras domestiques peuvent-elles synchroniser les événements sans services horaires cloud ?
Une explication axée sur les mécanismes de l’heure de la caméra sans cloud, ses compromis liés aux ressources partagées, trois FAQ sur la diffusion...

Un service d’IA local peut-il détecter les couches de modèle corrompues avant l’inférence ?
Une explication axée sur les mécanismes de la détection des couches de modèle corrompues, de ses compromis en matière de ressources partagées, de trois...

Un système RAG peut-il être restauré sans régénérer chaque embedding ?
Une explication de la restauration RAG sans réencodage, axée sur le mécanisme, de ses compromis en matière de ressources partagées, trois FAQ sur la...

