Re: [2.6.34-git8][regression] massive polling problems with udevdand other processes

From: walt
Date: Sun May 23 2010 - 14:18:45 EST


On 05/22/2010 03:59 PM, Eric Paris wrote:
On Sat, May 22, 2010 at 4:44 PM, Al Viro<viro@xxxxxxxxxxxxxxxxxx> wrote:
On Sat, May 22, 2010 at 01:21:19PM -0700, walt wrote:
On 05/22/2010 12:35 PM, Shawn Starr wrote:
Just built today's snapshot from linus's tree and have problems with udev
using 100% cpu and KDE processes also pegging cpus.

This is with Fedora 13 + snapshot kernel from git.

Anyone else noticing this?

Yes, just bisected it to this:

commit a7cf4145bb86aaf85d4d4d29a69b50b688e2e49d
Author: Eric Paris<eparis@>
Date: Fri May 14 11:44:10 2010 -0400

anon_inode: set S_IFREG on the anon_inode

Cute... Frankly, I'd be fine with just reverting that one and teaching
selinux to STFU. However, I wonder what specifically is getting polled.
Which anon_inode users?

On my system udev has both inotify and signalfd open. He's asking for
more of the strace. If the ONLY thing that udev is doing is polling
with no other syscalls at all it's a udev problem (although maybe one
where we have to maintain bug for bug compatibility.

Can you show us a more lines of strace context and the output of ls -l
/proc/$PID/fd ? That should give us a better idea what udev is doing
and which anon_inode we are dealing with.

strace is just very rapidly printing out thousands of identical lines like
the one I posted earlier. Here is a new run:

$head /tmp/strace
ioctl(6, FIONREAD, [0]) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 5, -1) = 1 ([{fd=6, revents=POLLIN}])
ioctl(6, FIONREAD, [0]) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 5, -1) = 1 ([{fd=6, revents=POLLIN}])
ioctl(6, FIONREAD, [0]) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 5, -1) = 1 ([{fd=6, revents=POLLIN}])
ioctl(6, FIONREAD, [0]) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 5, -1) = 1 ([{fd=6, revents=POLLIN}])
ioctl(6, FIONREAD, [0]) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 5, -1) = 1 ([{fd=6, revents=POLLIN}])

Here is the fd listing for the udevd process:
$cat /tmp/fd
lrwx------ 1 root root 64 2010-05-23 08:38 0 -> /dev/null
lrwx------ 1 root root 64 2010-05-23 08:38 1 -> /dev/null
lrwx------ 1 root root 64 2010-05-23 08:38 2 -> /dev/null
lrwx------ 1 root root 64 2010-05-23 08:38 3 -> /dev/.udev/queue.bin
lrwx------ 1 root root 64 2010-05-23 08:38 4 -> socket:[274]
lrwx------ 1 root root 64 2010-05-23 08:38 5 -> socket:[275]
lr-x------ 1 root root 64 2010-05-23 08:38 6 -> anon_inode:inotify
lrwx------ 1 root root 64 2010-05-23 08:38 7 -> anon_inode:[signalfd]
lrwx------ 1 root root 64 2010-05-23 08:38 8 -> socket:[276]
lrwx------ 1 root root 64 2010-05-23 08:38 9 -> socket:[277]



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/