linuxシステムにおける一次ユーザ状態プロセスのデッドサイクル事例の分析プロセスと解決方法
ビジネスプロセス(ユーザ状態マルチスレッドプログラム)が停止し、オペレーティングシステムの反応が鈍く、システムログに異常はありません。プロセスのカーネル状態スタックから見ると、すべてのスレッドがカーネル状態の次のスタックプロセスに詰まっているように見えます。
[root@vmc116 ~]# cat /proc/27007/task/11825/stack
カーネルスタックから見ると、すべてのプロセスがretint_にブロックされています。carefulでは、これは中断戻りプロセスの流れであり、コード(アセンブリ)は以下の通りです。
entry_64.S
コードのコピーret_from_intr:
DISABLE_INTERRUPTS(CLBR_NONE)
TRACE_IRQS_OFFdecl PER_CPU_VAR(irq_count)
/* Restore saved previous stack */popq %rsi
CFI_DEF_CFA rsi,SS+8-RBP /* reg/off reset after def_cfa_expr */ leaq ARGOFFSET-RBP(%rsi), %rspCFI_DEF_CFA_REGISTER rsp