Improving BOINC desktop experience (performance wise)

Message boards : BOINC Manager : Improving BOINC desktop experience (performance wise)
Message board moderation

To post messages, you must log in.

1 · 2 · Next

AuthorMessage
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15740 - Posted: 10 Mar 2008, 8:44:10 UTC

Hi,

I've been using BOINC for a few months now on a few desktop machines running Windows (XP/Vista). Long story short - despite having BOINC and the crunchers run with 'idle' priority, they certainly do affect the responsiveness and performance of the system. For instance, when viewing a video clip (especially a more demanding HD one), you can definitely see that video becomes slightly choppy, or significantly more choppy if it's a slower machine.

I do have two suggestions that would enable me (and I believe many others) to let BOINC use many more of my system resources:

1. With the growing number of cores on CPUs, it would be great if I could specify the number of cores/CPUs to use in case the computer's in use. I'm pretty sure that if BOINC could automatically reduce the number of cores it uses so that one core is left completely idle, it would completely take care of the responsiveness issue and smooth video playback.

2. Provide a separate set of settings for when the computer is in use.
Today - you can either tell BOINC that it can use the computer while it's in use - or that it cannot and that it has to wait x minutes before it runs. However, you cannot tell BOINC to, say, use at most 50% CPU if the computer is in use. such a setting could further improve the ability to have BOINC go on running, instead of completely shutting down during computer use.

Sorry if this has been discussed before - Search fails with an error right now.

TIA,

Zeev
ID: 15740 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 15754 - Posted: 10 Mar 2008, 17:29:32 UTC - in response to Message 15740.  

Information to users is also important. I just talked to somebody on IRC who had been crunching Rosetta@Home for months, yet had no credit. He was always returning work way too late, even though he ran 24/7. Turns out he had his settings set to "use 5% of the CPU"...

<PovAddict> you have it throttled to use only 5% of your CPU
<HeXiLeD> yes. does that prevents proper results ?
<HeXiLeD> because this is source distro and i need to compile fast i also need lots of cpu power
<PovAddict> yes, it makes you take a week for something that should take 8 hours
<HeXiLeD> ok. but it will still report or not ? or will it fail on something ?
<PovAddict> you're returning work way past the deadline
<HeXiLeD> i see
<PovAddict> by the time you finish yours, it already expired, got resent, and the resend got processed and returned back!
<HeXiLeD> so.. why do they even provide those throttle options ?
<PovAddict> mainly for laptops that would get way too hot at 100%
<PovAddict> and people rarely set it *that* low
<PovAddict> (if you had enough heat problems that you need 5%, you're better off not running BOINC at all)

There's the myth that running BOINC will always be slowing down your computer, so people set the throttle to <100% since the beginning (or worse, decide not to run BOINC). In practice, it only slows down in specific cases like video playing, or gaming, or on computers with a slow memory controller. People should only throttle if they know for a fact that not throttling makes things slower or causes too much heat.

ID: 15754 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15477
Netherlands
Message 15757 - Posted: 10 Mar 2008, 17:47:12 UTC - in response to Message 15740.  

For instance, when viewing a video clip (especially a more demanding HD one), you can definitely see that video becomes slightly choppy, or significantly more choppy if it's a slower machine.

No matter how many CPUs you have or how much RAM, people forget that BOINC writes to disk when it is running.

The application writes to disk with its checkpoints, be it at the time set through "write to disk every" setting, or by timing itself and ignoring that setting.

BOINC writes its status to client_state.xml every so many seconds. Having a large queue of work means you have a large client_state.xml file, while before BOINC writes to the actual file, it backs up the old one to client_state_prev.xml

Then there's network actions that slow down a computer. Especially on computers with onboard network cards, the CPU will switch from doing whatever it is doing to attending to the NIC when there is activity through the internet or even the network (broadcasts). So BOINC uploading/downloading will also slow down your computer.

When I know I'll go play a long DVD on my system, I'll kill BOINC.
ID: 15757 · Report as offensive
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15775 - Posted: 10 Mar 2008, 22:34:50 UTC

FWIW - I doubt the slowdown's related to anything but the CPU activity (could be wrong of course).

On my system, like on many others' - there's plenty of stuff running all the time, including stuff that uses the disk. In fact - I can watch HD just fine while rendering a movie - which is both CPU-bound and disk-bound, as long as I set the affinity to use fewer cores. Same applies of course to BOINC running on fewer cores.

That makes me believe that having a separate while-in-use setting for the number of cores would make a very meaningful improvement.
ID: 15775 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 15778 - Posted: 11 Mar 2008, 3:54:18 UTC - in response to Message 15775.  

FWIW - I doubt the slowdown's related to anything but the CPU activity (could be wrong of course).

RAM. Experienced people have noticed memory *bandwidth* (not *amount* of memory used) caused slowdowns on machines with slow RAM sticks or memory controllers. SETI app reading stuff from memory over and over again (way bigger than the processor cache) caused slowdown on any other application on that particular (crappy) computer.

ID: 15778 · Report as offensive
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15796 - Posted: 11 Mar 2008, 15:58:48 UTC - in response to Message 15778.  

RAM. Experienced people have noticed memory *bandwidth* (not *amount* of memory used) caused slowdowns on machines with slow RAM sticks or memory controllers. SETI app reading stuff from memory over and over again (way bigger than the processor cache) caused slowdown on any other application on that particular (crappy) computer.


Well again I can't say anything with certainty, but both the memory sticks and controllers should be pretty fast on this particular box. FWIW, memory gets the top 5.9 performance rating in Vista's experience rating (as do all of the other components on this particular box).

I don't know much about the memory requirements of the SETI@home client that I'm running, but I'm doubtful it's more demanding than video rendering...
ID: 15796 · Report as offensive
mo.v
Avatar

Send message
Joined: 13 Aug 06
Posts: 778
United Kingdom
Message 15801 - Posted: 11 Mar 2008, 18:35:23 UTC
Last modified: 11 Mar 2008, 18:36:13 UTC

Zeev, if by chance you're running a CPDN climate model, disable the screensaver. It's dynamic and I've seen for myself that in spite of BOINC supposedly always giving priority to the person at the keyboard, the CPDN screensaver really can affect the performance of the whole computer. Not a lot but enough to be a nuisance.
ID: 15801 · Report as offensive
PJ

Send message
Joined: 17 Aug 07
Posts: 15
Germany
Message 15834 - Posted: 12 Mar 2008, 14:11:33 UTC

There are application programs that do make the performance choppy. The client and manager are fine performance wise.

I have to check if it is malaria@home or rosetta@home (or LHC?) but one of these applications made the mouse movements rather choppy on a slightly inferior machine (Pentium IV Mobile 2 GHz, 1 GB RAM)

But, not to the same extent, the follow up machine on that old Compaq, a Core 2 Duo T7100 with 2 GB of DDR2-667 RAM (2x1 GB) still seems choppy with that application. Not that bad, but noticeable.

So my guess would be that not the manager and not the client but the actual application run is the root cause here.

Cheers
PJ
ID: 15834 · Report as offensive
Odd-Rod

Send message
Joined: 29 Oct 07
Posts: 13
South Africa
Message 15835 - Posted: 12 Mar 2008, 16:26:41 UTC - in response to Message 15834.  

I have to check if it is malaria@home or rosetta@home (or LHC?) but one of these applications made the mouse movements rather choppy on a slightly inferior machine (Pentium IV Mobile 2 GHz, 1 GB RAM)

So my guess would be that not the manager and not the client but the actual application run is the root cause here.

Cheers
PJ


I can confirm that certain applications affect performance more than others. Off hand I'm not sure which ones, but I think you're right about rosetta@home.

I agree wholeheartedly with Zeev Suraski that a preference setting for the number of cpus while active or idle would be a great advance - I've actually been planning to post that in the wish list thread.

Another variation on that idea would be to have Boinc detect what applications (non boinc ones) are running and allow a cpu setting based on that. When I do video editing I suspend boinc, but leave it running when doing less intensive tasks. Having it back off or reduce number of cpus automatically would be great!

Regards
Rod
ID: 15835 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 15845 - Posted: 12 Mar 2008, 22:49:08 UTC - in response to Message 15835.  

Another variation on that idea would be to have Boinc detect what applications (non boinc ones) are running and allow a cpu setting based on that. When I do video editing I suspend boinc, but leave it running when doing less intensive tasks. Having it back off or reduce number of cpus automatically would be great!

It's up to the user to tweak settings for that. BOINC devs definitely won't be making a database of apps that, when detected, should make BOINC go slower.

If the software you're using is command-line, or has some way to automate it, you can run "boinc_cmd --set_run_mode never" just before the heavy processing, and "boinc_cmd --set_run_mode always" just after it ends.

ID: 15845 · Report as offensive
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15870 - Posted: 13 Mar 2008, 16:38:40 UTC - in response to Message 15845.  

Just a quick hint for those who may wish to automate BOINC going slower when certain apps are run - it took me a while to find a script that does that and create my own variation, here it is. It assumes you have two different config files that you want to use in the two different states. Added bonus - it sends Vista's annoying TrustedInstaller to low priority, not that it helps that much... I'm also putting in a script that restores BOINC to full throttle when these apps terminate (of course, there's no 'stack' here, so if you run two 'demanding' apps, and one terminates while one continues to run - it will still restore BOINC to full throttle - but I think it's not such a common use-case).


---
Const PRI_NORMAL = 32
Const PRI_LOW = 64
Const PRI_HIGH = 128
Const PRI_BELOW_NORMAL = 16384
Const PRI_ABOVE_NORMAL = 32768

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecNotificationQuery _
("Select * From __InstanceCreationEvent Within 5 Where TargetInstance ISA 'Win32_Process' OR TargetInstance ISA 'Win32_Service'")

Do While True
Set objLatestProcess = colProcesses.NextEvent

If objLatestProcess.TargetInstance.Name = "wmplayer.exe" _
or objLatestProcess.TargetInstance.Name = "ehshell.exe" _
Then
objLatestProcess.TargetInstance.SetPriority(PRI_HIGH)

' delete existing config
Set fso = CreateObject("Scripting.FileSystemObject")
Set aFile = fso.GetFile("c:\Progra~1\BOINC\global_prefs_override.xml")
aFile.Delete

' Use 2-CPU config
fso.CopyFile "c:\Progra~1\BOINC\global_prefs_override.xml.2cpu", "c:\Progra~1\BOINC\global_prefs_override.xml", TRUE

' Reload config
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "c:\Progra~1\BOINC"
Return = WshShell.Run("boinccmd.exe --read_global_prefs_override", 1, false)
End If
If objLatestProcess.TargetInstance.Name = "TrustedInstaller.exe" Then
objLatestProcess.TargetInstance.SetPriority(PRI_LOW)
End If
Loop
---
---
strComputer = "."

Set objWMIService = GetObject("winmgmts:" & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecNotificationQuery _
("Select * From __InstanceDeletionEvent Within 5 Where TargetInstance ISA 'Win32_Process'")

Do While True
Set objLatestProcess = colProcesses.NextEvent

If objLatestProcess.TargetInstance.Name = "wmplayer.exe" _
or objLatestProcess.TargetInstance.Name = "ehshell.exe" _
Then
' delete existing config
Set fso = CreateObject("Scripting.FileSystemObject")
Set aFile = fso.GetFile("c:\Progra~1\BOINC\global_prefs_override.xml")
aFile.Delete

' Use 16-CPU config
fso.CopyFile "c:\Progra~1\BOINC\global_prefs_override.xml.16cpu", "c:\Progra~1\BOINC\global_prefs_override.xml", TRUE

' Reload config
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "c:\Progra~1\BOINC"
Return = WshShell.Run("boinccmd.exe --read_global_prefs_override", 1, false)
End If
Loop
---

Name these files with .vbs extensions, and run with either cscript or wscript (I run it with wscript through the Task Scheduler on login).
ID: 15870 · Report as offensive
Odd-Rod

Send message
Joined: 29 Oct 07
Posts: 13
South Africa
Message 15871 - Posted: 13 Mar 2008, 17:26:45 UTC - in response to Message 15845.  
Last modified: 13 Mar 2008, 17:28:17 UTC


If the software you're using is command-line, or has some way to automate it, you can run "boinc_cmd --set_run_mode never" just before the heavy processing, and "boinc_cmd --set_run_mode always" just after it ends.


Great stuff! Using the above, I now have a batch file with the following:

"c:\program files\boinc\boinccmd.exe" --set_run_mode never
*My application*
"c:\program files\boinc\boinccmd.exe" --set_run_mode always

Note: boinccmd NOT boinc_cmd
Perhaps the name changed as I've seen many references to boinc_cmd?
Also, the batch file MUST be in the Boinc directory else you get "Authorization failure: -155" error message. (Thanks to Ageless in another thread for that info)

I changed the icon to the application's icon and set the batch to run minimized, so the only difference to me is an extra item in the taskbar.

A last note if you normally run according to preferences, is use "auto" instead of "always"

Many thanks for sorting out a nuisance factor for me!
Regards
Rod
ID: 15871 · Report as offensive
Odd-Rod

Send message
Joined: 29 Oct 07
Posts: 13
South Africa
Message 15877 - Posted: 13 Mar 2008, 19:38:55 UTC - in response to Message 15875.  

Note: boinccmd NOT boinc_cmd
Perhaps the name changed as I've seen many references to boinc_cmd?


It's called boinc_cmd on Linux systems.

Aha, that explains it!

Also, the batch file MUST be in the Boinc directory else you get "Authorization failure: -155" error message. (Thanks to Ageless in another thread for that info)


If you include the password and hostname on the command line it can be run from any directory or from any machine on your LAN. The password is in boinc/gui_auth.cfg and it may be the very long password assigned by BOINC but you can change it to something shorter using a text editor.

More useful info! Thanks. Yes, I've changed mine and use the same one on my various hosts for ease of connecting.

Change all the slashes in the examples to backslashes.


I noticed when I posted that my backslashes disappeared, but when I edited the posting to put them back, they remained!

Thanks again
Rod
ID: 15877 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 15878 - Posted: 13 Mar 2008, 19:59:10 UTC - in response to Message 15740.  

Sorry to be offtopic but I just noticed something...

Zeev, are you *that* Zeev Suraski?? o_O

ID: 15878 · Report as offensive
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15882 - Posted: 13 Mar 2008, 22:37:41 UTC - in response to Message 15878.  

Sorry to be offtopic but I just noticed something...

Zeev, are you *that* Zeev Suraski?? o_O


Yep, I'm afraid so...
ID: 15882 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 15883 - Posted: 13 Mar 2008, 23:30:25 UTC - in response to Message 15882.  

Yep, I'm afraid so...

Afraid? Great to have you here :)
ID: 15883 · Report as offensive
Eric Myers
Avatar

Send message
Joined: 12 Feb 06
Posts: 232
United States
Message 15894 - Posted: 14 Mar 2008, 17:20:47 UTC - in response to Message 15882.  

Sorry to be offtopic but I just noticed something...

Zeev, are you *that* Zeev Suraski?? o_O


Yep, I'm afraid so...


Welcome. In another thread we were wondering if the PHP Expires: headers is somebody's birthday? It's 26 years ago. Anybody you know?
-- Eric Myers

"Education is not the filling of a pail, but the lighting of a fire." -- William Butler Yeats
ID: 15894 · Report as offensive
Zeev Suraski

Send message
Joined: 10 Mar 08
Posts: 7
Israel
Message 15972 - Posted: 18 Mar 2008, 14:02:58 UTC - in response to Message 15894.  

Sorry to be offtopic but I just noticed something...

Zeev, are you *that* Zeev Suraski?? o_O


Yep, I'm afraid so...


Welcome. In another thread we were wondering if the PHP Expires: headers is somebody's birthday? It's 26 years ago. Anybody you know?


Quite a nice guess - it's Sascha Schumann's birthday, the guy that was the author of the session module many years ago. It's hardcoded in there - I have to admit - I never noticed it until now :)

You can get around the behavior you're seeing by modifying the value of session.cache_limiter (or use session_cache_limiter() - http://www.php.net/manual/en/function.session-cache-limiter.php ). You probably want 'public', but I haven't read the thread thoroughly enough to determine that for certain...
ID: 15972 · Report as offensive
DrFoo

Send message
Joined: 1 Apr 08
Posts: 1
United States
Message 16306 - Posted: 1 Apr 2008, 16:16:16 UTC

I'm having this same problem, and I don't really think it's quite what everyone seems to think it is. This is a fairly severe hiccup when it occurs and it happens every few seconds. I do not see the problem with all programs, but I do see it when watching any sort of video or playing many games. From the games, I can tell you it's bad enough that it misses keystrokes - that's a fairly long glitch.

While I totally agree with the first post - we should have these settings available - none of them will fix this problem! At least not from my own testing. I've tried all of the following in the BOINC prefs with no appreciable change:

Use only one core instead of 2.
Set CPU usage down to 50 percent.
Increase write cycle time to several minutes.

I've also set the CPU affinity manually in Taskmanager to make sure the BOINC stuff and the desktop program were on different cores. I've tried running the games at above normal priority. I get the same glitch with both Seti and Einstein, so I don't THINK it's specific to the apps.

I don't experience any such behavior under Win2K on the very same box. It's only when I boot into XP64. I'm relatively certain it's a 64bit scheduling issue of some sort, but whether that's in Windows itself or BOINC, I couldn't say. I'm probably going to do a clean install in a few days at least for testing, but I noticed this problem almost immediately, so I don't think it's a normal type of conflict issue with AV or other background software.

The only other thing running that I suspect MIGHT be the culprit is I'm running Intel's Matrix RAID. That's one possibility I'm going to try and eliminate soon. I'm also going to try XP32, but I'll be very surprised if I see the problem under that OS.

Just for the record in case others can help come up with commonality:

Intel E6600 Core2Duo
Asus P5B-VM DO (Q965 chipset w/ICH8DO)
2Gig Dual Channel RAM

Free software that makes the problem very obvious:

VLC media player
"Echoes" from binaryzoo.com (neat game btw)

I'm getting rather tired of clicking that little snooze button, so suggestions are welcome!
ID: 16306 · Report as offensive
Pepo
Avatar

Send message
Joined: 3 Apr 06
Posts: 547
Slovakia
Message 20090 - Posted: 11 Sep 2008, 12:07:20 UTC - in response to Message 15754.  

Information to users is also important. I just talked to somebody on IRC who had been crunching Rosetta@Home for months, yet had no credit. He was always returning work way too late, even though he ran 24/7. Turns out he had his settings set to "use 5% of the CPU"...

Reviving older thread...

Nicolas, I believe that in such case the client should be able to learn the "% of time BOINC client is running", "While BOINC running, % of time work is allowed" and "Average CPU efficiency" values and according to them, project server should clearly refuse to assign this host any further work, which would surely be late, should't it? (I believe I've already seen many refusals, because "my host is only 97.3% of time allowed to crunch and won't finish in time...")

Peter
ID: 20090 · Report as offensive
1 · 2 · Next

Message boards : BOINC Manager : Improving BOINC desktop experience (performance wise)

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.