Re: suspend/resume PM criterion for application
On Wed, Sep 17, 2014 at 11:16 AM, Peter Teoh wrote: > > > On Sun, Sep 14, 2014 at 2:11 AM, Ran Shalit wrote: > >> On Thu, Sep 11, 2014 at 12:24 PM, Ran Shalit wrote: >> > On Thu, Sep 11, 2014 at 8:32 AM, AYAN KUMAR HALDER < >> ayankum...@gmail.com> wrote: >> >> On Thu, Sep 11, 2014 at 12:55 AM, wrote: >> >>> On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: >> >>> >> 1. How can I make a process to notice this inactivity ? Do you think >> it can be implemented by some periodic process who check if there is >> activity ? It returns to the original question I raised, that I will >> use some periodic process who checks maybe cpu load or something like >> that. What do you think ? >> >>> >> >>> That's going to depend on your system and what processes are running. >> >>> >> >>> You may have an MP3 player going that doesn't take much CPU at all - >> but >> >>> shutting down because the user hasn't hit a button in 47 minutes will >> probably >> >>> irritate the user no end. Or there may be a screensaver running that >> takes >> >>> twice as much CPU as the MP3 player, but is totally OK on the system >> >>> suspending whenever the rest of the system wants it. >> >>> >> >>> You're going to have to look at your system design, and decide for >> yourself >> >>> what the criteria are. >> >> >> >> Please correct me if my understanding is wrong:- >> >> >> >> I believe that autosuspend feature (for system suspend) is not present >> >> in kernel. I believe that there is no feature in kernel which checks >> >> for system ( cpu, devices) inactivity and suspends the entire system. >> >> System suspend is caused when :- >> >> 1. the user issues a command >> >> 2. The system receives some interrupt or event (lid closing event) >> >> 3. There is an external process which monitors system inactivity and >> >> suspends the system. >> >> >> >> For runtime suspend of a device, I believe it is the driver who has >> >> the complete responsibility to decide when to suspend the device or >> >> resume it. The driver can take this decision on user intervention (eg >> >> when user writes to /sys/devices//power/* ) or when the >> >> driver has completed servicing an interrupt and feels it has nothing >> >> more to do, etc >> > >> > Thanks Vlaid, Ayan, >> > >> > I am a bit yet struggling for couple of days on this PM issue, and I >> > would appreciate your continous advise. >> > The system requirement I have is as following: >> > 1. make everything as automatic as possible , so that there won't be >> > any need to add any userspace application for the matter. >> > 2. wakeup from all relevant wakeup sources >> > 3. should not use sysfs (it should be disabled from kernel) >> > 4. platform is OMAP3530. >> > > a. look into /arch/arm/mach-omap2 of kernel source and grep for "sleep" > and "wakeup" functionality: power management is just managing with the > different frequencies of the the CPU. as far as I can tell, once sleep, > only uart pin can be used for waking upnot sure. > > b. read this: > > > http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/t/30005.aspx > > http://www.ti.com/lit/an/slva310b/slva310b.pdf (read page 2, which > describe the different powerup-sequence of the CPU, "Powering-Up Sequence". > > > c. the technology brand name for omap3530 is "DVFS"search for this > inside the arch/arm kernel source.you can find lots of sample codes > there. > > (don't confuse with another omap CPU brand name "DeepSleep" but is PM for > another type of omap cpu.) > > d. http://www.ti.com/product/omap3530 --> on the right is a DVSDK + > Android source code for 3530grep the codes for the above keywords... > > hopefully it helps? > > at the risk of missing out other files: how about this two files: inside arch/arm/mach-omap2: omap-pm.h omap-pm-noop.c which I think provide a lot of hint for you. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Sun, Sep 14, 2014 at 2:11 AM, Ran Shalit wrote: > On Thu, Sep 11, 2014 at 12:24 PM, Ran Shalit wrote: > > On Thu, Sep 11, 2014 at 8:32 AM, AYAN KUMAR HALDER > wrote: > >> On Thu, Sep 11, 2014 at 12:55 AM, wrote: > >>> On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: > >>> > 1. How can I make a process to notice this inactivity ? Do you think > it can be implemented by some periodic process who check if there is > activity ? It returns to the original question I raised, that I will > use some periodic process who checks maybe cpu load or something like > that. What do you think ? > >>> > >>> That's going to depend on your system and what processes are running. > >>> > >>> You may have an MP3 player going that doesn't take much CPU at all - > but > >>> shutting down because the user hasn't hit a button in 47 minutes will > probably > >>> irritate the user no end. Or there may be a screensaver running that > takes > >>> twice as much CPU as the MP3 player, but is totally OK on the system > >>> suspending whenever the rest of the system wants it. > >>> > >>> You're going to have to look at your system design, and decide for > yourself > >>> what the criteria are. > >> > >> Please correct me if my understanding is wrong:- > >> > >> I believe that autosuspend feature (for system suspend) is not present > >> in kernel. I believe that there is no feature in kernel which checks > >> for system ( cpu, devices) inactivity and suspends the entire system. > >> System suspend is caused when :- > >> 1. the user issues a command > >> 2. The system receives some interrupt or event (lid closing event) > >> 3. There is an external process which monitors system inactivity and > >> suspends the system. > >> > >> For runtime suspend of a device, I believe it is the driver who has > >> the complete responsibility to decide when to suspend the device or > >> resume it. The driver can take this decision on user intervention (eg > >> when user writes to /sys/devices//power/* ) or when the > >> driver has completed servicing an interrupt and feels it has nothing > >> more to do, etc > > > > Thanks Vlaid, Ayan, > > > > I am a bit yet struggling for couple of days on this PM issue, and I > > would appreciate your continous advise. > > The system requirement I have is as following: > > 1. make everything as automatic as possible , so that there won't be > > any need to add any userspace application for the matter. > > 2. wakeup from all relevant wakeup sources > > 3. should not use sysfs (it should be disabled from kernel) > > 4. platform is OMAP3530. > a. look into /arch/arm/mach-omap2 of kernel source and grep for "sleep" and "wakeup" functionality: power management is just managing with the different frequencies of the the CPU. as far as I can tell, once sleep, only uart pin can be used for waking upnot sure. b. read this: http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/t/30005.aspx http://www.ti.com/lit/an/slva310b/slva310b.pdf (read page 2, which describe the different powerup-sequence of the CPU, "Powering-Up Sequence". c. the technology brand name for omap3530 is "DVFS"search for this inside the arch/arm kernel source.you can find lots of sample codes there. (don't confuse with another omap CPU brand name "DeepSleep" but is PM for another type of omap cpu.) d. http://www.ti.com/product/omap3530 --> on the right is a DVSDK + Android source code for 3530grep the codes for the above keywords... hopefully it helps? > > > > Now, As I understand thus far, I have the following options ( > > requirement 3 above I will ignore, don't know how to handle it yet, > > and assume for meanwhile that I have sysfs) : > > 1. use suspend scheme (no runtime PM) > > 1.a. create some kernel thread who check cpu load and will decide > > to disable system only if its below some minimum threshold (which > > should indicate no activity) > > 1.b. initialize all HW interrupts (gpio, uart, etc) as wakeup sources > > with this scheme only this thread is responsible for the suspend, > > and there is no use of the runtime PM, right ? > > > > 2. use runtime PM scheme : > > With this scheme I don't understand how some device will wake the > > system , or doesn't it need to ? If a driver wakes up maybe it need > > to deliver some info to system? > > > > I think option 1 is also easier to support, what do you think about both > ? > > > > Thanks!! > > Ran > > Does Anyone have any suggestions and feedback on the above requirements ? > > Thank you, > Ran > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > -- Regards, Peter Teoh ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Thu, Sep 11, 2014 at 12:24 PM, Ran Shalit wrote: > On Thu, Sep 11, 2014 at 8:32 AM, AYAN KUMAR HALDER > wrote: >> On Thu, Sep 11, 2014 at 12:55 AM, wrote: >>> On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: >>> 1. How can I make a process to notice this inactivity ? Do you think it can be implemented by some periodic process who check if there is activity ? It returns to the original question I raised, that I will use some periodic process who checks maybe cpu load or something like that. What do you think ? >>> >>> That's going to depend on your system and what processes are running. >>> >>> You may have an MP3 player going that doesn't take much CPU at all - but >>> shutting down because the user hasn't hit a button in 47 minutes will >>> probably >>> irritate the user no end. Or there may be a screensaver running that takes >>> twice as much CPU as the MP3 player, but is totally OK on the system >>> suspending whenever the rest of the system wants it. >>> >>> You're going to have to look at your system design, and decide for yourself >>> what the criteria are. >> >> Please correct me if my understanding is wrong:- >> >> I believe that autosuspend feature (for system suspend) is not present >> in kernel. I believe that there is no feature in kernel which checks >> for system ( cpu, devices) inactivity and suspends the entire system. >> System suspend is caused when :- >> 1. the user issues a command >> 2. The system receives some interrupt or event (lid closing event) >> 3. There is an external process which monitors system inactivity and >> suspends the system. >> >> For runtime suspend of a device, I believe it is the driver who has >> the complete responsibility to decide when to suspend the device or >> resume it. The driver can take this decision on user intervention (eg >> when user writes to /sys/devices//power/* ) or when the >> driver has completed servicing an interrupt and feels it has nothing >> more to do, etc > > Thanks Vlaid, Ayan, > > I am a bit yet struggling for couple of days on this PM issue, and I > would appreciate your continous advise. > The system requirement I have is as following: > 1. make everything as automatic as possible , so that there won't be > any need to add any userspace application for the matter. > 2. wakeup from all relevant wakeup sources > 3. should not use sysfs (it should be disabled from kernel) > 4. platform is OMAP3530. > > Now, As I understand thus far, I have the following options ( > requirement 3 above I will ignore, don't know how to handle it yet, > and assume for meanwhile that I have sysfs) : > 1. use suspend scheme (no runtime PM) > 1.a. create some kernel thread who check cpu load and will decide > to disable system only if its below some minimum threshold (which > should indicate no activity) > 1.b. initialize all HW interrupts (gpio, uart, etc) as wakeup sources > with this scheme only this thread is responsible for the suspend, > and there is no use of the runtime PM, right ? > > 2. use runtime PM scheme : > With this scheme I don't understand how some device will wake the > system , or doesn't it need to ? If a driver wakes up maybe it need > to deliver some info to system? > > I think option 1 is also easier to support, what do you think about both ? > > Thanks!! > Ran Does Anyone have any suggestions and feedback on the above requirements ? Thank you, Ran ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Thu, Sep 11, 2014 at 8:32 AM, AYAN KUMAR HALDER wrote: > On Thu, Sep 11, 2014 at 12:55 AM, wrote: >> On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: >> >>> 1. How can I make a process to notice this inactivity ? Do you think >>> it can be implemented by some periodic process who check if there is >>> activity ? It returns to the original question I raised, that I will >>> use some periodic process who checks maybe cpu load or something like >>> that. What do you think ? >> >> That's going to depend on your system and what processes are running. >> >> You may have an MP3 player going that doesn't take much CPU at all - but >> shutting down because the user hasn't hit a button in 47 minutes will >> probably >> irritate the user no end. Or there may be a screensaver running that takes >> twice as much CPU as the MP3 player, but is totally OK on the system >> suspending whenever the rest of the system wants it. >> >> You're going to have to look at your system design, and decide for yourself >> what the criteria are. > > Please correct me if my understanding is wrong:- > > I believe that autosuspend feature (for system suspend) is not present > in kernel. I believe that there is no feature in kernel which checks > for system ( cpu, devices) inactivity and suspends the entire system. > System suspend is caused when :- > 1. the user issues a command > 2. The system receives some interrupt or event (lid closing event) > 3. There is an external process which monitors system inactivity and > suspends the system. > > For runtime suspend of a device, I believe it is the driver who has > the complete responsibility to decide when to suspend the device or > resume it. The driver can take this decision on user intervention (eg > when user writes to /sys/devices//power/* ) or when the > driver has completed servicing an interrupt and feels it has nothing > more to do, etc Thanks Vlaid, Ayan, I am a bit yet struggling for couple of days on this PM issue, and I would appreciate your continous advise. The system requirement I have is as following: 1. make everything as automatic as possible , so that there won't be any need to add any userspace application for the matter. 2. wakeup from all relevant wakeup sources 3. should not use sysfs (it should be disabled from kernel) 4. platform is OMAP3530. Now, As I understand thus far, I have the following options ( requirement 3 above I will ignore, don't know how to handle it yet, and assume for meanwhile that I have sysfs) : 1. use suspend scheme (no runtime PM) 1.a. create some kernel thread who check cpu load and will decide to disable system only if its below some minimum threshold (which should indicate no activity) 1.b. initialize all HW interrupts (gpio, uart, etc) as wakeup sources with this scheme only this thread is responsible for the suspend, and there is no use of the runtime PM, right ? 2. use runtime PM scheme : With this scheme I don't understand how some device will wake the system , or doesn't it need to ? If a driver wakes up maybe it need to deliver some info to system? I think option 1 is also easier to support, what do you think about both ? Thanks!! Ran ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Thu, Sep 11, 2014 at 12:55 AM, wrote: > On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: > >> 1. How can I make a process to notice this inactivity ? Do you think >> it can be implemented by some periodic process who check if there is >> activity ? It returns to the original question I raised, that I will >> use some periodic process who checks maybe cpu load or something like >> that. What do you think ? > > That's going to depend on your system and what processes are running. > > You may have an MP3 player going that doesn't take much CPU at all - but > shutting down because the user hasn't hit a button in 47 minutes will probably > irritate the user no end. Or there may be a screensaver running that takes > twice as much CPU as the MP3 player, but is totally OK on the system > suspending whenever the rest of the system wants it. > > You're going to have to look at your system design, and decide for yourself > what the criteria are. Please correct me if my understanding is wrong:- I believe that autosuspend feature (for system suspend) is not present in kernel. I believe that there is no feature in kernel which checks for system ( cpu, devices) inactivity and suspends the entire system. System suspend is caused when :- 1. the user issues a command 2. The system receives some interrupt or event (lid closing event) 3. There is an external process which monitors system inactivity and suspends the system. For runtime suspend of a device, I believe it is the driver who has the complete responsibility to decide when to suspend the device or resume it. The driver can take this decision on user intervention (eg when user writes to /sys/devices//power/* ) or when the driver has completed servicing an interrupt and feels it has nothing more to do, etc ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, Sep 10, 2014 at 10:25 PM, wrote: > On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: > >> 1. How can I make a process to notice this inactivity ? Do you think >> it can be implemented by some periodic process who check if there is >> activity ? It returns to the original question I raised, that I will >> use some periodic process who checks maybe cpu load or something like >> that. What do you think ? > > That's going to depend on your system and what processes are running. > > You may have an MP3 player going that doesn't take much CPU at all - but > shutting down because the user hasn't hit a button in 47 minutes will probably > irritate the user no end. Or there may be a screensaver running that takes > twice as much CPU as the MP3 player, but is totally OK on the system > suspending whenever the rest of the system wants it. > > You're going to have to look at your system design, and decide for yourself > what the criteria are. > > >> 2. What Do you mean here by process ? Do you mean SW process which >> register for suspend notification (how do we do this) ? What about >> devices which register for suspend/resume. Must they accept the >> suspend ? > > I believe Android already has libraries and monitor processes for this. > > It's really hard to give more specific advice without knowing what your > hardware, software, and usage is. Ok, Thanks, I just tried to understand and learn from your previous answer. I have OMAP Soc and knows that the linux SDK supports suspend/resume and other mechnism. I did n't hear about the notification before. Thanks, Ran ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, 10 Sep 2014 21:58:48 +0300, Ran Shalit said: > 1. How can I make a process to notice this inactivity ? Do you think > it can be implemented by some periodic process who check if there is > activity ? It returns to the original question I raised, that I will > use some periodic process who checks maybe cpu load or something like > that. What do you think ? That's going to depend on your system and what processes are running. You may have an MP3 player going that doesn't take much CPU at all - but shutting down because the user hasn't hit a button in 47 minutes will probably irritate the user no end. Or there may be a screensaver running that takes twice as much CPU as the MP3 player, but is totally OK on the system suspending whenever the rest of the system wants it. You're going to have to look at your system design, and decide for yourself what the criteria are. > 2. What Do you mean here by process ? Do you mean SW process which > register for suspend notification (how do we do this) ? What about > devices which register for suspend/resume. Must they accept the > suspend ? I believe Android already has libraries and monitor processes for this. It's really hard to give more specific advice without knowing what your hardware, software, and usage is. pgpJ85YFgcFFc.pgp Description: PGP signature ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, Sep 10, 2014 at 9:39 PM, wrote: > On Wed, 10 Sep 2014 21:23:28 +0300, Ran Shalit said: > >> As far as I understand, suspend/respond PM is not per device, but for >> all system, >> and wakeup source will resume again the whole system. >> I think you mean runtime suspend/resume in the answer. > > The original question didn't specify. You said "suspending that application", > not the entire system. > > And runtime suspend/resume of devices and even the CPU does fit within > your original question constraints. > > If you're looking at system-wide suspend/resume specificially, there's > two basic schemes in use: > > 1) User hits a button, acpid or similar notices, and does a suspend to > disk/ram/papertape/whatever. > > 2) User hits a button, closes the lid, or a user inactivity timer expires. > A process notices, and asks all processes which have registered for suspend > notifications "Is it OK if we suspend?", and if nobody says "Nay", it does it. > If a process complains, it is repeatedly polled until it finishes whatever it > was doing and says "OK now". Hi Veldis, The second scheme you mention is what I am required to achieve, but it raises some question: > or a user inactivity timer expires. A process notices... 1. How can I make a process to notice this inactivity ? Do you think it can be implemented by some periodic process who check if there is activity ? It returns to the original question I raised, that I will use some periodic process who checks maybe cpu load or something like that. What do you think ? > and asks all processes which have registered for suspend notifications "Is it > OK if we suspend? 2. What Do you mean here by process ? Do you mean SW process which register for suspend notification (how do we do this) ? What about devices which register for suspend/resume. Must they accept the suspend ? Thanks very much, Ran ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, 10 Sep 2014 21:23:28 +0300, Ran Shalit said: > As far as I understand, suspend/respond PM is not per device, but for > all system, > and wakeup source will resume again the whole system. > I think you mean runtime suspend/resume in the answer. The original question didn't specify. You said "suspending that application", not the entire system. And runtime suspend/resume of devices and even the CPU does fit within your original question constraints. If you're looking at system-wide suspend/resume specificially, there's two basic schemes in use: 1) User hits a button, acpid or similar notices, and does a suspend to disk/ram/papertape/whatever. 2) User hits a button, closes the lid, or a user inactivity timer expires. A process notices, and asks all processes which have registered for suspend notifications "Is it OK if we suspend?", and if nobody says "Nay", it does it. If a process complains, it is repeatedly polled until it finishes whatever it was doing and says "OK now". pgpm87vefaFPw.pgp Description: PGP signature ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, Sep 10, 2014 at 8:59 PM, wrote: > On Wed, 10 Sep 2014 20:26:48 +0300, Ran Shalit said: > >> What is usually the criterion for PM (power management) suspending >> that application shall use ? Is it according to minimum threshold for >> cpu load (as indication for no process) ? > > That will be highly application dependent. Something that checks your email > in the background may not care at all, as long as it gets network > access every 5 minutes or so, and the entire system can power down for 4 > minutes > and 58 seconds as far as it cares. If it's doing media streaming, it may > insist on having at least one CPU burst per screen refresh, and the CPU can > go to sleep for the rest of the 1/30th of a second. > >> How usually it is performed, i.e. is it some periodic process, which >> wakes up periodically to check criterion for cpu load ? If so, isn't >> it problematic in PM terms, becuase it mean that the system is resumed >> periodically (as a result of the the periodic timer's interrupt), and >> all devices are resumed ? > > No, it can be done on a per-device basis. > > 'powertop' is a possibly useful tool for playing with this stuff that will > let you look at power management on the fly. As far as I understand, suspend/respond PM is not per device, but for all system, and wakeup source will resume again the whole system. I think you mean runtime suspend/resume in the answer. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: suspend/resume PM criterion for application
On Wed, 10 Sep 2014 20:26:48 +0300, Ran Shalit said: > What is usually the criterion for PM (power management) suspending > that application shall use ? Is it according to minimum threshold for > cpu load (as indication for no process) ? That will be highly application dependent. Something that checks your email in the background may not care at all, as long as it gets network access every 5 minutes or so, and the entire system can power down for 4 minutes and 58 seconds as far as it cares. If it's doing media streaming, it may insist on having at least one CPU burst per screen refresh, and the CPU can go to sleep for the rest of the 1/30th of a second. > How usually it is performed, i.e. is it some periodic process, which > wakes up periodically to check criterion for cpu load ? If so, isn't > it problematic in PM terms, becuase it mean that the system is resumed > periodically (as a result of the the periodic timer's interrupt), and > all devices are resumed ? No, it can be done on a per-device basis. 'powertop' is a possibly useful tool for playing with this stuff that will let you look at power management on the fly. pgp9BucHMj6iG.pgp Description: PGP signature ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies