Comment fonctionne Linux NMI watchdog?

maintenant j'ai un problème avec Linux NMI Watchdog. Je veux utiliser Linux NMI watchdog pour détecter et récupérer OS hang. Donc j'ajoute "nmi_watchdog=1" à grub.cfg. Et puis vérifier le / proc / interruption, NMI ont été déclenchés par seconde. Mais après que j'ai chargé un module avec deadlock (double acquisition spinlock), le système ont été pendu totalement, et rien ne se produit(jamais de panique!). On dirait que le chien de garde du nmi n'a pas fonctionné!

puis j'ai lu le Documantation / nmi_watchdog.txt, il dit:

sachez que lors de L'utilisation de L'APIC local, la fréquence des interruptions de L'IMN il génère, dépend de la charge du système. The local APIC NMI watchdog, manque une meilleure source, utilise le "cycles unhalted" de l'événement.

Quel est le "cycles unhalted" de l'événement?

Il ajouté

mais si votre système est bloqué sur autre chose que le processeur "hlt" instruction, Le chien de garde se déclenchera dès que les cycles unhalted " événement se produira à chaque tic-tac de l'horloge...Si il se bloque sur "hlt", alors vous n'avez pas de chance -- l'événement ne se produira pas du tout et le chien de garde ne déclencheur.

il semble que ce chien de garde ne se déclenche pas si le processeur exécute l'instruction "hlt", alors je cherche " hlt "dans"Intel ® 64 et IA-32 Architectures Manuel de développement Logiciel, le volumn 2A", décrit comme suit:

arrête l'exécution de l'instruction et place le processeur dans un état d'interruption. Une interruption activée (y compris NMI et SMI), une exception de BINIT # signal, le INIT # signal, ou le RESET# signal resume exécution.

Puis j'ai perdu...

Ma question est:

  • Comment est-ce que Linux nmi watchdog fonctionne?
  • Qui déclencher le nmi?

mon OS est Ubuntn 10.04 LTS, Linux-2.6.32.21, CPU Pentium 4 Double-noyau 3.20 GHz.

Je n'ai pas lu tout le code source sur NMI watchdog(pas le temps), si Je ne pouvais pas comprendre comment NMI watchdog fonctionne, je veux utiliser controlling performance monitoring counterinterrup et interruption de l'inter-processeur(fourni par L'APIC) pour envoyer NMI au lieu de NMI watchdog.

quelqu'un Pourrait-il m'aider? Grâce.

22
demandé sur silverbullettt 2012-03-26 06:35:24

2 réponses

La réponse dépend de votre matériel.

les interruptions Non masquables (INM) peuvent être déclenchées de deux façons: 1) lorsque le noyau atteint un État d'arrêt qui ne peut pas être interrompu par une autre méthode, et 2) par le matériel -- en utilisant un bouton INM.

Sur le front de certains serveurs Dell, par exemple, vous verrez un petit cercle avec une ligne en zigzag à l'intérieur. C'est le laboratoire national de métrologie symbole. A proximité il y a un trou. Insérez une broche pour déclencher l'interruption. Si votre noyau est construit pour le soutenir, cela va décharger une trace de panique du noyau sur la console, puis redémarrer le système.

cela peut se produire très rapidement. Donc, si vous n'avez pas de console attaché à enregistrer la sortie dans un fichier, cela pourrait ressembler à seulement un redémarrage.

5
répondu Courtney Schwartz 2013-07-18 23:17:14

comme je le sais, nmi_watchdog ne se déclencherait que pour non interruptible se bloque. J'ai trouvé un exemple de code par google: http://oslearn.blogspot.in/2011/04/use-nmi-watchdog.html

si votre Blocage n'est pas non interruptible, vous pouvez essayer enable sysRq pour déclencher une trace (Alt-printscreen-t) ou un crash (Alt-printscreen-C) pour obtenir plus d'informations.

4
répondu Johnlcf 2012-04-16 02:19:30