lkml.org 
[lkml]   [2015]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: Ques: [kernel/time/*] Is there any disadvantage in using sleep_range for more than 20ms delay ?
    From
    On Tue, Dec 8, 2015 at 4:18 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
    > On Tue, 8 Dec 2015, Aniroop Mathur wrote:
    >> On Tue, Dec 8, 2015 at 12:07 AM, Thomas Gleixner <tglx@linutronix.de> wrote:
    >> > The real question is how precise must your delay be? If the delay
    >> > needs to be precise within the min/max sleep time limits, then
    >> > usleep_range() is probably the way to go. If the delay can be
    >> > imprecise then using msleep() is the right way because that lets the
    >> > kernel batch timers for power saving purposes.
    >>
    >> Thank you for the answer !
    >> Normally, we insert delays in driver while enabling the chip.
    >> So here usleep_range seems to service better as we do not want to delay
    >> the initialisation process of chip and make it ready to generate data,
    >> especially for faster devices like sensor.
    >
    > The initialization process is hardly something critical, so why would
    > the delay need to be precise? What's the point of having data 10ms
    > earlier?
    >

    As I know, the chip initialisation process is critical.
    Consider the case for an android mobile phone. When the phone is resumed
    from suspend state, all the earlier enabled devices need to be re-initialised.
    Normally, we have two sleeps during device initialisation and we need to
    re-initialize more than 25 devices on board. So if single msleep
    delays by 10 ms,
    then the android phone resume is delayed by 10*2*25 = 500 ms, which
    is quite a big time.
    Also more importantly, during booting the phone as well, if every device sleeps
    for extra 20 ms and we have to probe 25 devices, booting is delayed by 500 ms.

    So, for above cases, would the power and cpu usage really significant ?
    Will it affect any factor noticeably if we use usleep_range ?

    >> One last thing,
    >> Considering HZ=100, would the power saving be same if we set the
    >> range in usleep_range equivalent to msleep ?
    >> For example: msleep (33) and usleep_range(33000, 40000)
    >> So for such case, would both have same impact on power saving ?
    >
    > Probably, but what's the point of doing that?
    >

    My point is to use single consistent sleep api in driver code instead of two
    as we need to use it many places in a single driver code. This way, the code
    looks better.

    Secondly, I know that usleep_range will definitely wake the process
    after max time.
    But what about msleep ? If we use msleep(40), is it guaranteed that
    process will
    wake definitely after 50 ms or is it also possible that process can
    wake after 60
    or 70 or even 100 ms or more ? (HZ=100)

    Best Regards,
    Aniroop Mathur

    > Thanks,
    >
    > tglx


    \
     
     \ /
      Last update: 2015-12-08 17:01    [W:2.464 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site