BOINC scheduling feature I'd like to see

Message boards : Server programs : BOINC scheduling feature I'd like to see
Message board moderation

To post messages, you must log in.

AuthorMessage
Matthew Burch

Send message
Joined: 1 Oct 11
Posts: 17
United States
Message 40503 - Posted: 1 Oct 2011, 19:02:18 UTC

Set up BOINC so that you can designate alternate projects.

Hear me out before you say we already have this, because we don't, or if we do, it's buried.

What I mean is that we can select several priority levels, all of which would use 100% of available CPU time, but we prioritize them so that they cascade.

For instance:

Priority 1 : SETI @ 100%
Priority 2 : Einstein @ 100%
Priority 3 : Climate Prediction @50% & Milky Way at 50%
Priority 4 : All unselected BOINC projects

What would happen is that whenever SETI work is available, SETI work would use 100% of available processor time.

If SETI cannot provide work units, and processors are idle, then BOINC goes looking for Einstein workunits.

If Einstein workunits are available, it pulls them a few at a time, preferrably with completion dates far, far into the future, and works them while it waits for SETI units.

If neither Einstein or SETI units are available, it pulls 50/50 Climate Prediction & Milky Way projects.

If none of the above are available, BOINC pulls work from random projects.


Now, if SETI workunits become available again, BOINC would immediately suspend other work and go back to SETI. If the SETI work queue grows on the local machine to 10 days, then BOINC returns all work units from other projects.

** It might be nice to include an option for BOINC to allow completion of work units from other projects, rather than simply returning them when SETI has filled up it's queue.
ID: 40503 · Report as offensive
Matthew Burch

Send message
Joined: 1 Oct 11
Posts: 17
United States
Message 40513 - Posted: 2 Oct 2011, 15:22:04 UTC - in response to Message 40505.  

BOINC already has something similar to what you want. If you want only project A tasks when project A has them and want project B tasks only when A doesn't have tasks then give A a resource share greater than 0 and give B a resource share of 0. If you're worried that both A and B might not have work simultaneously then give project C a share of 0 as well. It's not likely that all 3 would not have work at the same time.

Projects want their tasks returned in a reasonable amount of time so I highly doubt any project would agree to give you a deadline "far, far in the future" just because you're asking for a fill in task.

To me it seems the scheduler is complicated enough already and there's not much to be gained from your scheme compared to what we already have.


So if I give SETI a 100% share, and Einstein a 0% share, then Einstein would never pull work units unless SETI has none to offer? What happens when SETI has work units again? Does Einstein finish it's active work? Will I actually be causing problems for the Einstein project by holding work units till they expire?
ID: 40513 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15480
Netherlands
Message 40516 - Posted: 2 Oct 2011, 16:41:48 UTC - in response to Message 40513.  

BOINC will do all work before the deadline, so you can only "hold back work" by suspending that work or suspending the project. The Einstein project being the backup project will fill the cache only when Seti is out of work, and because Einstein has a zero resource share, all work for it will be done immediately and in high priority. Even when Seti has work again, the Einstein work will be done first, because of the zero resource share.
ID: 40516 · Report as offensive
Matthew Burch

Send message
Joined: 1 Oct 11
Posts: 17
United States
Message 40518 - Posted: 2 Oct 2011, 16:47:01 UTC - in response to Message 40516.  

BOINC will do all work before the deadline, so you can only "hold back work" by suspending that work or suspending the project. The Einstein project being the backup project will fill the cache only when Seti is out of work, and because Einstein has a zero resource share, all work for it will be done immediately and in high priority. Even when Seti has work again, the Einstein work will be done first, because of the zero resource share.


Wow, ok, I wish I had been able to find this functionality documented clearly. Can I put clear documentation of this feature on the page where the settings are chosen on my wish list? :)
ID: 40518 · Report as offensive
Matthew Burch

Send message
Joined: 1 Oct 11
Posts: 17
United States
Message 40567 - Posted: 6 Oct 2011, 23:15:35 UTC
Last modified: 6 Oct 2011, 23:16:49 UTC

I've enabled Einstein as a 0% share, and it did download some work units when SETI didn't have work. Unfortunately even though it is set at 0% share, it is continuing to start new Einstein work units even though I now have SETI units to work.

Is there a way for me to set it so that all unstarted work units from 0% share projects be returned as soon as the 100% project has work again?

I don't mind finishing a work unit I've started, but when I set a project to 0% I don't want it starting any new work at all if there is startable new work for the 100% project.
ID: 40567 · Report as offensive
rhumbliner

Send message
Joined: 6 Dec 11
Posts: 1
United States
Message 41489 - Posted: 6 Dec 2011, 4:42:39 UTC - in response to Message 40568.  

to solve the "project priority" problem, i wrote a simple script to monitor the boinc process and insure that when one project runs out of work, the next lower project will start accepting work.

for example, if you identify 4 projects that are attached, you can define their priority as such:

Priority 1 : SETI
Priority 2 : Einstein
Priority 3 : Climate Prediction
Priority 4 : Milky Way

if you want only one project at a time active, then seti will occupy all of your cpu cycles until it runs out of work, at which time einstein will be told to start accepting work. if einstein has no work then climate will be told to accept work, and so on. you may specify that two or three, etc, projects should be kept active although i see little point in that. when a higher level project sees work available it begins working on it and the lowest level project is told to stop accepting work which allows it to finish it's current task.

anyone interested in using it can contact me directly.
ID: 41489 · Report as offensive

Message boards : Server programs : BOINC scheduling feature I'd like to see

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.