这不是一个真正的问题,但我猜它可能指向更严重的问题 - 我最近升级到 2.6.36 Linux 内核,但平均负载不会低于 1.0 - 无论我有多少任务,无论 CPU 负载是否为 0%,也无论有没有进程唤醒。
我想知道是什么原因导致了这个问题,以及是否有一些好方法来调试这个“问题”。
我希望它不会导致更严重的问题(例如一些无声的内核部分导致唤醒)。现在它造成的唯一问题可能是 1.0 的“底部”在图表上看起来不太健康。
这可能是由无滴答内核引起的吗?
答案1
我见过一些奇怪的事情在调度程序中停滞,通常是在系统调用中。如果您有非原始内核模块,一定要从那里开始,即使它们包含在内核树中。带有用户空间元素的内核元素是描述这种情况的一种方式,您可能会发现用户空间守护进程挂在外部事件上,这会挂起中间的内核步骤,这会挂起一个向内核提问的程序。
基于网络的文件系统(而不仅仅是通过以太网通信的文件系统)是主要嫌疑人。
检查进程不是处于可运行状态ps -eo user,pid,stat,pcpu,args | grep -v " R"
USER PID STAT %CPU COMMAND daemon 676 Ss 0.0 portmap statd 752 Ss 0.0 rpc.statd -L syslog 872 Sl 0.0 rsyslogd -c4 102 895 Ss 0.0 dbus-daemon --system --fork avahi 934 S 0.0 avahi-daemon: running [faustus.local] daemon 1082 Ss 0.0 atd
您可以从手册页中的这个表中解码状态ps
。
D Uninterruptible sleep (usually IO) R Running or runnable (on run queue) S Interruptible sleep (waiting for an event to complete) T Stopped, either by a job control signal or because it is being traced. W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z Defunct ("zombie") process, terminated but not reaped by its parent. For BSD formats and when the stat keyword is used, additional characters may be displayed: < high-priority (not nice to other users) N low-priority (nice to other users) L has pages locked into memory (for real-time and custom IO) s is a session leader l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) + is in the foreground process group