[haiku-development] Re: Scheduler algorithm improvements

  • From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 09 Nov 2009 16:32:41 +0100

Mikhail Panasyuk <otoko@xxxxxxxxx> wrote:
> There is something wrong with the way you, Haiku developers, define 
> priorities
> for some system services and apps. Critical for overall performance 
> and
> responsiveness threads many other threads depend on have too low 
> priorities.

You're actually right here: the reason is that the normal thread 
priority is indeed used for CPU heavy tasks. An application developer 
should normally choose B_LOW_PRIORITY for those, but I guess we 
shouldn't rely on that, especially with CLI apps.
IOW it makes sense to elevate the priority of important system threads; 
I've now done so in r33961.

An alternative approach would be to automatically give worker threads a 
lower priority.

> + most other kernel_team threads with 10 priority in case there are 
> _lots_ of
> 10-priority tasks (see PS. section for details why)

I haven't changed those yet; some needs a bit more thinking.

> - MediaPlayer:
> 1. media extractor thread
> 2. event queue runner
> 3. playback manager

I haven't changed those either, since I guess Stippi (or someone else) 
will have a better understanding about which thread should get a higher 
priority and why.

> - input_server:
> 1. input_server
> Give it at least 11 if you want fast menus' and buttons' interaction 
> with mouse
> and redraw.

That one was indeed much too low, although the description doesn't 
really fit, as the complete event queue was separated from that one.

> - Tracker:
> 1. Tracker
> 
> At least 11 if you want fast Desktop redraw and FS-navigation. Slow 
> desktop
> redraw affects MediaPlayer.

Hardly imaginable - looking at what the Tracker thread does, it's almost 
nothing.

> - app_server:
> 1. picasso
> 2. screen manager

Those two don't really do a lot, but you're right, giving them a higher 
priority doesn't hurt either.

> There is one important thing about BeOS/Haiku schedulers every 
> developer
> must know.
[...]

Indeed, but that's also mostly neglectable because Haiku is no server 
OS - you just won't have dozens of worker threads running all day.

Bye,
   Axel.


Other related posts: