Hello,
I've got a question about OBS scheduling algorithm.
My test project has the following package dependencies structure:
“A”->”AB”->”B”->”A”
“A”->”AA”
“B”->”BB”
Where relation “A”->”AB” means that package “AB” BuildRequires “A”.
So, here we have one cycle: “A”, “AB”, “B” and two packages outside -
“AA” and “BB”.
For the experiments I use OBS-2.7 with one worker.
Every time I get the following building sequence:
“A”, “B”, “AB”, “A”, “AA”, “B”, “BB”, “A”, “AB”, “AA”
Here everything works right - according to the current scheduler algorithm.
But, it seems strange for me that package “AA” is built twice whereas
it’s not part of a cycle.
It looks like a miss-optimization. In my view, it could be reasonable to
build non-cyclic packages only
after cyclic ones. If so, “AA” and “BB” should be built only one time.
In sum, the question is what if we change the scheduler to postpone
building of
non-cyclic packages(that doesn’t belong to any cycle) until cyclical
builds are finished?
Can we get here any build speed-up or there are some corner cases where
this approach is not acceptable?
Thanks.
--
Best regards,
Pavel Kopyl
--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe(a)opensuse.org
To contact the owner, e-mail: opensuse-buildservice+owner(a)opensuse.org