CPU Usage


log in

Advanced search

Questions and Answers : Wish list : CPU Usage

Author Message
KTON
Avatar
Send message
Joined: 1 Nov 10
Posts: 10
Credit: 46,451
RAC: 0
Lithuania
Message 1046192 - Posted: 5 Nov 2010, 7:57:39 UTC
Last modified: 5 Nov 2010, 8:05:58 UTC

I would like to suggest a performance option that allows to select what amount of power will be taken from what core.

I mean change the "On multiprocessor system, use at most X % of processors" to something "Day-of-week override", so you can select what cores you want to be used and by how much power should be take from them. In other words like "Task manager" (ctrl+alt+delete) -> processes -> right mouse click on some random process -> "Set Affinity...", where you can select what cores are used. But "Day-of-week override" table is needed, so you will be able to select maximal CPU usage of the core.

To better understand the idea, take a look on this image. Now you can see in the image, that computer has 1 processor. If it would have 2 processors - #1 and #2 would be available, if it would have 4 processors - #1, #2, #3 and #4 would be available. In each column you can select a number from 0 (inaccessible for BIONIC) to 100 (maximal usage).

Now I will explain why this is a good idea.
First of all I will start with example of my settings (I have 4 processors):
I'm allowing program to use 25% of my processors (1 out of 4).
I'm allowing program to work only 15% of the time.
In result program takes


25% * 15% = 3.75%

of all my CPU power. Now with this settings in 15% of times my CPU usage boosts up to 25%, making other work what I'm doing not smooth (harder to finish). Now with possibility of constant control over the CPU usage, I would set first CPU to 0%, second, third and fourth CPUs to 13.3% and life time 100% . In result program takes

( (13.3% / 4) + (13.3% / 4) + (13.3% / 4) + (0.0% / 4) ) * 100% = 9.975%

of all my CPU power. This is a good setting, cause my other work on the computer becomes more smooth than it was before (cause CPU usage is constant, stable and not too high), and I allow BIONIC to do more work (9.975% > 3.75%).
This is good not only for 4 cores, but for any amount of them, cause you wont have to limit BIONICs time of work, in order to allow yourself to actually do something on PC in short period of time. Like I said, this allows users to set properties what will actually fit them most, making CPU usage more constant, stable and not too high. And in the same time, most probably it also will allow BIONIC to use more power.

In result it's better for everyone. :)

So what do you think?

Profile Ageless
Avatar
Send message
Joined: 9 Jun 99
Posts: 12127
Credit: 2,519,625
RAC: 353
Netherlands
Message 1046215 - Posted: 5 Nov 2010, 11:47:23 UTC - in response to Message 1046192.

It's BOINC, it stands for Berkeley Open Initiative for Network Computing.
Not BIONIC, as I haven't a clue what your acronym should stand for, want to try one?

And you're going to explain the workings of this new 'setup' to each and every person who comes asking for it, on all the projects that are out there (not just Seti)?

Then there's the more practical thing: implementation. While it may be easy to program this through some API in Windows, it's more difficult to do it for (all the different versions of) Linux and Mac OS X.

BOINC being a one source -> compile for many platforms program can't be hooked up on vital preferences on certain APIs that exist in one platform only.

Lastly, you're going to annoy the person with 128 or more CPUs, as his preferences page is HUGE.
____________
Jord

Loving awareness is free.

KTON
Avatar
Send message
Joined: 1 Nov 10
Posts: 10
Credit: 46,451
RAC: 0
Lithuania
Message 1046216 - Posted: 5 Nov 2010, 11:56:01 UTC - in response to Message 1046192.
Last modified: 5 Nov 2010, 12:49:02 UTC

One more addition to the suggestion would be... Take a look at this image. Now let me explain. First of all computer has only 1 processor what, and BOINC is allowed to take 12.5% of it's power. Next number is maximum allowed processor work with BOINC - for example 60.0% . For example if user runs a program what takes 53% of CPU, than BOINC will be allowed to use only


60.0% - 53% = 7%

Of CPU. If CPU usage without BOINC goes above 60.0%, than BOINC and its tasks are automatically paused.

And same stuff for when computer is in idle state.

I am suggesting this features, cause I noticed that when in idle state, BOINC takes massive amount of power - temperature on my computers mini-screen goes up to 79°C (that's 174°F). And that is above critical (65°C = 149°F).

Ow, and also a button in BOINC that will set the application in idle state and resume it for 10 seconds no mater what (after wards go back in normal state when mouse movement/keyboard input is detected). This will be useful for test purposes and in case if user knows that he will go away, so why not allow BOINC to work harder from now on.

// EDIT:


It's BOINC, it stands for Berkeley Open Initiative for Network Computing.
Not BIONIC, as I haven't a clue what your acronym should stand for, want to try one?

And you're going to explain the workings of this new 'setup' to each and every person who comes asking for it, on all the projects that are out there (not just Seti)?

Then there's the more practical thing: implementation. While it may be easy to program this through some API in Windows, it's more difficult to do it for (all the different versions of) Linux and Mac OS X.

BOINC being a one source -> compile for many platforms program can't be hooked up on vital preferences on certain APIs that exist in one platform only.

Lastly, you're going to annoy the person with 128 or more CPUs, as his preferences page is HUGE.

Ok, sorry, am new to this program and am telling my opinion on this and that.

About explanations - well, all good programs/applications do have tutorials/video guides actually...

After each hard function check CPU usage. And in case if it goes above limits pause the application until CPU usage becomes available... All I see is a need to create a function what gets current CPU usage of all applications and only BOINC application, and do

static bool bPaused
if( (TOTAL_ALLOWED_CPU-TOTAL_CURRENT_CPU)<BOINC_CURRENT_CPU || BOINC_CURRENT_CPU>=BOINC_ALLOWED_CPU )
{
bPaused = true;
func_pause_the_app();
}
else if( bPaused )
{
bPaused = false;
func_unpause_the_app();
}

Well... The math part looks easy, and I know that it's possible to get total CPU of any core and current CPU usage of current program for every core for all Win/Linux/Mac.

Ok, than a function "Set for all" on the first core, and "Use classic properties"/"Use advanced properties" in the page what will change the page. Also I can't imagine anyone having 128 cores on a single computer. If I'm right best processor in the world is Intel® Core™ Xeon (if I got that name right) what costs 25.000$ (or euros - don't remember) and is used for servers in big companies. And that one only has 4 cores of about 2GHz (but they are created differently, therefor are actually much faster - about 2-3-4 times the usual speed). Now a processor with 128 cores... Not only that it should cost about 800 grand, but it also sounds impossible for it to have a size less than a car and even exist. If I'm wrong, and a processor with 128 cores does exist, than sorry... But I am talking now about nothing more than this 4 tables what show me how hard my computer works.

And the part where you said "BOINC being a one source" - I didn't really understand what you had in mind? A single-core computer will not support the program?

Also it seems that you'r being a bit offensive here on me. That usually happens when people had a hard day, and/or they don't like changes even if they'r good, and/or when they know that I'm right, but are too lazy to do anything about it (admin/developer/moderator/high-face-in-the-project case scenario). Cause of points what you told and the way you presented them I prefer to think that it's second and/or third case scenario.

Profile Ageless
Avatar
Send message
Joined: 9 Jun 99
Posts: 12127
Credit: 2,519,625
RAC: 353
Netherlands
Message 1046237 - Posted: 5 Nov 2010, 14:35:19 UTC - in response to Message 1046216.
Last modified: 5 Nov 2010, 14:40:37 UTC

And the part where you said "BOINC being a one source" - I didn't really understand what you had in mind? A single-core computer will not support the program?

No, BOINC is open source. You can download its source and compile it yourself. You can add to the source, take out of the source, then recompile it. Etc. etc.
And this you can do for Windows, Linux, Mac OS X, FreeBSD and whatever other (obscure) platform you can think of, with the exact same source code (specific porting changes not included in the example).

Thus, anything you add to the code needs to be able to run on any of the platforms (operating systems) out there without it relying on any application programming interface (API) specialized towards one platform (OS) only.

Which in the case of tampering with how you add specifics on how many CPUs you want to run and how much CPU time you want to give each CPU is quite easily done, when for instance you're programming for Windows, but not that easily done for (all the different distros of) Linux.

Is all I wanted to convey. And whether or not you wanted that be told with flowers surrounding the text, or with lightning bolts, is all your choice. it's merely text, there wasn't any emotion given to it; so it's all in the eye of the beholder reading (things into) it.

Oh and PS: Even with all that in there, you're posting it on the wrong forums. These are the Seti forums, with the Seti Wish List. Seti doesn't make any changes to BOINC. The BOINC developers don't read all project forums out there, as then they'd have a day job trying to get all that information in.

There's a shortcut though, it's called the BOINC forums, where --after you registered for an account-- you can leave specific things like that. Where then I (yes, I will be there as well) or someone else can point out to the BOINC developers that 'hey, this may be something to look into'. The BOINC developers do have an account on those forums, and this way you don't make them register for all other projects out there and read them...
____________
Jord

Loving awareness is free.

OzzFan
Volunteer tester
Avatar
Send message
Joined: 9 Apr 02
Posts: 13304
Credit: 27,836,546
RAC: 16,073
United States
Message 1046238 - Posted: 5 Nov 2010, 14:46:26 UTC

The problem(s) with your suggestion are as follows:

1) BOINC needs to utilize a single source code that can be compiled for any operating system. This means that OS-specific function calls need to be sure that an equivalent exists on another platform and the compiler will translate it properly.

2) BOINC needs to focus on being "future proof". BOINC has already caught itself in a situation where the programmers did not expect GPU computing to be possible, and now that it's here, GPU computing has thrown the original ideas for a loop and a lot of the logic needs to be re-thought and re-written. This includes the possibility for up to and over 128 cores per CPU/GPU. By the way, some corporations do use BOINC on their servers, and there are some datacenters that have over 128 total threads (multi-sockets with multi-cores). We are very near a time when there will be 8 cores on a single chip, with Intel HyperThreading (16 total threads) and 4 sockets on a single motherboard (64 total "processors" available to the OS). Keep in mind that universities and corporations do run BOINC, so such settings need to apply to more than just home users and enthusiasts.

3) Though setting affinity would give users a sort of granular control over how BOINC operates on their system, such a setting would only be useful to a handful of participants. All the time developing the code would be for a 10% or less user base. In fact, BOINC is heading the other direction and trying to give BOINC a more user-friendly appeal to non-techies by simplifying the interface or the configuration required to make it work. Your idea would simply overwhelm the average user, and would potentially scare them away. Also, through independant testing, there has been no discernable performance difference in setting processor affinity and allowing the operating system control which processors run which threads, making such granularity purely for control-freaks, which is again a very small subset of users.

KTON
Avatar
Send message
Joined: 1 Nov 10
Posts: 10
Credit: 46,451
RAC: 0
Lithuania
Message 1046249 - Posted: 5 Nov 2010, 15:38:00 UTC - in response to Message 1046238.



And the part where you said "BOINC being a one source" - I didn't really understand what you had in mind? A single-core computer will not support the program?

No, BOINC is open source. You can download its source and compile it yourself. You can add to the source, take out of the source, then recompile it. Etc. etc.
And this you can do for Windows, Linux, Mac OS X, FreeBSD and whatever other (obscure) platform you can think of, with the exact same source code (specific porting changes not included in the example).

Thus, anything you add to the code needs to be able to run on any of the platforms (operating systems) out there without it relying on any application programming interface (API) specialized towards one platform (OS) only.

Which in the case of tampering with how you add specifics on how many CPUs you want to run and how much CPU time you want to give each CPU is quite easily done, when for instance you're programming for Windows, but not that easily done for (all the different distros of) Linux.

Is all I wanted to convey. And whether or not you wanted that be told with flowers surrounding the text, or with lightning bolts, is all your choice. it's merely text, there wasn't any emotion given to it; so it's all in the eye of the beholder reading (things into) it.

Oh and PS: Even with all that in there, you're posting it on the wrong forums. These are the Seti forums, with the Seti Wish List. Seti doesn't make any changes to BOINC. The BOINC developers don't read all project forums out there, as then they'd have a day job trying to get all that information in.

There's a shortcut though, it's called the BOINC forums, where --after you registered for an account-- you can leave specific things like that. Where then I (yes, I will be there as well) or someone else can point out to the BOINC developers that 'hey, this may be something to look into'. The BOINC developers do have an account on those forums, and this way you don't make them register for all other projects out there and read them...

Well, as I know there are/should be functions to determine what system the program is running on.

Ok, than I apologize. But just so you'd know, it wasn't quite pleasant reading though some of the parts. In anyway I'm glad it was a simply misunderstanding.

And thanks for directing me to the right forum. However I'm still new to this, so I would like to ask in what section I should post this kind of a thread? Also pure interest/curiosity - so you would agree with the idea or no? It's just that this situation didn't really actually made me understand what you personally are looking towards.


---



The problem(s) with your suggestion are as follows:

1) BOINC needs to utilize a single source code that can be compiled for any operating system. This means that OS-specific function calls need to be sure that an equivalent exists on another platform and the compiler will translate it properly.

2) BOINC needs to focus on being "future proof". BOINC has already caught itself in a situation where the programmers did not expect GPU computing to be possible, and now that it's here, GPU computing has thrown the original ideas for a loop and a lot of the logic needs to be re-thought and re-written. This includes the possibility for up to and over 128 cores per CPU/GPU. By the way, some corporations do use BOINC on their servers, and there are some datacenters that have over 128 total threads (multi-sockets with multi-cores). We are very near a time when there will be 8 cores on a single chip, with Intel HyperThreading (16 total threads) and 4 sockets on a single motherboard (64 total "processors" available to the OS). Keep in mind that universities and corporations do run BOINC, so such settings need to apply to more than just home users and enthusiasts.

3) Though setting affinity would give users a sort of granular control over how BOINC operates on their system, such a setting would only be useful to a handful of participants. All the time developing the code would be for a 10% or less user base. In fact, BOINC is heading the other direction and trying to give BOINC a more user-friendly appeal to non-techies by simplifying the interface or the configuration required to make it work. Your idea would simply overwhelm the average user, and would potentially scare them away. Also, through independant testing, there has been no discernable performance difference in setting processor affinity and allowing the operating system control which processors run which threads, making such granularity purely for control-freaks, which is again a very small subset of users.


1. If I'm right, a good coding language must have a function what tells what system program is running on. And based on the return of the function, coders should be able to code differently for each OS.

2. Well yes, that's why my second post includes an additional suggestion what in function I can describe as "Apply to all", and access to "Classic" and "Advance" properties panel, if I can call it so that is. But you got the point. I also must say that I don't fully understand the multi-processor explanation what you are giving. I am talking about number of CPUs (in the image there's 4 of them). My question would be, is this the same thing as core/processor what you are talking about?

3. Well, that's why I am also suggested the "Classic" and "Advanced" buttons in my second post, what will and do make the program much more user-friendly. The point that at the moment BOINC is using all power of a single CPU and not taking only a part of it, does scare of more of the users than ability for "Advanced" option would, cause during the time when BOINC is in process now, other work on computer simply becomes unbearable due to CPU boosts. Also I must say that without actually changing settings to 25% of CPUs and use only 15% of the time (now changed it to 25% also), my computer had 79°C (174°F) temperature, what with this rate would burn down the motherboard in 2-3 weeks (maximum a month). So I really must say that the program isn't user-friendly enough.

OzzFan
Volunteer tester
Avatar
Send message
Joined: 9 Apr 02
Posts: 13304
Credit: 27,836,546
RAC: 16,073
United States
Message 1046292 - Posted: 5 Nov 2010, 18:30:41 UTC - in response to Message 1046249.

1. If I'm right, a good coding language must have a function what tells what system program is running on. And based on the return of the function, coders should be able to code differently for each OS.


Which is what the programmers are trying to avoid - branches in code for different operating systems. They are trying to remain OS-agnostic without OS-specific branches.

2. Well yes, that's why my second post includes an additional suggestion what in function I can describe as "Apply to all", and access to "Classic" and "Advance" properties panel, if I can call it so that is. But you got the point.


As I stated above, that's a lot of extra programming for such a small group of users who would actually use it. You have to figure for every line of code written, there is countless hours of testing, troubleshooting and re-writing before it's considered "finished" code. Can it be done? Sure. But at what cost and what does all that code really help with?

I also must say that I don't fully understand the multi-processor explanation what you are giving. I am talking about number of CPUs (in the image there's 4 of them). My question would be, is this the same thing as core/processor what you are talking about?


You are using an Intel Core 2 Quad processor. That means you have four cores inside a single chip. Imagine having 8 cores inside a single chip. Now imagine you have a motherboard that can house 4 of these chips, each with 8 cores. Now imagine that each core has Intel's HyperThreading technology, making each core look like two virtual processors. That's a total of 64 logical processors for a single system. Your idea would be very complex on such a system, and far too costly to ensure it works on that many cores.

3. Well, that's why I am also suggested the "Classic" and "Advanced" buttons in my second post, what will and do make the program much more user-friendly. The point that at the moment BOINC is using all power of a single CPU and not taking only a part of it, does scare of more of the users than ability for "Advanced" option would, cause during the time when BOINC is in process now, other work on computer simply becomes unbearable due to CPU boosts.


BOINC should never interfere with other work on the machine. Every system I have built or installed BOINC on does not cause performance issues with other software.

The only time I can see issues arrising is either when you have too little RAM in the machine causing lots of swapping to the hard drive or if the machine was not properly designed for airflow, or if the machine is not regularly cleaned for dust buildup causing Intel's CPU-throttling function to kick in and slow itself down to prevent overheating. Your issue sounds like the latter.

I would argue that this is not something BOINC needs to address but rather the system owner. If the machine is properly maintained, it can run at full throttle and not have any performance issues. It's like running a refridgerator; in order for it to run at peak efficiency, you need to clean it out every once in a while. If the owner doesn't do that, it's not the refridgerator's fault if it starts breaking down. Likewise, it isn't BOINC's fault if the owner doesn't take care of their machine.

Also I must say that without actually changing settings to 25% of CPUs and use only 15% of the time (now changed it to 25% also), my computer had 79°C (174°F) temperature, what with this rate would burn down the motherboard in 2-3 weeks (maximum a month). So I really must say that the program isn't user-friendly enough.


I see the real problem now.

On a system that is built, designed and maintained to proper specifications will not overheat. My main machine is a dual Intel Xeon E5430 (two quad core chips) that runs at 100% (all 8 cores chugging away) and I have no heat issues and no performance issues. I also open my machine(s) every month or so to clean them out, and I do not run my machine(s) in enclosed areas or where they can trap a lot of heat.

As I stated above, it isn't BOINC's fault if you aren't providing your machine with regular maintenence or cleaning. If you are overheating, you need to look into what is causing that and fix it. You shouldn't ask the programmers to build in something into the software that will take hours of testing and writing so that the user won't have to maintain their system. I mean, what happens when you have so much dust in your machine that even 15% CPU time is causing too much heat? Will you reduce your CPU time further when 15% was enough at one point? Or will you look into the heat issue and address that yourself?

John McLeod VII
Volunteer developer
Volunteer tester
Avatar
Send message
Joined: 15 Jul 99
Posts: 23702
Credit: 493,107
RAC: 127
United States
Message 1046322 - Posted: 5 Nov 2010, 21:07:33 UTC

There is already a solution for windows users that have overheating problems. Look into TThrottle.
____________


BOINC WIKI

Profile Ageless
Avatar
Send message
Joined: 9 Jun 99
Posts: 12127
Credit: 2,519,625
RAC: 353
Netherlands
Message 1046344 - Posted: 5 Nov 2010, 22:35:04 UTC

For Tthrottle, check this thread at the BOINC forums. The thread will tell what its change log is and where to download it from.
____________
Jord

Loving awareness is free.

Questions and Answers : Wish list : CPU Usage

Copyright © 2014 University of California