Manuel de suivi dynamique Solaris

Sondes

Les sondes sched sont décrites dans le Tableau 26–1.

Tableau 26–1 Sondes sched

Sonder 

Description 

change-pri

Sonde se déclenchant si la priorité d'un thread va être changée. lwpsinfo_t du thread est indiqué par args[0]. La priorité actuelle du thread est indiquée dans le champ pr_pri de cette structure. psinfo_t du processus contenant le thread est indiqué par args[1]. La nouvelle priorité du thread est indiquée dans args[2].

dequeue

Sonde se déclenchant immédiatement avant qu'un thread exécutable ne soit retiré d'une file d'attente d'exécution. lwpsinfo_t du thread retiré de la file d'attente est indiqué par args[0]. psinfo_t du processus contenant le thread est indiqué par args[1]. cpuinfo_t de la CPU à partir de laquelle le thread est retiré de la file d'attente est indiqué par args[2]. Si le thread est retiré d'une file d'attente d'exécution non associée à une CPU particulière, l'élément cpu_id de cette structure sera -1.

enqueue

Sonde se déclenchant immédiatement avant qu'un thread exécutable ne soit placé dans une file d'attente d'exécution. lwpsinfo_t du thread placé dans une file d'attente est indiqué par args[0]. psinfo_t du processus contenant le thread est indiqué par args[1]. cpuinfo_t de la CPU pour laquelle le thread est placé dans une file d'attente est indiqué par args[2]. Si le thread est placé dans une file d'attente d'exécution non associée à une CPU particulière, l'élément cpu_id de cette structure sera -1. La valeur args[3] est un booléen indiquant si le thread sera placé en tête de la file d'attente. La valeur n'est pas de zéro si le thread doit être placé en tête de la file d'attente, et de zéro s'il doit l'être à la fin.

off-cpu

Sonde se déclenchant lorsque la CPU actuelle va terminer l'exécution d'un thread. La variable curcpu indique la CPU en cours. La variable curlwpsinfo indique le thread dont l'exécution se termine. La variable curpsinfo indique le processus contenant le thread actuel. La structure lwpsinfo_t du thread que la CPU actuelle n'exécutera pas est indiquée par args[0] . psinfo_t du processus contenant le thread suivant est indiqué par args[1].

on-cpu

Sonde se déclenchant lorsqu'une CPU vient de commencer l'exécution d'un thread. La variable curcpu indique la CPU en cours. La variable curlwpsinfo indique le thread dont l'exécution commence. La variable curpsinfo indique le processus contenant le thread actuel.

preempt

Sonde se déclenchant immédiatement après la préemption du thread actuel. Après le déclenchement de cette sonde, le thread actuel sélectionnera un thread à exécuter et la sonde off-cpu se déclenchera pour le thread actuel. Dans certains cas, un thread sur une CPU sera déplacé, mais le thread concerné sera exécuté simultanément sur une autre CPU. Dans cette situation, la sonde preempt se déclenche, mais le dispatcheur n'est pas en mesure de trouver un thread de priorité supérieure à exécuter et la sonde remain-cpu se déclenche à la place de la sonde off-cpu.

remain-cpu

Sonde se déclenchant en cas de décision de planification, alors que le dispatcheur a choisi de poursuivre l'exécution du thread actuel. La variable curcpu indique la CPU en cours. La variable curlwpsinfo indique le thread dont l'exécution commence. La variable curpsinfo indique le processus contenant le thread actuel.

schedctl-nopreempt

Sonde se déclenchant lorsqu'un thread est déplacé puis replacé en tête de la file d'attente en raison d'une demande de contrôle de préemption. Pour plus d'informations sur le contrôle de préemption, reportez-vous à schedctl_init(3C) Comme pour preempt, off-cpu ou remain-cpu se déclenche après schedctl-nopreempt. schedctl-nopreempt représentant un replacement du thread actuel en tête de la file d'attente, remain-cpu est plus susceptible de se déclencher après schedctl-nopreempt que off-cpu. lwpsinfo_t du thread déplacé est indiqué par args[0]. psinfo_t du processus contenant le thread est indiqué par args[1].

schedctl-preempt

Sonde se déclenchant lorsqu'un thread utilisant le contrôle de préemption n'est pas déplacé et replacé à la fin de la file d'attente d'exécution. Pour plus d'informations sur le contrôle de préemption, reportez-vous à schedctl_init(3C) Comme pour preempt, off-cpu ou remain-cpu se déclenche après schedctl-preempt. Comme preempt (et contrairement à schedctl-nopreempt), schedctl-preempt représente un replacement du thread actuel à la fin de la file d'attente d'exécution. Par conséquent, off-cpu est plus susceptible de se déclencher après schedctl-preempt que remain-cpu. lwpsinfo_t du thread déplacé est indiqué par args[0]. psinfo_t du processus contenant le thread est indiqué par args[1].

schedctl-yield

Sonde se déclenchant lorsqu'un thread dont le contrôle de préemption est activé et le code exécuté a prolongé artificiellement la tranche de temps pour amener la CPU vers d'autres threads. 

sleep

Sonde se déclenchant immédiatement avant que le thread actuel ne sommeille sur un objet de synchronisation. Le type de l'objet de synchronisation est contenu dans l'élément pr_stype de lwpsinfo_t indiqué par curlwpsinfo . L'adresse de l'objet de synchronisation est contenue dans l'élément pr_wchan de lwpsinfo_t indiqué par curlwpsinfo. La signification de cette adresse est un détail privé de mise en œuvre, mais la valeur d'adresse peut être considérée comme un jeton unique de l'objet de synchronisation.

surrender

Sonde se déclenchant lorsqu'une CPU a été amenée, par une autre CPU, à prendre une décision de planification – souvent car un thread de priorité supérieure est devenu exécutable. 

tick

Sonde se déclenchant dans le cadre d'une comptabilisation des tops d'horloge. Dans la comptabilisation des tops d'horloge, celle de la CPU est exécutée en déterminant les threads et processus en cours d'exécution en cas d'interruption à intervalle fixe. lwpsinfo_t correspondant au thread, auquel une heure CPU est affectée, est indiqué par args[0]. psinfo_t correspondant au processus contenant le thread est indiqué par args[1] .

wakeup

Sonde se déclenchant immédiatement avant que le thread actuel ne réveille un thread en sommeil sur un objet de synchronisation. lwpsinfo_t du thread en sommeil est indiqué par args[0]. psinfo_t du processus contenant le thread en sommeil est indiqué par args[1]. Le type de l'objet de synchronisation est contenu dans l'élément pr_stype de lwpsinfo_t du thread en sommeil. L'adresse de l'objet de synchronisation est contenue dans l'élément pr_wchan de lwpsinfo_t du thread en sommeil. La signification de cette adresse est un détail privé de mise en œuvre, mais la valeur d'adresse peut être considérée comme un jeton unique de l'objet de synchronisation.