[opensuse-buildservice] Dispatcher optimization

Hi, One of the major annoyances in a large OBS instance with many architectures and cross links is when the dispatcher decides to put multiple build jobs of the same package (different archs/targets) on the same build host, while plenty of build hosts are sitting idle and doing nothing, this is especially annoying with large packages such as the kernel and Qt. Is this an implementation issue, by design or is there some trick to avoid this? Thanks, Anas-- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

Hi, Having the dispatcher as the topic, what exactly is the dispatch_adjust variable and how can it be configured in BSConfig? Thanks, Anas On 2010-10-04, at 12:27 PM, Anas Nashif wrote:
Hi,
One of the major annoyances in a large OBS instance with many architectures and cross links is when the dispatcher decides to put multiple build jobs of the same package (different archs/targets) on the same build host, while plenty of build hosts are sitting idle and doing nothing, this is especially annoying with large packages such as the kernel and Qt. Is this an implementation issue, by design or is there some trick to avoid this?
Thanks, Anas-- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org
-- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

On Mon, Oct 04, 2010 at 01:37:08PM +0100, Anas Nashif wrote:
Having the dispatcher as the topic, what exactly is the
dispatch_adjust
variable and how can it be configured in BSConfig?
Ours looks like this: our $dispatch_adjust = [ 'openSUSE:Tools' => +10, 'openSUSE:Factory' => +10, 'openSUSE:11.1' => +5, 'openSUSE:11.2' => +5, 'openSUSE:11.3' => +5, 'zypp:' => +5, 'YaST:' => +5, 'home:' => -5, 'Ports:' => -10, ]; Syntax is: project_repository_arch_regexp => adjust The regexp is anchored on the left. Adjust is the priority adjustmant in decibel, i.e. 10 means "build me ten times as often". All entries in dispatch_adjust are matched, if there are multiple matches the adjustments get summed. (Thus the order of the dispatch_adjust entries does not matter.) Note there is also the "$jobsdir/dispatchprios" file, which can be read/written by the source server through /build/_dispatchprios The XML looks like: <dispatchprios> <prio project="ppp" repository="xxx" arch="yyy" adjust="num" /> </dispatchprios> project/repository/arch are optional attributes. They don't support regexp/globbing, only exact string matching. Coolo uses this to adjust the priorities so that projects that are downloaded often get a higher priority. Cheers, Michael. -- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);} -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

Hi, On 2010-10-04, at 2:00 PM, Michael Schroeder wrote:
On Mon, Oct 04, 2010 at 01:37:08PM +0100, Anas Nashif wrote:
Having the dispatcher as the topic, what exactly is the
dispatch_adjust
variable and how can it be configured in BSConfig?
Ours looks like this:
our $dispatch_adjust = [ 'openSUSE:Tools' => +10,
bias? :)
'openSUSE:Factory' => +10, 'openSUSE:11.1' => +5, 'openSUSE:11.2' => +5, 'openSUSE:11.3' => +5, 'zypp:' => +5, 'YaST:' => +5, 'home:' => -5, 'Ports:' => -10, ];
Syntax is:
project_repository_arch_regexp => adjust
The regexp is anchored on the left. Adjust is the priority adjustmant in decibel, i.e. 10 means "build me ten times as often". All entries in dispatch_adjust are matched, if there are multiple matches the adjustments get summed. (Thus the order of the dispatch_adjust entries does not matter.)
Note there is also the "$jobsdir/dispatchprios" file, which can be read/written by the source server through /build/_dispatchprios The XML looks like:
<dispatchprios> <prio project="ppp" repository="xxx" arch="yyy" adjust="num" /> </dispatchprios>
project/repository/arch are optional attributes. They don't support regexp/globbing, only exact string matching.
Coolo uses this to adjust the priorities so that projects that are downloaded often get a higher priority.
Great, thanks. IMO this should go into the config template and in some README somewhere :-) Anas
Cheers, Michael.
-- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
-- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

Am Montag, 4. Oktober 2010, 15:08:51 schrieb Anas Nashif: ...
Coolo uses this to adjust the priorities so that projects that are downloaded often get a higher priority.
Great, thanks. IMO this should go into the config template and in some README somewhere :-)
Actually, this is more or less obsolete, since you can configure the same thing via the api meanwhile: osc api /build/_dispatchprios I consider this the default configuration place for the future, because we can built an admin interface around this. So I consider to remove this from BSConfig template at all atm. bye adrian -- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

On Mon, Oct 04, 2010 at 03:25:50PM +0200, Adrian Schröter wrote:
Am Montag, 4. Oktober 2010, 15:08:51 schrieb Anas Nashif: ...
Coolo uses this to adjust the priorities so that projects that are downloaded often get a higher priority.
Great, thanks. IMO this should go into the config template and in some README somewhere :-)
Actually, this is more or less obsolete, since you can configure the same thing via the api meanwhile:
osc api /build/_dispatchprios
I consider this the default configuration place for the future, because we can built an admin interface around this.
So I consider to remove this from BSConfig template at all atm.
Err, that's not the same thing. No pattern matching. M. -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

Am Montag, 4. Oktober 2010, 13:27:08 schrieb Anas Nashif:
Hi,
One of the major annoyances in a large OBS instance with many architectures and cross links is when the dispatcher decides to put multiple build jobs of the same package (different archs/targets) on the same build host, while plenty of build hosts are sitting idle and doing nothing, this is especially annoying with large packages such as the kernel and Qt. Is this an implementation issue, by design or is there some trick to avoid this?
Right now there is no good way to avoid this. But Jan-Simon just made a proposal for a better dispatcher, which may can take this also in account. -- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org

On Mon, Oct 04, 2010 at 02:41:26PM +0200, Adrian Schröter wrote:
Am Montag, 4. Oktober 2010, 13:27:08 schrieb Anas Nashif:
Hi,
One of the major annoyances in a large OBS instance with many architectures and cross links is when the dispatcher decides to put multiple build jobs of the same package (different archs/targets) on the same build host, while plenty of build hosts are sitting idle and doing nothing, this is especially annoying with large packages such as the kernel and Qt. Is this an implementation issue, by design or is there some trick to avoid this?
Right now there is no good way to avoid this.
Actually the hosts are picked randomly, so I doubt that many build hosts are idle while others get all the jobs. Cheers, Michael. -- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);} -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org
participants (3)
-
Adrian Schröter
-
Anas Nashif
-
Michael Schroeder