Menu

#7 100% CPU usage

Other
open
nobody
None
5
2009-08-31
2009-08-31
Anonymous
No

This is gizmod 3.4 (package gizmod-3.4-0ubuntu1) on Ubuntu 9.04 with kernel 2.6.31 (package linux-image-2.6.31-020631rc5-generic) i686. gizmod runs and operates fine, but consumes between 80 and 100% of the CPU. strace, for what it is worth, reports a constant stream of these:

poll([{fd=3, events=POLLIN|POLLOUT}, {fd=0, events=POLLIN|POLLOUT}, {fd=4, events=POLLIN|POLLOUT}, {fd=5, events=POLLIN|POLLOUT}, {fd=6, events=POLLIN|POLLOUT}, {fd=7, events=POLLIN|POLLOUT}, {fd=8, events=POLLIN|POLLOUT}, {fd=9, events=POLLIN|POLLOUT}, {fd=10, events=POLLIN|POLLOUT}, {fd=11, events=POLLIN|POLLOUT}, {fd=12, events=POLLIN|POLLOUT}, {fd=13, events=POLLIN|POLLOUT}, {fd=14, events=POLLIN|POLLOUT}], 13, 1000^C) = 1 ([{fd=0, revents=POLLOUT}])

so it looks like gizmod is just busy polling.

Discussion

  • Panther

    Panther - 2010-12-04

    I just recently got this problem, when I upgraded my Gentoo from kernel 2.6.35 to 2.6.36. Apparently they removed CONFIG_INOTIFY from kernel options in 2.6.36.

    Now I have the same problem as the OP, however I'm not getting that output, I have version 3.5 though. With verbosity 5 and debug mode on, I just get an infinite amount of these:
    Processing File Events...
    Processing File Events...
    and CPU usage is 100%.

    I think as OP does that gizmod is busy polling. In my case because CONFIG_INOTIFY has been removed from kernel options.

    CONFIG_INOTIFY_USER is still in the kernel. What actually is the replacement for inotify? I figure it replaced dnotify but what makes inotify obsolete, or are things moving to user space or something? Any way to make gizmod compatible? Is this even the reason? :)

     
  • arek

    arek - 2011-04-09

    Hi, i had that problem too since upgrading to 2.6.36.
    The following Hack solves it for me:

    --- ./libH/FileEventWatcher.cpp 2011-03-18 23:16:40.557245002 +0100
    +++ gizmod-3.5/libH/FileEventWatcher.cpp 2008-11-09 19:18:13.000000000 +0100
    @@ -231,7 +231,7 @@
    break;
    case WATCH_INOUT:
    flags = O_RDWR;
    - events = POLLIN | POLLOUT;
    + events = POLLIN;// | POLLOUT;
    ModeString = "Read / Write";
    break;
    case WATCH_INVALID:

     
  • Panther

    Panther - 2011-04-10

    Thanks, that hack seems to work here, too!

     
  • Markus Roeckelein

    Hi finnpanther,

    is this hack already the final solution, or are you still looking for something different? Do you know kernel option CONFIG_FANOTIFY? I think, this the replacement for CONFIG_INOTIFY. I recently read an article about this in the German c't magazine. Obviously fanotify provides more possibilites than inotify.

     
  • Panther

    Panther - 2012-04-20

    Hi mhr1965,

    thanks for the suggestion, I might check it out the next time I'm compiling the kernel. Indeed I seem to have FANOTIFY not set. However, it's been a year now since I applied the hack and I've had zero problems with gizmod after that, so I guess you could call it final solution, at least for me :)

     

Log in to post a comment.