public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Corey Minyard <minyard@acm.org>
To: Randy Dunlap <randy.dunlap@oracle.com>
Cc: "Kok, Auke" <auke-jan.h.kok@intel.com>,
	Arjan van de Ven <arjan@linux.intel.com>,
	"discuss@LessWatts.org" <discuss@LessWatts.org>,
	"openipmi-developer@lists.sourceforge.net" 
	<openipmi-developer@lists.sourceforge.net>,
	lkml <linux-kernel@vger.kernel.org>
Subject: Re: [Discuss] [PATCH] ipmi: use round_jiffies on timers to reduce timer overhead/wakeups
Date: Wed, 21 Oct 2009 15:22:14 -0500	[thread overview]
Message-ID: <4ADF6D76.7070409@acm.org> (raw)
In-Reply-To: <20091021130348.cd521b0c.randy.dunlap@oracle.com>

Randy Dunlap wrote:
> On Wed, 21 Oct 2009 11:49:59 -0700 Kok, Auke wrote:
>
>   
>> Arjan van de Ven wrote:
>>     
>>> On Wed, 21 Oct 2009 10:28:22 -0700
>>> Randy Dunlap <randy.dunlap@oracle.com> wrote:
>>>
>>>       
>>>> From: Randy Dunlap <randy.dunlap@oracle.com>
>>>>
>>>> Use a round_jiffies() variant to reduce overhead of timer
>>>> wakeups.  This causes the ipmi timers to occur at the same
>>>> time as other timers (per CPU).
>>>>
>>>> Typical powertop for /ipmi/ (2.6.31, before patch):
>>>>   11.4% (247.4)            kipmi0 : __mod_timer (process_timeout) 
>>>>    0.6% ( 13.1)       <interrupt> : ipmi_si 
>>>>    0.5% ( 10.0)     <kernel core> : __mod_timer (ipmi_timeout) 
>>>>
>>>> powertop for /ipmi/, 2.6.31, after patch:
>>>>   10.8% (247.6)            kipmi0 : __mod_timer (process_timeout) 
>>>>    0.3% (  6.9)       <interrupt> : ipmi_si 
>>>>    0.0% (  1.0)     <kernel core> : __mod_timer (ipmi_timeout)
>>>>         
>>> while it is nice that ipmi_si ande the timer wake up less now.... it's
>>> still rather sad that the 247.6 from kipmi0 are still there..... those
>>> are a much much bigger issue
>>>       
>> obviously :)
>>
>> Randy, any idea where those are coming from ?
>>     
>
>
> obviously from kipmi thread :(
>
> drivers/char/ipmi/ipmi_si_intf.c::ipmi_thread():
>
> static int ipmi_thread(void *data)
> {
> 	struct smi_info *smi_info = data;
> 	unsigned long flags;
> 	enum si_sm_result smi_result;
>
> 	set_user_nice(current, 19);
> 	while (!kthread_should_stop()) {
> 		spin_lock_irqsave(&(smi_info->si_lock), flags);
> 		smi_result = smi_event_handler(smi_info, 0);
> 		spin_unlock_irqrestore(&(smi_info->si_lock), flags);
> 		if (smi_result == SI_SM_CALL_WITHOUT_DELAY)
> 			; /* do nothing */
> 		else if (smi_result == SI_SM_CALL_WITH_DELAY)
> 			schedule();
> 		else
> 			schedule_timeout_interruptible(1); <-----
> 	}
> 	return 0;
> }
>
>
> calls setup_timer_on_stack(), which calls process_timeout().
>
> From what I recall (probably 2 years ago), [older] ipmi hardware does not
> generate event interrupts, so it has to be polled.
>
> Corey, can you elaborate on this?
>   
Certainly.  Yes, some (probably most) IPMI hardware does not use
interrupts, and unfortunately, it's not just older machines.  The driver
used to poll more slowly, but in many cases the performance was
unacceptable.

kipmid is only started if the hardware doesn't support interrupts, so
only users with sub-standard hardware have to suffer with this problem.

Thanks for the patch, Randy.

-corey

  reply	other threads:[~2009-10-21 20:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-21 17:28 [PATCH] ipmi: use round_jiffies on timers to reduce timer overhead/wakeups Randy Dunlap
2009-10-21 18:42 ` Arjan van de Ven
2009-10-21 18:49   ` [Discuss] " Kok, Auke
2009-10-21 20:03     ` Randy Dunlap
2009-10-21 20:22       ` Corey Minyard [this message]
2009-10-21 20:57         ` Arjan van de Ven
2009-10-22  2:50           ` Matt Domsch
2009-10-22 16:45             ` Corey Minyard
2009-10-22 19:12             ` [Openipmi-developer] [Discuss] [PATCH] " Bela Lubkin
2009-10-22 20:02               ` Corey Minyard
2009-10-22 22:16                 ` Bela Lubkin
2009-10-21 23:46         ` Bela Lubkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ADF6D76.7070409@acm.org \
    --to=minyard@acm.org \
    --cc=arjan@linux.intel.com \
    --cc=auke-jan.h.kok@intel.com \
    --cc=discuss@LessWatts.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=openipmi-developer@lists.sourceforge.net \
    --cc=randy.dunlap@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox