Ce document explique comment résoudre les problèmes de blocage logiciel des processeurs virtuels (vCPU). Un blocage logiciel se produit lorsque le vCPU d'une instance de machine virtuelle (VM) ne parvient pas à exécuter une nouvelle tâche pendant plus de 20 secondes. La plupart des blocages logiciels sont imputables à des bugs dans une application.
Les blocages logiciels peuvent rendre les VM non réactives pendant de courtes périodes, perturber l'accès SSH aux VM et engendrer des temps d'attente dans les applications ou des basculements. Les VM qui rencontrent un blocage logiciel peuvent également entraîner une utilisation du processeur anormalement élevée ou faible, selon la cause exacte du blocage logiciel.
Identifier les blocages logiciels
Pour déterminer si votre VM est confrontée à un blocage logiciel, employez l'une de ces méthodes :
- Si vous avez déjà activé la journalisation en sortie du port série pour votre VM, examinez la sortie du port série pour obtenir une trace de pile du blocage logiciel.
- Consultez les journaux du système d'exploitation de votre VM (
/var/log/messages) pour obtenir une trace de pile du blocage logiciel.
Exemple de trace de pile de blocage logiciel
watchdog: BUG: soft lockup - CPU#3 stuck for 22s!
Pour détecter les futurs blocages logiciels, vous pouvez procéder comme suit :
Créez une règle d'alerte basée sur les journaux pour le journal suivant :
resource.type="gce_instance" log_id("serialconsole.googleapis.com/serial_port_1_output") textPayload=~"watchdog.*lockup"
Résoudre les problèmes de blocage logiciel
Une fois que vous avez identifié qu'un blocage logiciel se produit, essayez les étapes de dépannage suivantes pour résoudre le problème :
- Consultez le site de votre fournisseur d'OS pour identifier les erreurs connues qui concernent votre version d'OS. Il peut arriver que vous trouviez des références à des modules de kernel spécifiques dans la trace de la pile. Cela indique qu'une fonction ou une opération particulière est impliquée.
- Déterminez si le blocage logiciel se répète à une certaine fréquence, par exemple si la charge est élevée, ou lors de certaines activités. Si les blocages logiciels sont corrélés à une charge élevée, vous devrez peut-être reconfigurer votre charge de travail, par exemple en utilisant une VM de plus grande capacité ou en répartissant la charge sur plusieurs VM.
- Vérifiez si les blocages logiciels sont liés à une modification apportée à votre environnement d'exécution, comme le déploiement d'un nouveau logiciel ou une mise à jour de l'image d'OS.
- Évaluez si des événements de maintenance ont eu lieu au moment du blocage logiciel en examinant les journaux d'audit des événements système.
Si les étapes de dépannage précédentes n'ont pas permis de résoudre le problème, envoyez une demande d'assistance en incluant toutes les informations que vous avez recueillies lors de votre tentative de dépannage.
Bonnes pratiques pour éviter les blocages logiciels
Pour éviter que vos VM ne subissent des blocages logiciels, nous vous recommandons d'appliquer les bonnes pratiques suivantes :
- Assurez-vous d'avoir configuré les composants redondants appropriés pour votre système, tels que des clusters à haute disponibilité, afin de fournir une capacité de basculement si une VM particulière subit un blocage logiciel prolongé. Pour plus d'informations, consultez Concevoir des systèmes résilients.
- Pour les charges de travail intensives, envisagez d'utiliser des familles de machines optimisées pour le calcul.
- Testez votre charge de travail avec des événements de maintenance simulés pour découvrir comment celle-ci se comporte en cas de migration à chaud (si cette option est activée), en particulier lors des tests de charge.
- Si vous exécutez un kernel Linux personnalisé ou des modules personnalisés dans votre VM, testez les modifications sous une certaine charge avant de les déployer dans votre environnement de production. Vérifiez que les modifications personnalisées que vous avez apportées ne vous empêchent pas de bénéficier de l'assistance de votre fournisseur d'OS.
- Maintenez votre système d'exploitation à jour. Pour en savoir plus, consultez Détails des systèmes d'exploitation.