idle VM runs at constant 3-5% CPU load

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

idle VM runs at constant 3-5% CPU load

Igor Stasenko
 
i just wonder, what takes so much CPU time, even if it completely idle...


4831-  NBCog        4.8
51519- NBCog        3.5

if i kill a UI process, the load goes down to 2.5-3 % ...
still too much.

i would like to know how we can minimize this.
The reason why i concerned is straightly pragmatic: extending battery life..

i found that if i run completely on battery.. it depleting quite fast
with VM running (and i don't do anything just coding, i.e not running
benchmarks, but more thinking and typing).

--
Best regards,
Igor Stasenko.
Reply | Threaded
Open this post in threaded view
|

[Pharo-project] idle VM runs at constant 3-5% CPU load

Igor Stasenko
 
On 4 June 2012 22:07, Sven Van Caekenberghe <[hidden email]> wrote:
> Yes, we should at least understand why this happens.
>
> BTW, another related question is: when running headless, do we actually need those 6 processes ?
>

well, here ones:
1. Delay
2. Event fetcher
3. Low space watcher
4. UI process
5. finalization process
6. idle process


well, i did following:

InputEventFetcher shutDown.
Delay stopTimerEventLoop.
WeakArray finalizationProcess terminate.
Processor activeProcess terminate.

and still having constant 2.3-2.4% CPU load..

there's only idle process left..

> Sven

--
Best regards,
Igor Stasenko.
Reply | Threaded
Open this post in threaded view
|

Re: idle VM runs at constant 3-5% CPU load

Eliot Miranda-2
In reply to this post by Igor Stasenko
 


On Mon, Jun 4, 2012 at 12:56 PM, Igor Stasenko <[hidden email]> wrote:

i just wonder, what takes so much CPU time, even if it completely idle...

The basic issue is the idle process that spins doing a yield instead of blocking.  Basically, instead of ioRelinquishProcessorForMicroseconds the VM should enter a blocking call that will terminate when the next delay or i/o event occurs.  This requires rearchitecting delays because currently the VM polls for delay expiry.  For the VM to block while a delay is active there must be a delay callback/signal/interrupt etc that has the side-effect of terminating the blocking call.
 


4831-  NBCog        4.8
51519- NBCog        3.5

if i kill a UI process, the load goes down to 2.5-3 % ...
still too much.

i would like to know how we can minimize this.
The reason why i concerned is straightly pragmatic: extending battery life..

i found that if i run completely on battery.. it depleting quite fast
with VM running (and i don't do anything just coding, i.e not running
benchmarks, but more thinking and typing).

--
Best regards,
Igor Stasenko.



--
best,
Eliot

Reply | Threaded
Open this post in threaded view
|

Re: idle VM runs at constant 3-5% CPU load

J. Vuletich (mail lists)
In reply to this post by Igor Stasenko
 
Hi Igor,

Quoting Igor Stasenko <[hidden email]>:

>
> i just wonder, what takes so much CPU time, even if it completely idle...
>
>
> 4831-  NBCog        4.8
> 51519- NBCog        3.5
>
> if i kill a UI process, the load goes down to 2.5-3 % ...
> still too much.

Well, there are both image and VM issues here. I'll assume you're  
running Pharo on a Mac. Running Cuis on a Mac, when idle, uses 2.6 -  
2.7%. So, the UI process can be optimized to the point where it takes  
almost zero CPU.

But there are VM platform code issues too. Doing the same on a Windows  
7 Atom netbook, Cuis uses 0% (zero!) CPU.

> i would like to know how we can minimize this.
> The reason why i concerned is straightly pragmatic: extending battery life..
>
> i found that if i run completely on battery.. it depleting quite fast
> with VM running (and i don't do anything just coding, i.e not running
> benchmarks, but more thinking and typing).
>
> --
> Best regards,
> Igor Stasenko.
>



Cheers,
Juan Vuletich

Reply | Threaded
Open this post in threaded view
|

Re: idle VM runs at constant 3-5% CPU load

Andreas.Raab
 
-------- Original-Nachricht --------

> Quoting Igor Stasenko <[hidden email]>:
>
> >
> > i just wonder, what takes so much CPU time, even if it completely
> idle...
> >
> >
> > 4831-  NBCog        4.8
> > 51519- NBCog        3.5
> >
> > if i kill a UI process, the load goes down to 2.5-3 % ...
> > still too much.
>
> Well, there are both image and VM issues here. I'll assume you're  
> running Pharo on a Mac. Running Cuis on a Mac, when idle, uses 2.6 -  
> 2.7%. So, the UI process can be optimized to the point where it takes  
> almost zero CPU.
>
> But there are VM platform code issues too. Doing the same on a Windows  
> 7 Atom netbook, Cuis uses 0% (zero!) CPU.

The reason for which is that ioRelinquishProcessor() is implemented in precisely the fashion Eliot described it in his earlier message, by calling a blocking function which wakes up when there is some activity (either UI or other such as sockets).

Cheers,
  - Andreas

--
NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone!                                  
Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a