2014-10-29 113 views
1

我在RHEL机器上有tty子系统的问题。根据我在日志中看到的内容,每次生成一个新的控制台(不管是pts还是tty)时都会生成一些内核副本。对我而言,似乎在那里发生了某种竞争条件。这里是堆栈跟踪:内核挂tty子系统

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试图平衡负载,其由该任务生成。这是正确的还是我在这里错过的东西?

谢谢。

回答

1

如果有人有兴趣,我打开了一个案例给RedHat,它似乎是关于阵列控制器(hpsa)中的HP固件错误的问题。更多细节:https://access.redhat.com/solutions/1179703

**>我已经查阅了Bugzilla看看该漏洞可被拴在

智能阵列固件版本。

该错误被复制到系统中,下面的控制器组合为 版本和hpsa模块版本。 (新HPSA模块版本和旧 固件版本)

  • 的kmod-HPSA:3.4.4-1-RH1
  • SA固件:3.22
  • 控制器:P220i(103C:323B 103C:3355修订版01 )

系统运行新的hpsa模块版本和新的固件版本 没有转载此错误。

  • 的kmod-HPSA:3.4.4-1-RH1
  • SA固件:3.42
  • 控制器:P220i(103C:323B 103C:3355修订版01)

运行旧的系统hpsa模块版本和旧固件版本 也没有转载此错误。

  • 的kmod-HPSA:3.4.0-1-RH1
  • SA固件:3。22
  • 控制器:P220i(103C:323B 103C:3355修订版01)

在我们的情况下,控制器的固件版本是3.22,我们使用 新HPSA模块版本3.4.4-1-RH2。

$ cat proc/scsi/scsi | grep的-A 5 P220i厂商:HP型号: P220i版本:3.22类型:RAID
ANSI SCSI修订版:05

现在我看到,随着旧的核心,我们正在使用旧版本的HPSA模块 的(3.4.0- 1-RH1)。有了这个系统不应该遇到这个错误。

modinfo命令HPSA文件名:/lib/modules/2.6.32-431.23.3.el6.x86_64/kernel/drivers/scsi/hpsa.ko

许可证:GPL版本:3.4.0-1-RH1说明:驱动 惠普智能阵列控制器版本3.4.0-1-RH1作者:
Hewlett-Packard公司**

这是一个红帽工程师的说法。

0

从堆栈跟踪看起来像“sshd”进程处于D状态并且阻塞超过120秒,因此这些消息显示在系统日志中。它有可能是该进程正在等待I/O或一些其他资源被阻止。

尽管您运行的是RHEL6,但内核版本(2.6.32-504.el6.x86_64)还是比较陈旧的。我建议先使用yum upgrade更新内核。如果在更新内核后面临同样的问题,那么我建议配置kdump并在问题可重现时获取vmcore。然后,如果您对Linux内部感到满意,请使用崩溃工具进一步分析核心,或与OS供应商联系以获得支持。