I was directed here by pepo from the BOINC forums. Anyhow, I had an idea
about the client and its behavior with prioritizing tasks. I don't know if
this is possible with the way BOINC is set up, but the things that would be
cool to see:
1) Prioritize tasks based on deadline...preemptively increase priority on
tasks that with a bit of a time buffer after examining deadline on other
tasks.

For instance: Task #1 will take 2d to complete and has a deadline of 3d.
Task #2 will take 3d to complete and has a deadline of 8d...so the client
should have task #1 run non-stop until completion and then run task #2. An
exception could be if task #1 will definitely not complete on time, but task
#2 has a chance to or will complete if it runs immediately, then the client
could just give up on task #1 and focus on task #2. This type of calculation
can be fine-tuned somewhat by monitoring stats over a period of time on each
project run to see how the computer behaves on average.

2) If the queue is getting full and it has almost reached a maximum work
capacity for the time allotted, even after reporting work units, the client
should throttle getting new tasks until the work queue has emptied out some.
This also could be fine-tuned by past history.

3) Take into account total time in the calculation of maximum work possible
by factoring in competition for GPU resources as well as work units that are
set to use multiple CPUs (like some of the Milkyway units which gobble up
all of them). Additionally, "high priority" work units should not always run
if it is more efficient to run other work units that are due earlier.
(Primegrid often locks processors so other work units won't run and might
pass its deadline even though there may be plenty of time to run them
afterwards.)

In any case, a lot of the projects don't play nice with each other, and I
find myself having to babysit them manually which is lame. Just some ideas.
Sorry my thought processes aren't completely clear and coalesced. Figured
I'd get the general gist out and let the more software
engineery/mathematician types see if it's feasible, desirable, and if so,
the best way to implement them. I guess really what I'm asking is to have a
best fit algorithm added. Or maybe Tetris. :)

 

_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to