[PD] Pd 20% idle CPU usage on MBP

Jamie Bullock jamie at postlude.co.uk
Tue Nov 9 16:48:37 CET 2010


On 8 Nov 2010, at 20:45, Mathieu Bouchard wrote:

> On Sun, 7 Nov 2010, Hans-Christoph Steiner wrote:
> 
>> As far as I understand it, Pd only does the 20% idle thing when its not really doing anything.  So if Pd is working hard, it'll stop spending 20% of the CPU idling.
> 
> It's not a real idle thing, it's a 20 % usage reported by 'top' while the user assumes that Pd shouldn't be doing anything. For example, you open pd, open no patches, and then 'top' reports 20 % usage and the computer gets a bit warmer than when Pd is not open.
> 
> Can anyone run Apple Shark on this, so that we know what it is doing when it's doing that ?
> 

pd doing 'nothing':

	10.6%	10.6%	mach_kernel	ml_set_interrupts_enabled
	9.4%	9.4%	DspFuncLib	iZRedist::DSP::Denoise::processWithLookahead(int, float* const*, int)
	6.7%	6.7%	DspFuncLib	iZRedist::DSP::FftImpl::FftComplex_InPlace(iZRedist::DSP::Cmplx*) const
	6.3%	6.3%	DspFuncLib	DspFuncHelper::process_IIR_xmm_LR(float*, float*, float*, float*, unsigned int)
	3.8%	3.8%	DspFuncLib	iZRedist::Util::Log(float)
	2.8%	2.8%	AppleHDA	NativeInt32ToFloat32_X86
	2.5%	2.5%	DspFuncLib	iZRedist::DSP::FftImpl::FftReal(float const*, iZRedist::DSP::Cmplx*) const
	2.3%	2.3%	DspFuncLib	DspFuncDRC::_dynamicRangeControl(float*, float*, unsigned long, unsigned long)
	2.0%	2.0%	mach_kernel	lo_mach_scall

Drilling down:

	10.6%	10.6%	mach_kernel	ml_set_interrupts_enabled
	0.0%	4.3%	mach_kernel	 thread_dispatch
	0.0%	3.0%	mach_kernel	 thread_continue
	0.0%	0.9%	mach_kernel	 semaphore_destroy
	0.0%	0.7%	mach_kernel	 chudxnu_cpu_alloc
	0.0%	0.4%	mach_kernel	 inval_copy_windows
	0.0%	0.4%	mach_kernel	 fpnoextflt
	0.0%	0.3%	mach_kernel	 semaphore_signal_internal
	0.0%	0.2%	mach_kernel	 thread_call_enter1_delayed
	0.0%	0.2%	mach_kernel	 wait_queue_unlink
	0.0%	0.1%	mach_kernel	 wait_queue_sub_clearrefs
	0.0%	0.0%	mach_kernel	 wait_queue_assert_wait
	0.0%	0.0%	mach_kernel	 ast_taken
	0.0%	0.0%	mach_kernel	 wait_queue_set_unlink_all
	9.4%	9.4%	DspFuncLib	iZRedist::DSP::Denoise::processWithLookahead(int, float* const*, int)
	0.0%	9.4%	DspFuncLib	 iZRedist::DSP::Denoise::Process(float const* const*, unsigned int, unsigned int, float* const*, unsigned int)
	0.0%	9.4%	DspFuncLib	  iZRedist::ANREngine::Process(unsigned int, float*)
	0.0%	9.4%	DspFuncLib	   iZRedist::ANRProcess(iZRedist::ANREngine*, unsigned int, float*)
	0.0%	9.4%	DspFuncLib	    DspFuncNoiseCanceller::process(unsigned long, unsigned long)
	0.0%	9.4%	DspFuncLib	     DspFuncManager::process(void const*, void const*, unsigned long, unsigned long)
	0.0%	9.4%	AppleHDA	      AppleHDAEngine::convertInputSamples_StereoToStereo_32(void const*, void*, unsigned long, unsigned long, _IOAudioStreamFormat const*, IOAudioStream*)
	0.0%	9.4%	AppleHDA	       AppleHDAEngine::convertInputSamples(void const*, void*, unsigned long, unsigned long, _IOAudioStreamFormat const*, IOAudioStream*)
	0.0%	9.4%	IOAudioFamily	        IOAudioStream::readInputSamples(IOAudioClientBuffer*, unsigned long)
	0.0%	9.4%	IOAudioFamily	         IOAudioEngineUserClient::performClientInput(unsigned long, IOAudioClientBufferSet*)
	0.0%	9.4%	IOAudioFamily	          IOAudioEngineUserClient::performClientIO(unsigned long, unsigned long, bool, unsigned long, unsigned long, unsigned long)
	0.0%	9.4%	mach_kernel	           iokit_user_client_trap
	0.0%	9.4%	mach_kernel	            get_user_regs
	6.7%	6.7%	DspFuncLib	iZRedist::DSP::FftImpl::FftComplex_InPlace(iZRedist::DSP::Cmplx*) const
	0.0%	6.6%	DspFuncLib	 iZRedist::DSP::FftImpl::FftReal(float const*, iZRedist::DSP::Cmplx*) const
	0.0%	4.0%	DspFuncLib	  iZRedist::DSP::Fft::FftRealCcs(float const*, float*)
	0.0%	4.0%	DspFuncLib	   iZRedist::DSP::OversampledFilterbank::Decompose(float const* const*, int, float* const*, int, int)
	0.0%	4.0%	DspFuncLib	    iZRedist::DSP::Denoise::processWithLookahead(int, float* const*, int)
	0.0%	4.0%	DspFuncLib	     iZRedist::DSP::Denoise::Process(float const* const*, unsigned int, unsigned int, float* const*, unsigned int)
	0.0%	4.0%	DspFuncLib	      iZRedist::ANREngine::Process(unsigned int, float*)
	0.0%	4.0%	DspFuncLib	       iZRedist::ANRProcess(iZRedist::ANREngine*, unsigned int, float*)
	0.0%	4.0%	DspFuncLib	        DspFuncNoiseCanceller::process(unsigned long, unsigned long)
	0.0%	4.0%	DspFuncLib	         DspFuncManager::process(void const*, void const*, unsigned long, unsigned long)
	0.0%	4.0%	AppleHDA	          AppleHDAEngine::convertInputSamples_StereoToStereo_32(void const*, void*, unsigned long, unsigned long, _IOAudioStreamFormat const*, IOAudioStream*)
	0.0%	4.0%	AppleHDA	           AppleHDAEngine::convertInputSamples(void const*, void*, unsigned long, unsigned long, _IOAudioStreamFormat const*, IOAudioStream*)
	0.0%	4.0%	IOAudioFamily	            IOAudioStream::readInputSamples(IOAudioClientBuffer*, unsigned long)
	0.0%	4.0%	IOAudioFamily	             IOAudioEngineUserClient::performClientInput(unsigned long, IOAudioClientBufferSet*)
	0.0%	4.0%	IOAudioFamily	              IOAudioEngineUserClient::performClientIO(unsigned long, unsigned long, bool, unsigned long, unsigned long, unsigned long)
	0.0%	4.0%	mach_kernel	               iokit_user_client_trap
	0.0%	4.0%	mach_kernel	                get_user_regs
	0.0%	2.7%	DspFuncLib	  iZRedist::DSP::FftImpl::InvFftReal(iZRedist::DSP::Cmplx*, float*) const
	0.0%	0.0%	DspFuncLib	 iZRedist::DSP::Fft::FftRealCcs(float const*, float*)
	6.3%	6.3%	DspFuncLib	DspFuncHelper::process_IIR_xmm_LR(float*, float*, float*, float*, unsigned int)
	0.0%	6.2%	DspFuncLib	 DspFuncEQ::_equalizer(float*, float*, unsigned long)
	0.0%	6.2%	DspFuncLib	  DspFuncEQ::process(unsigned long, unsigned long)
	0.0%	6.2%	DspFuncLib	   DspFuncManager::process(void const*, void const*, unsigned long, unsigned long)
	0.0%	4.3%	AppleHDA	    AppleHDAEngine::clipOutputSamples(void const*, void*, unsigned long, unsigned long, _IOAudioStreamFormat const*, IOAudioStream*)
	0.0%	4.3%	IOAudioFamily	     IOAudioStream::clipOutputSamples(unsigned long, unsigned long)
	0.0%	4.3%	IOAudioFamily	      IOAudioStream::clipIfNecessary()
	0.0%	4.3%	IOAudioFamily	       IOAudioStream::processOutputSamples(IOAudioClientBuffer*, unsigned long, unsigned long, bool)
	0.0%	4.3%	IOAudioFamily	        IOAudioEngineUserClient::performClientOutput(unsigned long, unsigned long, IOAudioClientBufferSet*, unsigned long, unsigned long)
	0.0%	4.3%	IOAudioFamily	         IOAudioEngineUserClient::performClientIO(unsigned long, unsigned long, bool, unsigned long, unsigned long, unsigned long)
	0.0%	4.3%	mach_kernel	          iokit_user_client_trap
	0.0%	4.3%	mach_kernel	           get_user_regs

So we're spending 17% CPU calling get_user_regs()?

Jamie





More information about the Pd-list mailing list