summaryrefslogtreecommitdiffstats
path: root/doc/README.txt
diff options
context:
space:
mode:
authorPhilip Knirsch <pknirsch@hamburg.stuttgart.redhat.com>2009-02-26 18:38:39 +0100
committerPhilip Knirsch <pknirsch@hamburg.stuttgart.redhat.com>2009-02-26 18:38:39 +0100
commit82e5d550f1f1da442f4844986477c4a7c0bafa55 (patch)
treee8b211752ab80601fc6748015d08369a526362d2 /doc/README.txt
parent6b79fa915df800feeadbeab68e6a36a1a958bc2e (diff)
downloadtuned-0.1.2.tar.gz
tuned-0.1.2.tar.xz
tuned-0.1.2.zip
- Added config file option to enable/disable pluginsv0.1.2
- Switched from ConfigParser to RawConfigParser - Renamed doc/README.txt to doc/DESIGN.txt - Added tuned.conf man page - Updated tuned man page - Updated package descriptions (#487312) - Added documentation for utils scripts (#487312)
Diffstat (limited to 'doc/README.txt')
-rw-r--r--doc/README.txt143
1 files changed, 0 insertions, 143 deletions
diff --git a/doc/README.txt b/doc/README.txt
deleted file mode 100644
index 40a1d9f..0000000
--- a/doc/README.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-Automatic system tuning daemon: tuned
-=====================================
-
-Concept:
---------
-
-- Monitoring plugins for different sources (cpu, disk, network, sound, memory)
-- Each monitoring plugin has a getLoad() method that returns a value between 0 - 100
-- Tuning plugins for different targets (cpu, disk, network, sound,
- memory etc) and modes (power or performance)
-- Each plugin can set various weights for any monitoring source (0 - 100)
-- Each tuning plugin has a setTuning(load) method
-- Tuning will be based on accumulated load*weight for each target
-
-
-
-Diagram:
---------
-
- [Mon-P] [Mon-P] [Mon-P]
- \ | /
- \ | /
- \ | /
- \ | /
- \ | /
- [tuned]
- / | \
- / | \
- / | \
- / | \
- / | \
- [Tune-P] [Tune-P] [Tune-P]
-
-
-
-tuned:
--------
-
-- Is the main interface and aggregator
-- Acts as a "middleware"
-- Only general functionality. Specific hw/mon functionality only in plugins
-- Has a list of all mon and pm plugins
-- Monitoring interval is configurable (1 wakeup per interval to reduce # of
- wakeups)
-- Weights for each Mon can be set for each Tune plugin
-- Default weight is 0
-- Aggreated load: mon-p.getLoad() * tune-p.weights[mon-p] / 100. If all weights
- together are 100 then this will be a balanced and normalized load
-- Accumulated weights per tune plugin can be > 100 or < 100. Need to decide
- whether to automatically normalize it or not
-/* - Tuning aggressivness can be specified from 0 to 100. 0 == no PM, 100 means
- always fully tune even under full load. Configurable globally for all tuning
- plugins and/or individually */
-- Tuning modes should follow the system/user settings for power management of
- the currently running GUI (e.g. presentation mode etc)
-- all fooLoad() methods always return a hash like this: {cat -> {devname -> {subcat = load}}}
- to support multiple devices per monitor (e.g. disks, network cards)
-- Optional parameters for fooLoad() calls: category, subcategory and devname
-- Each plugin can be completely disabled.
-- External interfaces to allow requests for monitoring applications
-
-
-Monitor plugins:
-----------------
-
-- Monitor plugins can be based on any source. E.g. collectd or stap scripts
-- Each plugins needs to register to tuned via registerMonitorPlugin()
-- Each plugins has it's own configuration. Only external interface to tuned
- is getLoad() (which returns a list of tuples, see tuned)
-- Each plugin needs to be in a specific category
-- Examples of categories that can be monitored:
- o CPU
- o Disk IO
- o Network IO
- o Memory IO
- o USB
- o Graphics
- o External input (keyboard/mouse)
-- Subcategories possible:
- o Input
- o Output
- o Blocksize
-- Should avoid disk/network io to prevent unecessary wakeups
-
-
-Tuning plugins:
----------------
-
-- Tuning plugins will be HW specific
-- Each plugins needs to register to tuned via registerTuningPlugin()
-- Blacklists for know problems with HW
-- There are 2 types of tuning plugins:
- o Power
- o Performance
-- Each plugin has to define it's own policy for handling the different
- levels of aggregated load
-- Each plugin has an interface called setTuning(load) where load is the aggreated
- load for that tuning plugin modified by the specific or overall level of
- tuning aggressiveness
-- Several levels of aggressiveness: none, low, medium, high, max
-- Parts that can be tuned:
- o CPU
- o Disk IO
- o Network IO
- o Memory IO
- o USB
- o Graphics
- o External input (keyboard/mouse)
-
-
-Example:
---------
-
-monitoring plugin for disk io: Montiors either via /proc or other means the IO
-for all disks in the system.
-
-getLoad() returns something like: {"DISK" : {"sda" : {"READ" : 0.24, "WRITE" :
-0.01, "SIZE" : 0.31}}}
-
-This means that sda would be at 24% of it's known peak load in regard to
-reads, at 1% in regard to writes and at 31% in regard to blocksizes.
-
-Based on that information a tuning plugin for disk io could now decide to do
-the following:
-
-load = tuned.getLoad("DISK")
-for devnames in load["DISK"].keys():
- devnode = load["DISK"][devname]
- # Spin down after 30s and max powersave if device isn't in use
- if (devnode["WRITE"] == 0.0 and devnode["READ"] == 0.0) {
- hdparm -S5 /dev/devname
- hdparm -B1 /dev/devname
- # If no write and little reads: Allow drive to spin down after 5m
- # and max powersave.
- } elseif (devnode["WRITE"] == 0.0 and devnode["READ"] <= 0.05) {
- hdparm -S60 /dev/devname
- hdparm -B1 /dev/devname
- # If write are done or more reads don't allow disk to spindown
- # and raise powersave mode to medium range
- } else {
- hdparm -S0 /dev/devname
- hdparm -B128 /dev/devname
- }