[ohm] OHM vs. PPM

Rob Taylor rob.taylor at codethink.co.uk
Mon May 5 10:19:09 PDT 2008


Holger Macht wrote:
> On Mi 30. Apr - 16:51:56, Rob Taylor wrote:
>> Holger Macht wrote:
>>> Hi,
>> Hi Holger, sorry for taking so long to reply.
>>
>>> might be a quite provoking subject, however, I like to attract some
>>> responses... ;-)
>>>
>>> For quite some while now, I'm looking into finding a replacement (and
>>> starting to become active in the development for it), for the powersave
>>> daemon we use on openSUSE based distributions. Actually it's about the
>>> question: "Who does the power management job when there's no desktop
>>> applet?"
>>>
>>> Obviously, two frameworks caught my eye... open-hardware-manager (OHM [1])
>>> and the power-policy-manager (PPM [2]). So I have a couple of questions:
>>>
>>>  1. Is OHM aught to be used on usual desktop/laptop systems? I mean, it
>>>     would be a valid target to define that OHM is "just" meant for
>>>     embedded devices and thus, development wouldn't consider
>>>     problems/drawbacks on the desktop side.
>> OHM needs some work before its usable on a desktop system, mainly in that 
>> it should become a session daemon rather than a system daemon - connecting 
>> up to X from the system is not ideal.
> 
> Definitely agree here. We did this in the past and it kinda worked, but we
> always had to do ugly hacky solutions.
> 
> But it depends on if you actually want OHM to run in desktop session.
> We've already solved the issues for defining policy in the desktop
> session. We've got desktop policy managers like kpowersave and
> gnome-power-manager for that. What I like to solve is not the desktop
> policy part, but the server and system level bits.
> 
> This might sound strange, using an architecture created for embedded
> devices, for servers. But those two systems have more in common than one
> might think of. For embedded, at least AFAIK, you can consider the one
> session you have as system session. There's nothing like a decent desktop
> session. For server systems without a desktop, you also have only this one
> system level.
> 
>>>  2. Are you guys in contact in any kind with the PPM Intel developers?
>> Not particularly. I've tried to get a discussion going, but haven't had 
>> much luck. It maybe that I've just not managed to reach the right people.
> 
> Yes, this obviously is sometimes kinda hard.
> 
>>>  3. As I understand it, OHM is more than PPM. It doesn't exclusively look
>>>     at power management, but also on other aspects. Due to it's plugin
>>>     system, it could be used for any kind of things. Same plugin system in
>>>     PPM, but with the difference that PPM's defined target is just power
>>>     management AFAICT. So, at first glance, there are duplicate
>>>     development efforts. Again ;-) I mean, we had so many different
>>>     implementations (scripts, C++ daemons, etc..) in the past, so I think
>>>     it's time to agree on one single framework. At least I have to choose
>>>     one :-) Any statement about that?
>> Yep, OHM is more about generic policy management and allowing an easy way 
>> to define behaviour. I'd hoped that starting a fd.o project might encourage 
>> people to come in and discuss the various viewpoints, but that's not 
>> happened hugely. I should note that OHM was started before PPM became 
>> public.
> 
> I know that. PPM was definitely developed more secret that OHM.
> 
>> I guess the main difference between OHM and PPM at this point is that PPM 
>> is much more structured, with a langauge for policy definition. OHM at this 
>> point is really little more than a key/value state store, an event 
>> transition system and plugins that can respond to events and modify the 
>> store.
>>
>> I talked to David Zeuthen about both frameworks a while back at the GNOME 
>> Boston summit, his take was that both were wrong for running at the system 
>> level as policy can often be user and desktop specific.
> 
> I don't agree here. In my opinion, OHM shouldn't handle the bits which are
> desktop and/or user specific. Of course it can do, but see below... For
> embedded, you can use any policy plugin you like. You don't have something
> like a desktop session, have you? Or the other way round, you don't have
> something like a system session. You only have one single session AFAIKS.
> 
> For the Laptop case, we have desktop session policy agents. For system
> level, I like to use OHM. You can consider the system session as just
> another session without an X server.
> 
> Let me become a little more detailed about what I'm thinking of:
> 
> In openSUSE, we're currently using the following mechanism. System boots
> up, having the powersaved started at an early point. It defines a default
> power management policy until another, maybe more intelligent, policy
> agent comes up. You can do this nicely with setting priority on a D-Bus
> service. powersaved is setting up a org.freedesktop.PowerManagement
> service with low priority. When gnome-power-manager comes up, it requests
> the same service with higher priority and obtains it. At this point in
> time, the powersaved knows that it shouldn't handle power management (or
> certain tasks) anymore because there is a more intelligent agent, one the
> user can deal with. As soon as gnome-power-manager quits, thus dropping
> the service, powersaved kicks in automatically. This way prevents the
> system from being left alone without a default policy (caring about power
> button presses, etc.), in turn making it appropriate for server use.
> 
> And that's were I like to see OHM. Replacing the system level bits of
> powersaved. Serving two main tasks: The first is to carry out a default
> policy until a more intelligent agent is running (this policy could even
> be read out from a configuration a desktop policy agent once defined). The
> second is to care about policy a common user should never be able to
> see. Things like thermal management or fine-grained power management
> decisions.

I'm going to just jot down my thoughts here on session-v-system. I'm not
particularly thinking about OHM here, but there's some thoughts I want
to make clear :)

Now one thing I need to understand here is: why does doing what
powersaved does require a system service?

Taking things it does from the docs:

  * Four predefined powersave schemes
   - sounds pretty much like a session/user level decision

  * Full support for cpu frequency scaling, either through kernel
(ondemand governor) or within userspace. There are three predefined cpu
policies.
   - surely this is covered by HAL's org.freedesktop.Hal.Device.CPUFreq
interface [1]?

  * Battery management. This includes warning the admin/user when a
critical battery state is reached and automatic shut down of the system
on specific events (fully configurable).
   - signalling should be done via HAL's battery namespace [2]
   - action policy could be system or user defined.

  * Supporting Suspend to disk, Suspend to and ram and standby. This
includes caring about setting up modules, services and a lot more.
   - should be covered by
org.freedesktop.Hal.Device.SystemPowerManagement interface [3]

  * Automatic cpu throttling depending on the current cooling policy
    - This is interesting. Should be system defined policy for sure.

  * Full featured dbus implementation for communication with various
clients like kpowersave, wmpowersave, or gkrellm-powersave.
  - obviously unneeded if you don't need a system daemon.


As I see it the two things that have got associated in this discussion
that need disassociating is system and session *policy* and system and
session *daemons*.

Using PolicyKit we can define what actions a session-level daemon can
perform, so if an administrator wishes to take control of some aspects
of power management (i.e. multi user system) they could:
  * have a policy manager running as an administrator with the
administrators system-specific policy, authorized by policykit
  * disallow those actions or policy decisions by other users.


One question of session-vs-system is at what point power managment 
policy is needed. Is it needed before gdm runs?

What do you guys think?

Rob

[1]
http://people.freedesktop.org/~david/hal-spec/hal-spec.html#interface-cpufreq

[2]
http://people.freedesktop.org/~david/hal-spec/hal-spec.html#device-properties-battery

[3]
http://people.freedesktop.org/~david/hal-spec/hal-spec.html#interface-device-systempower
>>> I already checked out both frameworks and gave them a quick try, both
>>> seemed to work, at least to a certain extend. But "remaining issues" which
>>> can be fixed are not a problem here.
>> How's your investigation gone so far?
> 
> Had a closer look, and OHM seems to be exactly what I was looking for ;-)
> 
> Of course depending on the above opinions and if you agree for what OHM
> should actually be designed for.
> 
> 
> Thanks,
> 	Holger
> 
> _______________________________________________
> Ohm-devel mailing list
> Ohm-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/ohm-devel




More information about the Ohm-devel mailing list