LearnBitcoin

Bitcoin Dev Archive 2012

BitcoinQt eating 100% CPU

4 messages, 21 to 23 Feb 2012. Started by Michael Gronager.

Michael Gronager (2), Gavin Andresen, Luke Dashjr

Permalink Original thread on gnusha.org

Michael Gronager permalink original

Hi Wladimir / others,

I just downloaded the latest (0.6 rc1) source of bitcoin-qt and built it using qt-creator on MacOSX 10.7.3. Nice and easy experience, even though I had to change BDB version to 5.1 ;)

However, when running it, it is using 100% CPU (after initial block chain download that is...) * All activity in debug.log seems normal (blocks/txes/addresses are processes and accepted etc) so it is not stuck (at least not in the MessageThread) * Sampling the process shows that the majority of time in each thread is used for: ** __semwait_signal ** kevent ** __select ** mach_msg_trap ** boost::date_time::micro_sec_clock

None of this would usually alert me - sleeping and waiting for conditions should not consume CPU, the only issue seems to be the last line which is called from qtipcserver.cpp line 31:

       if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))

As I see it this should not consume cpu either, but, it is the only thing that seems a bit strange..

Have you seen this before?

/M

Michael Gronager in reply to Michael Gronager permalink original

A follow up on my mail from the other day (got it send from the wrong email address...)

I now exit the ipc thread at startup by inserting:

void ipcThread(void* parg)
{
   ipcShutdown();
   return;

Bitcoin-Qt is now running nicely using around 0.9% CPU. So it seems like the culprit was indeed line 31:

if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))

Others, who have seen similar issues ?

Cheers,

M

On 21/02/2012, at 21:33, Michael Grønager wrote:

Quoted text (22 lines)
> Hi Wladimir / others,
>
> I just downloaded the latest (0.6 rc1) source of bitcoin-qt and built it using qt-creator on MacOSX 10.7.3. Nice and easy experience, even though I had to change BDB version to 5.1 ;)
>
> However, when running it, it is using 100% CPU (after initial block chain download that is...)
> * All activity in debug.log seems normal (blocks/txes/addresses are processes and accepted etc) so it is not stuck (at least not in the MessageThread)
> * Sampling the process shows that the majority of time in each thread is used for:
> ** __semwait_signal
> ** kevent
> ** __select
> ** mach_msg_trap
> ** boost::date_time::micro_sec_clock
>
> None of this would usually alert me - sleeping and waiting for conditions should not consume CPU, the only issue seems to be the last line which is called from qtipcserver.cpp line 31:
>
>      if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))
>
> As I see it this should not consume cpu either, but, it is the only thing that seems a bit strange..
>
> Have you seen this before?
>
> /M
Gavin Andresen in reply to Michael Gronager permalink original

Bitcoin-Qt is now running nicely using around 0.9% CPU. So it seems like

Quoted text (7 lines)
> the culprit was indeed line 31:
>
> if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))
>
> Others, who have seen similar issues ?
>
>

I can definitely reproduce the issue on my mac.

If I recall correctly, the Mac Bitcoin-Qt does not register itself as a bitcoin: URL handler, so the easiest fix for the 0.6 release would be to just never launch the ipcThread #ifdef Q_WS_MAC

Luke Dashjr in reply to Gavin Andresen permalink original

On Thursday, February 23, 2012 3:26:40 PM Gavin Andresen wrote:

Quoted text (3 lines)
> If I recall correctly, the Mac Bitcoin-Qt does not register itself as a
> bitcoin: URL handler, so the easiest fix for the 0.6 release would be to
> just never launch the ipcThread #ifdef Q_WS_MAC

Wouldn't that prevent the user from registering it?