2006-09-04 19:29:55

by matthieu castet

[permalink] [raw]
Subject: msleep_interruptible vs msleep

Hi,

What's the difference between msleep_interruptible and msleep ?
If I understand correctly the main difference between msleep and
msleep_interruptible is that msleep_interruptible can return if there is
a pending signal ?

But why if I have a kernel thread that do [1] :

while (true) {
Do some stuff
msleep(1000)
}

the load average is high (near 100%).

and if I use msleep_interruptible the load average is normal.

Does the same applies to wait_event_timeout vs
wait_event_interruptible_timeout ?

Thanks,

Matthieu CASTET


2006-09-04 19:37:42

by Arnd Bergmann

[permalink] [raw]
Subject: Re: msleep_interruptible vs msleep

Am Monday 04 September 2006 21:29 schrieb matthieu castet:
>
> But why if I have a kernel thread that do [1] :
>
> while (true) {
> Do some stuff
> msleep(1000)
> }
>
> the load average is high (near 100%).
>
> and if I use msleep_interruptible the load average is normal.

These are the traditional semantics of incorruptible vs. noninterruptible
sleep. A process that sleep noninterruptible contributes to the load
average but does not consume actual CPU cycles.

I guess you can take that as a hint that the code you're describing
above is a bad thing to do.

> Does the same applies to wait_event_timeout vs
> wait_event_interruptible_timeout ?

yes.

Arnd <><