Messages in this thread | | | Date | Mon, 24 Mar 2014 17:21:23 +0900 | From | Hidetoshi Seto <> | Subject | Re: [PATCH 1/2] nohz: use seqlock to avoid race on idle time stats |
| |
(2014/03/24 16:45), Preeti Murthy wrote: > Hi Hidetoshi, > > The patch looks good to me except the comments around the monotonicity > of the return value of the idle stats observer. I am unable to relate them > to the dependency on nr_iowait_cpu. > > I see that when the reader queries for the idle stats and calls > get_cpu_idle_time_us(), the nr_iowait_cpu might be 0. When he later > queries get_cpu_iowait_time_us(), it may be >0 . Hence we will be > accounting for the idle time in both idle time and iowait time. This > is definitely a problem. But I do not understand what this has got to > do with the monotonicity of the time > returned. This is just for my understanding.
Thank you for your comment!
Ah yes, I think I could write better comments around here to clarify the monotonicity problem. (It will be happy if someone can give me such better sentence for here :-D)
One important point is that readers do not update idle stats when they use these function. i.e.
given: idle stats: idle=1000, iowait=100 stamp at idle entry: entry=50 nr tasks waiting io: nr_iowait=1
1st reader: query @ now=60 idle=1000 iowait=110 (=100+(60-50))
(here nr_iowait changed to 0)
2nd reader: query @ now=70 idle=1020 (=1000+(70-50)) iowait=100
So you will see iowait is decreased from 110 to 100.
I hope this short story helps you.
Thanks, H.Seto
| |