DragonFly BSD
DragonFly commits List (threaded) for 2010-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: git: powerd - Initial load monitor and cpu frequency adjustment daemon


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 28 Jun 2010 20:29:09 -0700 (PDT)

:One more thing, if you want to change freq for all cpu domains,
:hw.acpi.cpu.px_global, which sets freq of all cpu domains, could be
:used, in lue of iterating all cpu domains :)
:
:Best Regards,
:sephe

    Yah, I saw that, and was tempted to avoid the dom scan.  But after
    thinking about it for a little bit I decided to set the groundwork
    for a more sophisticated handling of the load.  Which, p.s. I would
    love someone to implement!

    Here's what I am thinking.  If multiple domains are available we
    could add support for a global userland thread scheduler cpu mask that
    powerd is able to control.  We already have cpu masks via the
    usched_set() command, we just don't have a global cpu collapse mask
    for use by something like powerd.  It would be pretty easy to do.

    Then based on the cpu load, where 1.0 == one fully saturated cpu,
    we could speed up just N domains based on the load instead of all of
    them and restrict user processes to the related cpus for those specific
    domains.  Once the load climbs to ncpus all the domains would be
    throttled up to full and all cpus enabled.

    Right now I just turn up or down all the cpus because powerd has no
    control over which one(s) get the processes.  (also the load
    calculation has to be done across all of them for the same reason,
    regardless).

    It also occurs to me that if we had this feature in powerd we could
    make use of the overclocking available on the 6-core cpus (where some
    of the cpus can be overclocked if the remaining are idle).  In anycase,
    something like this is really needed now that AMD has gone to 6-core.
    We will probably be seeing 8-core within a year.

						-Matt




[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]