Feature requests: tweaks that will make tasks run more smoothly in multi-core machines

Message boards : BOINC client : Feature requests: tweaks that will make tasks run more smoothly in multi-core machines
Message board moderation

To post messages, you must log in.

AuthorMessage
Memto

Send message
Joined: 22 Feb 11
Posts: 4
Finland
Message 36961 - Posted: 22 Feb 2011, 14:11:58 UTC
Last modified: 22 Feb 2011, 14:24:13 UTC

First of all, I'm sorry if this has been implemented already in a newer version (i'm using BOINC 6.10.58). This is also probably platform dependent, for example i hear that the scheduler in Linux is better than the Windows one. I'm using Windows 7, so please read this with that in mind.

I'm suggesting that the tasks in a multi-core machine would sleep at different times instead of all at the same time. This means that it is much more probable that there is one CPU immediately available to process UI events, network communications, media playback or whatever the user is doing with their computer. These things generally do not require much processing power, but when they do need it, they need it right away. If those processes don't receive time then, the media that is playing stutters or the UI seems sluggish. Response time is crucial. To the average user a slow response means that the background computation is making the computer slow, so preferences get adjusted accordingly. To maximize throughput, it is best to be as invisible as possible.

For the same reason, tasks should be started incrementally, not all at once, because a busy hard drive caused by (for example) six tasks loading at the same time produces a really noticeable slow down for the user.

Another way to decrease the impact the computation has on the response time would be to make the busy/idle intervals shorter, or even better, give the user the power to choose an interval that works for his system. A 1s idle phase followed by a 9s busy phase is definitely different from a 0.01s idle phase followed by a 0.09s busy phase, even if both consume 90% of the processing power.
ID: 36961 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15481
Netherlands
Message 36964 - Posted: 22 Feb 2011, 15:19:25 UTC - in response to Message 36961.  

Not much different then than the request made here and that's already been answered by the developers in Use at most... for CPU and GPU.
ID: 36964 · Report as offensive
Memto

Send message
Joined: 22 Feb 11
Posts: 4
Finland
Message 36995 - Posted: 24 Feb 2011, 9:23:18 UTC

To me this is an entirely different matter. I did do some searching, you know, and only then decided to post. I'm not proposing that some % of the cores to be constantly not in use. I am saying that we should use the cores in a more sensible manner that should have a lesser effect on the overall usability of the system. We should do this even if we never get the other feature. Having one core constantly idle would probably achieve a similar improvement on the response time, but for most systems it would be an overkill and a waste of CPU power.
ID: 36995 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15481
Netherlands
Message 36997 - Posted: 24 Feb 2011, 10:04:50 UTC - in response to Message 36995.  
Last modified: 24 Feb 2011, 10:06:03 UTC

I must say, as a personal matter, that I have never ever had any slowdowns while running BOINC together with other programs, unless I was using the GPU as well. That with the first BOINC versions in 2003, ranging to the present day and latest beta version, on hardware going from Pentium 4s to the present i3, running Windows 2000, XP and 7, plus Linux (Sabayon and Mint).

So I don't really see what is causing all these (perceived?) slowdowns for people. Yet, if you then know of the 'leave one core free' workaround, why not use it? Have we forgotten that BOINC is a program that uses the excess CPU cycles that otherwise go lost, to do science with? There is no requirement to run it 24/7 at 100% full power on all possible hardware. There has never been, there never will be. So why is there this deep-rooted need for adjustments to make BOINC work flawlessly while the computer is in use?

Its default setting is to be used when the computer is otherwise idle. Any slowdowns "the average user" will then find are due to other causes, as BOINC will have suspended at the time the user started fiddling with the mouse. Or due to the "more than advanced user" having changed the preferences in which BOINC runs on that machine.
ID: 36997 · Report as offensive
Memto

Send message
Joined: 22 Feb 11
Posts: 4
Finland
Message 36998 - Posted: 24 Feb 2011, 12:08:23 UTC - in response to Message 36997.  

The project that mainly causes slowdowns for me has uncommonly high disk usage, even during computation, not only at startup. I'm guessing that several threads trying to access the disk at the same time might contribute to the delays. If the threads were sleeping at different times, their disk access should also happen at different times.

You are right about the goal being using excess computing power, not all of it. Obviously people will find preferences that do not hinder their normal usage. However, I believe that this feature would allow people to dedicate more processor time to their projects before they find it hindering the performance of their system.
ID: 36998 · Report as offensive
Memto

Send message
Joined: 22 Feb 11
Posts: 4
Finland
Message 37127 - Posted: 9 Mar 2011, 3:40:57 UTC - in response to Message 36999.  

Well, using third party applications (like the ThreadMasterGUI) Sekerob is using will always be an option. However, one should not be needing such things if BOINC is to be "complete" in some way.

I still feel that there has not been a compelling argument as to why this idea is not worth implementing. Even if some people somewhere will not be reaping benefits from this feature, some other people will. Also I feel that it is simply good practice to try to be as "polite" as possible when your code is running in a multi-tasking environment.
One more argument: Scheduling is necessarily a cooperative effort between the applications and the OS. One cannot expect that the OS is capable of doing it in isolation, without input from applications. Similarly, because how arbitrary the applications that will be running in the system are, we cannot expect that all applications are going to just "play nice" and initiate a context switch themselves.
ID: 37127 · Report as offensive

Message boards : BOINC client : Feature requests: tweaks that will make tasks run more smoothly in multi-core machines

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.