我有一份处于可中断睡眠状态(S)的工作,挂了几个小时。
- 不能使用 gdb(附加到 PID 时 gdb 会挂起)。
- 无法使用 strace,strace 将恢复挂起的工作 =(
WCHAN 字段显示 PID 正在等待 ptlrpc。网上搜索了一下,貌似这是个光彩操作。打印文件还显示该程序卡在从 lustre 读取数据。关于如何进行诊断的任何想法或建议?或者挂起发生的可能原因?
您可以检查/proc/$PID/stack
客户端以查看整个进程堆栈,这将为您提供有关进程正在做什么的更多信息(ptlrpc_set_wait()
只是通用的“等待 RPC 完成”功能)。
也就是说,更有用的是检查内核控制台错误消息(dmesg
和/或/var/log/messages
)以查看发生了什么。当出现问题时,Lustre 绝对不会羞于记录错误。
这很可能表明客户端正在服务器上等待完成 RPC,因此您还必须检查dmesg
和/或/var/log/messages
查看服务器上的问题。有几个现有的文档详细介绍了如何调试 Lustre 问题:
此时,您可能最好在 https://jira.whamcloud,com/ 上检查现有的 Lustre 错误,以搜索报告的第一条错误消息,或者可能是堆栈跟踪。很有可能(取决于遇到的错误)已经有可用的修复程序,升级到最新的维护版本(当前为 2.12.7)或应用补丁(如果最近修复了错误)将唯一你的问题。