我在RHEL机器上遇到tty子系统的一些问题。从我在日志中看到的,每次生成一个新的控制台(无论是pts还是tty)时,都会生成一些内核oopses。在我看来,那里出现了某种竞争条件。这是堆栈跟踪:
kernel: INFO: task sshd:6338 blocked for more than 120 seconds.
kernel: Tainted: P --------------- 2.6.32-504.el6.x86_64 #1
kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kernel: sshd D 0000000000000000 0 6338 6195 0x00000080
kernel: ffff88035be8d728 0000000000000082 0000000000000000 0000000000000000
kernel: ffff88035be8d7f8 ffffffff8105ca34 00009488ef033e83 ffff88035be8d708
kernel: ffff88035be8d880 0000000109b91c98 ffff881eea341098 ffff88035be8dfd8
kernel: Call Trace:
kernel: [<ffffffff8105ca34>] ? find_busiest_group+0x244/0x9e0
kernel: [<ffffffff8152a8c5>] schedule_timeout+0x215/0x2e0
kernel: [<ffffffff8152a543>] wait_for_common+0x123/0x180
kernel: [<ffffffff81064b90>] ? default_wake_function+0x0/0x20
kernel: [<ffffffff8152a65d>] wait_for_completion+0x1d/0x20
kernel: [<ffffffff81098bf7>] flush_work+0x77/0xc0
kernel: [<ffffffff81098460>] ? wq_barrier_func+0x0/0x20
kernel: [<ffffffff81098e14>] flush_delayed_work+0x54/0x70
kernel: [<ffffffff813392f5>] tty_flush_to_ldisc+0x15/0x20
kernel: [<ffffffff81333cc7>] n_tty_poll+0x67/0x1d0
kernel: [<ffffffff8132f80a>] tty_poll+0x8a/0xa0
kernel: [<ffffffff811a6895>] do_select+0x3c5/0x7c0
kernel: [<ffffffff8149cf18>] ? ip_finish_output+0x148/0x310
kernel: [<ffffffff811a59f0>] ? __pollwait+0x0/0xf0
kernel: [<ffffffff811a5ae0>] ? pollwake+0x0/0x60
kernel: [<ffffffff811a5ae0>] ? pollwake+0x0/0x60
kernel: [<ffffffff811a5ae0>] ? pollwake+0x0/0x60
kernel: [<ffffffff811a5ae0>] ? pollwake+0x0/0x60
kernel: [<ffffffff8152d04b>] ? _spin_unlock_bh+0x1b/0x20
kernel: [<ffffffff8144b835>] ? release_sock+0xe5/0x110
kernel: [<ffffffff814a52cc>] ? tcp_sendmsg+0x73c/0xa20
kernel: [<ffffffff8144a72b>] ? sock_aio_write+0x19b/0x1c0
kernel: [<ffffffff8133158d>] ? tty_wakeup+0x3d/0x80
kernel: [<ffffffff811a6e1a>] core_sys_select+0x18a/0x2c0
kernel: [<ffffffff8109eb00>] ? autoremove_wake_function+0x0/0x40
kernel: [<ffffffff811a71a7>] sys_select+0x47/0x110
kernel: [<ffffffff810e5c87>] ? audit_syscall_entry+0x1d7/0x200
kernel: [<ffffffff810e5a7e>] ? __audit_syscall_exit+0x25e/0x290
kernel: [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
因此,查看最后2个函数调用,似乎任务计划通过schedule_timeout()调用一段时间,之后find_busiest_group尝试平衡该任务生成的负载。它是正确的还是我在这里缺少的东西?
感谢。
答案 0 :(得分:1)
如果有人有兴趣,我向RedHat开了一个案例,似乎问题是关于阵列控制器(hpsa)中的HP固件错误。更多详情:https://access.redhat.com/solutions/1179703
**指我已经查看了bugzilla并发现该bug可能与
有关Smart Array固件版本。
使用以下控制器组合在系统上重现该错误 版本和hpsa模块版本。 (新的hpsa模块版本和旧版本 固件版本)
- kmod-hpsa:3.4.4-1-RH1
- SA固件:3.22
- 控制器:P220i(103c:323b 103c:3355 rev 01)
系统运行新的hpsa模块版本和新的固件版本 没有复制这个错误。
- kmod-hpsa:3.4.4-1-RH1
- SA固件:3.42
- 控制器:P220i(103c:323b 103c:3355 rev 01)
系统运行旧的hpsa模块版本和旧固件版本 也没有复制这个bug。
- kmod-hpsa:3.4.0-1-RH1
- SA固件:3.22
- 控制器:P220i(103c:323b 103c:3355 rev 01)
在我们的例子中,控制器固件版本是3.22,我们正在使用 新的hpsa模块版本3.4.4-1-RH2。
$ cat proc / scsi / scsi | grep -A 5 P220i供应商:惠普产品型号: P220i Rev:3.22类型:RAID
ANSI SCSI修订版:05现在我看到使用旧内核我们正在使用旧版本的hpsa模块 (3.4.0-1-RH1)。有了这个,系统不应该遇到这个错误。
modinfo hpsa filename:/lib/modules/2.6.32-431.23.3.el6.x86_64/kernel/drivers/scsi/hpsa.ko
许可证:GPL版本:3.4.0-1-RH1描述:驱动程序 对于HP Smart Array Controller版本3.4.0-1-RH1作者:
惠普公司**
这是RedHat工程师的陈述。
答案 1 :(得分:0)
从堆栈跟踪看起来像&#34; sshd&#34;进程处于D状态并被阻止超过120秒,因此消息显示在syslog中。可能是进程在被阻塞时正在等待I / O或其他一些资源。
虽然您运行的是RHEL6,但内核版本(2.6.32-504.el6.x86_64)已经很老了。我建议先使用yum upgrade
更新内核。如果您在更新内核后遇到相同的问题,我建议配置kdump
并在问题可重现时获取vmcore。然后,如果您对linux内部结构感到满意,请使用崩溃工具进一步分析核心,或联系OS供应商寻求支持。