cpu scaling questions

David Zeuthen david at fubar.dk
Mon Oct 2 23:25:25 UTC 2006


On Mon, 2006-10-02 at 18:57 -0400, Alan Cox wrote:
> On Tue, Oct 03, 2006 at 12:06:26AM +0200, David Nielsen wrote:
> > > On a related note, gnome-power-manager 2.17.1 can control the CPU
> > > scaling (and change policy based on AC and battery, idle or performance
> > > etc), although this is obviously going to have to wait until FC7.
> > 
> > Oh that sounds great, Richard you never fail to impress me
> 
> I trust it works on the command line 

I'd note that dbus-send works pretty well. The interface is rather
simple, see [1]. You could also write some wrappers around either
dbus-send or other libraries, pick your poison.

> and in KDE as well ?

Funny thing, Alan, to ask a GNOME developer about KDE. Anyway, it seems
that at least one KDE frontend already works with this but I don't
really follow KDE closely, just the impression I got from the hal
list... and the fact that the guy who wrote the patch for hal is a KDE /
SUSE Powersave developer. 

I'd like to note that both GNOME, KDE and many distributors (also SUN)
is working together upstream on using the same interfaces (e.g. hal) for
desktop which is a good thing. 

Or... Alan... maybe your point was some variant of that boring old-old
"New technology seems to land in GNOME only and is hard to access from
command line and other desktop environments". Not sure what to answer to
that, I think that has been adequately discussed earlier on this list
(see archives), and I'm not sure you can blame GNOME developers for them
being the only / first to take new technology and put a nice interface
to it. Or maybe that wasn't your point, in which case I apologize.

     David


[1] :

[davidz at zelda pilgrim]$ dbus-send --system --print-reply
--dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer
org.freedesktop.DBus.Introspectable.Introspect 

method return sender=:1.3 -> dest=:1.28
   string "<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object
Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="org.freedesktop.DBus.Introspectable">
    <method name="Introspect">
      <arg name="data" direction="out" type="s"/>
    </method>
  </interface>
  <interface name="org.freedesktop.Hal.Device">
    <method name="GetAllProperties">
      <arg name="properties" direction="out" type="a{sv}"/>
    </method>
    <method name="SetMultipleProperties">
      <arg name="properties" direction="in" type="a{sv}"/>
    </method>
    <method name="GetProperty">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="v"/>
    </method>
    <method name="GetPropertyString">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="s"/>
    </method>
    <method name="GetPropertyStringList">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="as"/>
    </method>
    <method name="GetPropertyInteger">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="i"/>
    </method>
    <method name="GetPropertyBoolean">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="b"/>
    </method>
    <method name="GetPropertyDouble">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="out" type="d"/>
    </method>
    <method name="SetProperty">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="v"/>
    </method>
    <method name="SetPropertyString">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="s"/>
    </method>
    <method name="SetPropertyStringList">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="as"/>
    </method>
    <method name="SetPropertyInteger">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="i"/>
    </method>
    <method name="SetPropertyBoolean">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="b"/>
    </method>
    <method name="SetPropertyDouble">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="d"/>
    </method>
    <method name="RemoveProperty">
      <arg name="key" direction="in" type="s"/>
    </method>
    <method name="GetPropertyType">
      <arg name="key" direction="in" type="s"/>
      <arg name="type" direction="out" type="i"/>
    </method>
    <method name="PropertyExists">
      <arg name="key" direction="in" type="s"/>
      <arg name="does_it_exist" direction="out" type="b"/>
    </method>
    <method name="AddCapability">
      <arg name="capability" direction="in" type="s"/>
    </method>
    <method name="QueryCapability">
      <arg name="capability" direction="in" type="s"/>
      <arg name="does_it_have_capability" direction="out" type="b"/>
    </method>
    <method name="Lock">
      <arg name="reason" direction="in" type="s"/>
      <arg name="acquired_lock" direction="out" type="b"/>
    </method>
    <method name="Unlock">
      <arg name="released_lock" direction="out" type="b"/>
    </method>
    <method name="StringListAppend">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="s"/>
    </method>
    <method name="StringListPrepend">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="s"/>
    </method>
    <method name="StringListRemove">
      <arg name="key" direction="in" type="s"/>
      <arg name="value" direction="in" type="s"/>
    </method>
    <method name="EmitCondition">
      <arg name="condition_name" direction="in" type="s"/>
      <arg name="condition_details" direction="in" type="s"/>
      <arg name="rc" direction="out" type="b"/>
    </method>
    <method name="Rescan">
      <arg name="call_had_sideeffect" direction="out" type="b"/>
    </method>
    <method name="Reprobe">
      <arg name="call_had_sideeffect" direction="out" type="b"/>
    </method>
    <method name="ClaimInterface">
      <arg name="interface_name" direction="in" type="s"/>
      <arg name="introspection_xml" direction="in" type="s"/>
      <arg name="rc" direction="out" type="b"/>
    </method>
    <method name="AddonIsReady">
      <arg name="rc" direction="out" type="b"/>
    </method>
  </interface>
  <interface name="org.freedesktop.Hal.Device.SystemPowerManagement">
    <method name="Suspend">
      <arg name="num_seconds_to_sleep" direction="in" type="i"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Hibernate">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Shutdown">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Reboot">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetPowerSave">
      <arg name="enable_power_save" direction="in" type="b"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
  </interface>
  <interface name="org.freedesktop.Hal.Device.CPUFreq">
    <method name="SetCPUFreqGovernor">
      <arg name="governor_string" direction="in" type="s"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetCPUFreqPerformance">
      <arg name="value" direction="in" type="i"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetCPUFreqConsiderNice">
      <arg name="value" direction="in" type="b"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="GetCPUFreqGovernor">
      <arg name="return_code" direction="out" type="s"/>
    </method>
    <method name="GetCPUFreqPerformance">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="GetCPUFreqConsiderNice">
      <arg name="return_code" direction="out" type="b"/>
    </method>
    <method name="GetCPUFreqAvailableGovernors">
      <arg name="return_code" direction="out" type="as"/>
    </method>
    <method name="SetCPUFreqGovernor">
      <arg name="governor_string" direction="in" type="s"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetCPUFreqPerformance">
      <arg name="value" direction="in" type="i"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetCPUFreqConsiderNice">
      <arg name="value" direction="in" type="b"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="GetCPUFreqGovernor">
      <arg name="return_code" direction="out" type="s"/>
    </method>
    <method name="GetCPUFreqPerformance">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="GetCPUFreqConsiderNice">
      <arg name="return_code" direction="out" type="b"/>
    </method>
    <method name="GetCPUFreqAvailableGovernors">
      <arg name="return_code" direction="out" type="as"/>
    </method>
  </interface>
</node>
"





More information about the fedora-devel-list mailing list