Task selection: Earliest Deadline First versus First In First Out

Message boards : Questions and problems : Task selection: Earliest Deadline First versus First In First Out
Message board moderation

To post messages, you must log in.

AuthorMessage
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79848 - Posted: 31 Jul 2017, 3:46:34 UTC

Hi,

I'm running World Community Grid as single project. I use my PC irregularly, from 30 minutes a day to several hours. I often get tasks with short deadlines (3-4 days), which are those that other users didn't finish in time or where results of two or more users didn't match. To accomplish them duly, I suspend all other tasks with later deadlines, so those with short ones will be calculated first. I'm tired of doing this manually, so I looked for a way to set Boinc to act like that.

I found this issue discussed in http://boinc.berkeley.edu/dev/forum_thread.php?id=7275 and would have liked to respond there, but the thread is locked. I learned that Boinc only switches into EDF-Mode (earliest deadline first), when a task is in risk to not complete in time. In my case (and obviously for some others too) EDF would be ideal as standard mode instead of FIFO, but I understand that it doesn't work for users who participate in more than one project and may have deadlines ranging from days to months. Tasks with late deadlines (and maybe huge workload) would get pushed aside by those with earlier ones and maybe started too late. Further, Boinc allows to distribute computing power between projects, but this would be overridden by operating in EDF as standard mode.

So I set Boinc to download no more additional work, it has only up to two tasks in its list at any time (on a dual core cpu). This is not satisfactory, as there is no buffer. If project servers are not available (for maintenance or whatever) when my PC completes a task, it has to wait until they are back operating again to get a new one.


Possible solutions:

- An option at preferences that allows to set EDF-mode manually, either when computing only for a single project or with a warning that distributing computing power between projects will not be possible anymore then

- EDF as general standard mode and application of project share at download: Those which have been calculated for significantly more than their share get no new tasks fetched until others catch up
ID: 79848 · Report as offensive
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79851 - Posted: 31 Jul 2017, 9:22:11 UTC - in response to Message 79850.  

Thanks for your reply, Seke :)

Afaik, if I set Boinc to cache work for 2 days, this means 48 hours workload for each cpu core. So, as soon as I would set this, a lot of tasks would be fetched and I would need my PC be turned on about 5 hours a day to get them done within 10 days (which is the maximum and usual deadline at WCG). But I don't use it that much, there are days on which it runs only for an hour. I calculate for WCG solely with spare cpu power, whenever my computer is turned on anyway. Until yesterday, my client cache was set to 0.1 days, which was about 5 hours of extra work buffered (2.5 hours for each core), which gave me about 1-2 days safety from unavailable project servers. Now, I set the cache to zero, as stated above, because I'm tired of switching Boinc into EDF mode manually for repair tasks with short deadlines.

Boinc seems to be optimised for users who participate in several projects with their machines running 24 hours a day or on some more or less regular schedule, but imo doesn't work well for those running it only with spare cpu time, their machines turned on irregularly, which is actually the idea of WCG, having a huge number of users who donate spare computing time for non-profit research, mainly in health and environmental projects. It costs only slightly more energy expenses to contributors, but helps doing research at much lower costs than if dedicated hardware would be needed, often makes non profit projects possible at all.
ID: 79851 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15480
Netherlands
Message 79853 - Posted: 31 Jul 2017, 11:16:22 UTC - in response to Message 79851.  

Boinc seems to be optimised for users who participate in several projects with their machines running 24 hours a day
I run Seti once in a blue moon for about an hour, sometimes more, to get my RAC above 1 so I can post to their forums. With Seti, deadlines are a month, two months and at times even three months away. Depending on their tasks. This is done so ultra slow devices like slow Android / Raspberry Pi devices can also do valuable work there.

Meaning it isn't BOINC that decides the deadlines, but the project. With WCG's science needing a short turn-around time, because their scientists are waiting for the results, their deadlines are short.
ID: 79853 · Report as offensive
mmonnin

Send message
Joined: 1 Jul 16
Posts: 146
United States
Message 79856 - Posted: 31 Jul 2017, 14:04:40 UTC

If you're computer is only on and BOINC is crunching for 30min to several hours a day I would think zero share at WCG would be best so you only download what is immediately needed and no more. There wouldn't be any short deadline tasks not available to run.
ID: 79856 · Report as offensive
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79871 - Posted: 31 Jul 2017, 18:06:29 UTC - in response to Message 79852.  

The amount of work cached is scaled according the 'OnTime' fraction the client maintains, so if the machine is on average 6 hours a day computing, a 2 day buffer setting will really fetch 0.5 days of true computing time.
I assume this only works if a computing schedule is set, otherwise Boinc doesn't know how many hours a day the machine is turned on. Neither do I, because there is no schedule and little pattern. It depends on how much time I can and want to spend at my PC on each particular day. Likewise, there are weeks my computer is turned on a lot, and at others it isn't. My experience is, that the Boinc client behaves like I stated above, fetching a multiple of work of what I would expect from my average PC usage.


Else, don't watch the client... you're volunteering computing spare time, not volunteering to get ulcers.
Yes, I won't worry too much about it. I found a way to cope with it, not satisfactory, but working. I just thought it a good idea to post about it. If it would maybe lead to an improvement of Boinc and grid computing and solve my little problem in the end I'd be happy, if not, I won't take it too serious ;-)
ID: 79871 · Report as offensive
Richard Haselgrove
Volunteer tester
Help desk expert

Send message
Joined: 5 Oct 06
Posts: 5081
United Kingdom
Message 79873 - Posted: 31 Jul 2017, 18:14:43 UTC - in response to Message 79871.  

It doesn't need a schedule, because it's purely historical - it works by keeping an eye on how often and how long BOINC has been running in the past. Which has one side effect - BOINC is lousy at predicting when you're going on holiday and switching the machines off.
ID: 79873 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15480
Netherlands
Message 79874 - Posted: 31 Jul 2017, 18:18:47 UTC - in response to Message 79871.  

otherwise Boinc doesn't know how many hours a day the machine is turned on.
Yes it does.
In the computer's details you'll find these lines:

Fraction of time BOINC is running
While BOINC is running, fraction of time computer has an Internet connection
While BOINC is running, fraction of time computing is allowed
While is BOINC running, fraction of time GPU computing is allowed

My fraction of time BOINC is running is 1.93%, even if I were to set a very large amount of work to ask, I wouldn't get it as it's counted against that value.

You can find these values as well in the client_state.xml file (no XML editor needed, if you just want to look at the data it'll open in Internet Explorer), in the time_stats section.
ID: 79874 · Report as offensive
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79877 - Posted: 31 Jul 2017, 19:09:34 UTC - in response to Message 79874.  

In the computer's details you'll find these lines:

Fraction of time BOINC is running
While BOINC is running, fraction of time computer has an Internet connection
While BOINC is running, fraction of time computing is allowed
While is BOINC running, fraction of time GPU computing is allowed
I couldn't find these data (running Boinc 7.6.31 on Ubuntu 16.04 LTS) but found client_state.xml:

<time_stats>
    <on_frac>0.435358</on_frac>
    <connected_frac>-1.000000</connected_frac>
    <cpu_and_network_available_frac>0.999927</cpu_and_network_available_frac>
    <active_frac>0.999927</active_frac>
    <gpu_active_frac>0.999927</gpu_active_frac>
ID: 79877 · Report as offensive
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79881 - Posted: 31 Jul 2017, 20:43:04 UTC - in response to Message 79877.  

As I understand these data say that Boinc was running 43.5% equalling about 10.5 hours a day. It's been really a lot past weekend, but there are days too, when I only turn on my computer once or twice to check for emails and maybe weather forecast. So I don't dare to follow Sekes proposal to cache 2 days of work and instead leave this value at zero, so a new task will only be fetched when a work unit is completed and I can be sure that repair jobs with short deadlines will too be delivered in time.

I tried mmonnins suggestion too (set WCG project share to zero), which seems to have the same effect as setting client work cache to zero, so it's an alternative way to do this.
ID: 79881 · Report as offensive
Tom

Send message
Joined: 31 Jul 17
Posts: 6
Germany
Message 79888 - Posted: 31 Jul 2017, 23:54:58 UTC - in response to Message 79886.  
Last modified: 1 Aug 2017, 0:38:44 UTC

Yes, I agree now, it would work, and thanks for this solution that would keep my cpu crunching when project servers are not available. On the other hand, I like being a fast returner and able to do even repair jobs with my settings, despite irregular and at some days very little computing time.

There's a further reason why i don't want my cache to get filled with 20 hours of work. My system is dual boot, I may start it on Windows XP or Ubuntu. At the moment I'm on Linux 100% of the time, but this will change if I start playing some game that needs Windows (usually I'm only at one at a time, stay with it for weeks or months, and playing is what I do mainly at the computer, besides a lot of other things). In this case a filled cache would be ball and chain to me, I would either have to user abort tasks or operate my PC on Ubuntu at times it would be turned off until they are done.

Maybe I could install Boinc on Windows and run it from Ubuntu with Wine, using the same files on Ubuntu that Windows does, but this would be a somewhat intricate and risky construction. I don't want to stumble into problems like needing hours to get it working or running unreliable.


All solutions so far (including the one I prefer and use) are kind of workarounds, which is better than no way to handle an issue, but not satisfactory in one or another respect. What I'm actually searching for is a real solution, something that would work better than Boinc currently does, like I tried to propose in my entry post.
ID: 79888 · Report as offensive

Message boards : Questions and problems : Task selection: Earliest Deadline First versus First In First Out

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.