WIP: new VCL scheduler feature branch

Jan-Marek Glogowski glogow at fbihome.de
Fri Sep 16 21:49:48 UTC 2016

Hi everybody,

finally I have a working solution, which doesn't instantly show bugs on
Linux with KDE4 (feature/new-vcl-scheduler).

This fixes my mail merge performance problem since the 5.0 merge of idle
job handling.

It completely drops the idea of separated idle and timer handling and
drops a lot of special handling and workarounds for problems in the
original code, but keeps the Idle class for convenience. I tried to list
all the revert commit ids and started to test the original bugs.

Everything is just scheduled by priority and Idles now get a very low
one per default, while they previously had the same one, then timers.
Additionally it drops the 1ms lag for tasks, which actually adds up, as
idle tasks weren't instantly scheduled.

I already fixed the two most obvious busy loop bugs in Writer with
workarounds for the general idle job handler and the statistics
collector. Instead of polling for work I would like to switch these to
be enabled on demand, but that'll definitely take more work. Currently
they are converted to timers, which check for work every few seconds,
then should switch to idle - ok 0ms timeouts, until all work is processed.

I tried to simplify the priority groups to make it easier to select the
correct one. There are still some suspicios HIGHEST ones. I had to guess
the new dependencies from the original priority of the idles, but I'm
quite sure there is some missing stuff. I would like to get some kind of
annotations to be able to build a priority tree of all of them for a
better overview.

It would be great to get feedback from people of all other platforms /
VCL backends.

Thanks for your comments and feedback


P.S. it adds a VCL python GDB script, which can be used to dump the list
of currently scheduled tasks.

P.P.S. naming is sill a mess. Sometimes it's task, sometimes event. The
scheduler class is actually the base class for the timers and idles and
should be renamed Event or Task.

More information about the LibreOffice mailing list