While the system is stable and responsive under load a really idle
system leads to processes hanging on e.g. (strace output):
open("/var/log/nw.routes", O_WRONLY|O_CREAT|O_TRUNC, 0666
(note: the ") = 10" is missing).
The load goes to 1 and cpu usage is 100%. SysRq-P shows:
...: EIP: 0010:[schedule+421/640] EFLAGS: 00000206
...: EAX: 00000027 EBX: c3ca4000 ECX: c38d0000 EDX: 00000000
...: ESI: c01e2000 EDI: 00000000 EBP: c3ca5f10 DS: 0018 ES: 0018
...: CR0: 8005003b CR2: 4000d000 CR3: 01900000
Note that the address is schedule+421 almost all the time. Sometimes
it's schedule+406 or schedule+412.
This resolves to the following sourcecode:
./kernel/sched.c:
static inline int goodness (struct task_struct * prev,
[...]
if (p->policy != SCHED_OTHER) { <---- schedule+421
weight = 1000 + p->rt_priority;
goto out;
The process stays hung until another process tries to access the disk.
Accessing the cache / buffers isn't sufficient.
Peter
-- _ x ___ / \_/_\_ /,--' p.steiner@t-online.de (Peter Steiner) \/>'~~~~// \_____/ signature V0.2 alpha- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/