idprio(1) broken in recent -current

Peter Jeremy peterjeremy at optushome.com.au
Sat Aug 25 04:33:37 PDT 2007


On 2007-Aug-24 05:23:22 +1000, Peter Jeremy <peter at turion.vk2pj.dyndns.org> wrote:
>boinc_client is supposed to write a watchdog flag in a shared SysV SHM
>block every second.  The setiathome process regularly polls the SHM
>and if it doesn't see the watchdog for 31 seconds, it will abort.
>boinc_client basically sits in a loop and uses select() timeouts.
>I wrote a program to monitor the SHM and it shows that SHM is not
>being updated.
>
>It looks like the kernel isn't cleanly handling the situation where
>there are multiple idprio processes.  I will try some more experimenting
>this evening.

Sorry for the delay.  The select() in boinc_client is not timing out
and so isn't returning until the child process dies.  When I 'nice'
boinc_client, 'ps' shows is waiting in 'select' - which is what I
would expect.  When I 'idprio' it, 'ps' shows it remaining running,
though it is non-responsive.

The setiathome process is deliberately allowing context switches (by
calling usleep() regularly).  It looks like a recent scheduler change
means that multiple idprio processes don't round-robin but instead
re-schedules the previously running process.

I'm running SCHED_4BSD.

Pity I don't have dtrace...

-- 
Peter Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070825/2afe4c58/attachment.pgp


More information about the freebsd-current mailing list