This repository has been archived by the owner on Nov 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 330
/
TODO
83 lines (70 loc) · 4.01 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
### Disclaimer
This is my TODO list. If you're interested in one of these features, there
are 2 options. Either wait for someone to implement it or sponsor someone
to implement it.
If you want to implement something, please contact me first so that we can
discuss acceptable implementations. In some cases I haven't thought about
it too deeply, but for others I know exactly what I require.
If you have other nice ideas that you think would be an improvement, please
contact me as well. :) Send an email to: Dag Wieers <dag@wieers.com>
### Usability
+ Add --config option and use /etc/dstat.conf and ~/.dstat to influence output (see example dstat.conf)
+ Allow to force to given magnitude (--unit=kilo)
+ Look at possibilities to show deviation (on second line ?)
+ Check for dark/light background color and change colors accordingly (see dstat.conf)
+ Show parts of counters in other colors (eg. color the 6 in 6134B in yellow to indicate it's kilobyte)
### Export/Graph
+ Interface with rrdtool (python-rrd ?)
+ Allow for different types of export modules (only CSV now)
+ Allow to write out to syslog (or remote syslog)
+ Allow to write unbuffered to disk
### Plugin improvements
+ Don't calculate counters twice when a plugin is loaded twice
### Extending statistics (help welcome!)
+ Add slab plugin (see /proc/slabinfo and slabtop)
+ Add xorg plugin (xdpyinfo, xrestop)
+ Add icmp and ntp plugin ?
+ Add application plugin (-a or -A pid,cmd)
+ Add user plugin (number of users logged on, utmp is not that useful, /proc/key-users)
+ Look into interfacing with apps (bind, sendmail, postfix, squid, amavisd, laus, samba)
+ Look into interfacing with specific HW counters in /proc
+ Look at /proc/meminfo, /proc/mdstat, /proc/netstat, /proc/snmp, /proc/vmstat
+ Look at /proc/fs/cifs/stats
+ Add i2c plugin (see /sys/class/i2c-adapter/i2c-*/*/*/*/*/*)
+ Allow for SNMP counters to be added
+ Add LVM stats
+ Add 'most expensive io app' based on /proc/pid/io (topio_ops)
+ Add 'most expensive X app' (look at xrestop)
+ Add number of (active) X sessions and X clients
+ Allow to have multiple '1st expensive ... app' and '2nd expensive ... app'
### Documentation (help welcome!)
+ Create document on general system performance tuning
(explaining the different values in /proc, especially the concerning ones)
+ Create document on general system performance tools
(explaining the different uses of tools like dstat, iostat, pmap, strace, tcpdump)
+ Comply to PEP8: http://www.python.org/dev/peps/pep-0008/
### General issues
+ Timer is not as accurate on 2.6 kernel as on 2.4, possibly scheduling differences
+ Python 1.5 prints 'L' for long, crashes when int()
+ Implement better (?) protection against counter rollovers (see mail from Sebastien Prud'homme)
+ Plugins currently have to be written in python 1.5 to work for dstat15 (lowest common denominator)
+ When stdout is suspend (Ctrl-S) you get: IOError: [Errno 4] Interrupted system call (Dbt 309953, Marc Lehmann, supastuff@freenode)
### Plugin issues
+ plugins that use /proc/pid are reasonably slow
+ app plugin: takes second argument when finding known interpreter (is wrong when second argument
+ disk plugin: /proc/partitions can have negative numbers, seen on systems with long uptime. dstat handles this except for calculating the very first stat, no work-around possible?
+ proc plugin: (run and blk) does not work on 2.4.24+, to be confirmed
+ proc plugin: seem to be off-by-one compared to vmstat (some of the time, this is what I get from /proc/stat)
+ swap plugin: (new one) is slower than swapold
+ tcp plugin: is very slow and generates lots of softirqs (on busy systems), to be confirmed
### Redesign (v2.0)
+ Create modules that can contain samples of different units
CPU: (see mpstat)
sys, usr, idl, iow, hiq, siq (percentage)
intr/sec (int)
IO: (see iostat -x)
tps (int)
blk_read/sec, blk_wrtn/sec (kB/sec)
+ Design proper object model and namespace for _all_ possible stats
+ Create a seperate curses-based tool, much like nmon (dstat stays line-based)
+ Create client/server monitoring tool