sysrq key是一组kernel在任何时候都可以响应的组合热键。
在嵌入式设备上我们一般没法使用组合按键,而是通过访问proc文件来发送command给kernel。
配置
sysrq的enable需要配置Magic SysRq key (CONFIG_MAGIC_SYSRQ)。
/proc/sysrq-trigger
操作该目录来触发对应的功能。
/proc/sys/kernel/sysrq
该目录的值配置了sysrq支持的command情况。value 0表明sysrq被disable,不支持任何command。value 1表明支持所有的command,这个是默认值。
默认值通过CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE选项来配置。
常用的command
'h' - Will dump current memory info to your console.
print帮助。
'm' - Will dump current memory info to your console.
dump系统的memory状况。
'l' - Shows a stack backtrace for all active CPUs.
打印所有在cpu上正在运行的task的stack,但是没有直接的信息表明运行的是哪个task,只能作为一个参考。
'w' - Dumps tasks that are in uninterruptable (blocked) state.
打印处于TASK_UNINTERRUPTIBLE状态的进程。
uninterruptable状态的进程不能响应外部的信号(中断),比较常见的是进程在等待IO的时候,会处于这个状态。
block state的进程,并不能说明这个进程出现了问题,这只是一个状态而已。当然如果这个进程长时间处于block state,那需要关注。