Message boards : BOINC Manager : Improving BOINC desktop experience (performance wise)
Message board moderation
Author | Message |
---|---|
Send message Joined: 10 Mar 08 Posts: 7 |
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 |
Send message Joined: 19 Jan 07 Posts: 1179 |
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. |
Send message Joined: 29 Aug 05 Posts: 15563 |
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. |
Send message Joined: 10 Mar 08 Posts: 7 |
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. |
Send message Joined: 19 Jan 07 Posts: 1179 |
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. |
Send message Joined: 10 Mar 08 Posts: 7 |
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... |
Send message Joined: 13 Aug 06 Posts: 778 |
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. |
Send message Joined: 17 Aug 07 Posts: 15 |
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 |
Send message Joined: 29 Oct 07 Posts: 13 |
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) 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 |
Send message Joined: 19 Jan 07 Posts: 1179 |
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. |
Send message Joined: 10 Mar 08 Posts: 7 |
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). |
Send message Joined: 29 Oct 07 Posts: 13 |
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 |
Send message Joined: 29 Oct 07 Posts: 13 |
Note: boinccmd NOT boinc_cmd Aha, that explains it!
More useful info! Thanks. Yes, I've changed mine and use the same one on my various hosts for ease of connecting.
I noticed when I posted that my backslashes disappeared, but when I edited the posting to put them back, they remained! Thanks again Rod |
Send message Joined: 19 Jan 07 Posts: 1179 |
|
Send message Joined: 10 Mar 08 Posts: 7 |
Sorry to be offtopic but I just noticed something... Yep, I'm afraid so... |
Send message Joined: 19 Jan 07 Posts: 1179 |
Yep, I'm afraid so... Afraid? Great to have you here :) |
Send message Joined: 12 Feb 06 Posts: 232 |
Sorry to be offtopic but I just noticed something... 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 |
Send message Joined: 10 Mar 08 Posts: 7 |
Sorry to be offtopic but I just noticed something... 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... |
Send message Joined: 1 Apr 08 Posts: 1 |
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! |
Send message Joined: 3 Apr 06 Posts: 547 |
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 |
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.