2016-08-10 7:07 GMT+08:00 Wanpeng Li <kernel...@gmail.com>: > 2016-08-09 22:06 GMT+08:00 Rik van Riel <r...@redhat.com>: >> On Tue, 2016-08-09 at 11:59 +0800, Wanpeng Li wrote: >>> Hi Rik, >>> 2016-07-13 22:50 GMT+08:00 Frederic Weisbecker <fweis...@gmail.com>: >>> > From: Rik van Riel <r...@redhat.com> >>> > >>> > Currently, if there was any irq or softirq time during 'ticks' >>> > jiffies, the entire period will be accounted as irq or softirq >>> > time. >>> > >>> > This is inaccurate if only a subset of the time was actually spent >>> > handling irqs, and could conceivably mis-count all of the ticks >>> > during >>> > a period as irq time, when there was some irq and some softirq >>> > time. >>> > >>> > This can actually happen when irqtime_account_process_tick is >>> > called >>> > from account_idle_ticks, which can pass a larger number of ticks >>> > down >>> > all at once. >>> > >>> > Fix this by changing irqtime_account_hi_update, >>> > irqtime_account_si_update, >>> > and steal_account_process_ticks to work with cputime_t time units, >>> > and >>> > return the amount of time spent in each mode. >>> >>> Do we need to minus st cputime from idle cputime in >>> account_idle_ticks() when noirqtime is true? I try to add this logic >>> w/ noirqtime and idle=poll boot parameter for a full dynticks guest, >>> however, there is no difference, where I miss? >> >> Yes, you are right. The code in account_idle_ticks() >> could use the same treatment. >> >> I am not sure why it would not work, though... > > I will try nohz idle kvm guest and other more tests, a patch will be > sent out once successful.
After apply the same logic to account_idle_ticks() for nohz idle kvm guest(noirqtime, idle=poll, one pCPU and four vCPUs), the average idle drop from 56.8% to 54.75%, I think it makes sense to make a formal patch. Regards, Wanpeng Li