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
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:16 UTC