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
Jan-Marek
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.
Context
- WIP: new VCL scheduler feature branch · Jan-Marek Glogowski
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.