# Mailinglist Archive: opensuse-buildservice (96 mails)

< Previous | Next > |

##### [opensuse-buildservice] Optimization of OBS scheduler

- From: Kopyl Pavel <p.kopyl@xxxxxxxxxxx>
- Date: Thu, 27 Oct 2016 15:09:46 +0300
- Message-id: <7df92fad-c582-55b9-8416-6620706b89f1@samsung.com>

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@xxxxxxxxxxxx

To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

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@xxxxxxxxxxxx

To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous | Next > |