2009-05-04 Guillaume Chazarain * NEWS, THANKS, iotop.1, iotop/ui.py: Added --quiet 2009-05-03 Guillaume Chazarain * NEWS, THANKS, iotop.1, iotop/ui.py: Added --time 2009-05-02 Guillaume Chazarain * NEWS, iotop.1, iotop/data.py, iotop/ui.py: Added the -k, --kilobytes option 2009-05-02 Guillaume Chazarain * MANIFEST.in, setup.py: Upgrade setuptools from 0.6c6 to 0.6c9 2009-03-31 Guillaume Chazarain * MANIFEST.in, release.sh, setup.cfg: Include a ChangeLog in the release 2009-03-30 Guillaume Chazarain * iotop/data.py: Put kernel threads between square brackets 2009-03-30 Guillaume Chazarain * iotop/ui.py: Properly sanitize the value in the error report 2009-03-30 Guillaume Chazarain * NEWS, iotop.1, iotop/data.py, iotop/ui.py: - Added the --accumulated option to show the accumulated traffic instead of the current bandwidth (dynamically toggled with 'a') - Resist to process dying during the taskstats retrieval - Adjusted column headers 2009-03-29 Guillaume Chazarain * NEWS: Document some recent changes 2009-03-29 Guillaume Chazarain * iotop/data.py, iotop/ui.py, iotop/vmstat.py: - Manage a two level tree of processes: o with --processes: [tgids...] -> [tid...] o without: [tids...] -> [tid] => This handles nicely the case where a thread dies during a sampling period and we should drop its stats. - Don't cache the ioprio as it may change - Get the total I/O bandwidth from /proc/vmstat instead of summing it, as we can count some of it twice (ntfs-3g, nfsd...) 2009-03-29 Guillaume Chazarain * iotop/ui.py: Added --profile 2009-03-29 Guillaume Chazarain * iotop/data.py: Don't crash when a thread just disappeared 2009-03-29 Guillaume Chazarain * iotop/data.py, iotop/ui.py: Better UID detection: read it from stat(/proc/PID) instead of /proc/PID/status and cache it only if not running as root as the process may setuid(). Rewrite check_if_valid() to is_monitored(). Also re-read /proc/PID/status if needed when re-reading /proc/PID/cmdline. 2009-01-31 Guillaume Chazarain * THANKS, iotop/ui.py: From: Ryan Lovett When running in batch mode, iotop doesn't flush its output so if you're writing to a file, you won't see anything (e.g. via 'tail -f') until iotop terminates 2008-12-29 Guillaume Chazarain * iotop/data.py: Add a meaningful __repr__() 2008-12-29 Guillaume Chazarain * iotop/data.py: If a new pinfo() is successfully created but we cannot get its taskstats, it will not have a .ioprio field, so it must be garbage collected. So, initialize .mark to False so that incompletely built objects are garbage collected. Traceback (most recent call last): File "./iotop.py", line 11, in main() File "/home/g/iotop/iotop/ui.py", line 271, in main curses.wrapper(run_iotop, options) File "/usr/lib/python2.5/curses/wrapper.py", line 44, in wrapper return func(stdscr, *args, **kwds) File "/home/g/iotop/iotop/ui.py", line 226, in run_iotop ui.run() File "/home/g/iotop/iotop/ui.py", line 97, in run self.process_list.duration) File "/home/g/iotop/iotop/ui.py", line 195, in refresh_display lines = self.get_data() File "/home/g/iotop/iotop/ui.py", line 183, in get_data return map(format, processes) File "/home/g/iotop/iotop/ui.py", line 167, in format line = '%5d %4s %-8s %11s %11s %7s %7s ' % (p.pid, p.ioprio, AttributeError: 'pinfo' object has no attribute 'ioprio' 2008-12-28 Guillaume Chazarain * iotop/data.py: The I/O priority can be dynamically changed, so we must re-fetch it every time. 2008-12-28 Guillaume Chazarain * iotop.1, iotop/ui.py: Added the 'p' key to dynamically toggle the --processes option 2008-12-25 Guillaume Chazarain * iotop/ui.py: The interactive control 'O' is the same as 'o'. 2008-12-25 Guillaume Chazarain * iotop.1, iotop/data.py, iotop/ioprio.py, iotop/ui.py: Added support for showing the I/O priority 2008-12-23 Guillaume Chazarain * iotop/ui.py: More verbose error handling for this exception: Traceback (most recent call last): File "./iotop.py", line 11, in main() File "/src/iotop/iotop/iotop/ui.py", line 249, in main curses.wrapper(run_iotop, options) File "/usr/lib64/python2.5/curses/wrapper.py", line 44, in wrapper return func(stdscr, *args, **kwds) File "/src/iotop/iotop/iotop/ui.py", line 205, in run_iotop ui.run() File "/src/iotop/iotop/iotop/ui.py", line 95, in run self.process_list.duration) File "/src/iotop/iotop/iotop/ui.py", line 198, in refresh_display self.win.addstr(i + 2, 0, lines[i].encode('utf-8')) _curses.error: addstr() returned ERR 2008-11-16 Guillaume Chazarain * iotop/ui.py: Also keep only 2 decimal digits when printing bytes per second 2008-09-07 Guillaume Chazarain * NEWS, iotop/version.py: Version bump and mention that -P is now fully implemented 2008-09-07 Guillaume Chazarain * iotop.1, iotop/ui.py: Clarify -p help text, and cosmetically add a terminating '.'. 2008-09-07 Guillaume Chazarain * iotop.1: iotop is a mix of top(1) and vmstat(1) 2008-09-07 Guillaume Chazarain * iotop.1, iotop/data.py: Precisely document required kernel options http://bugs.debian.org/497360 2008-09-06 Guillaume Chazarain * iotop/data.py: Reimplement -P without using the half implemented TASKSTATS_CMD_ATTR_TGID 2008-09-06 Guillaume Chazarain * iotop/data.py, iotop/ui.py: Cleanup: introduce a Stats class to aggregate the useful output from taskstats insteaf of using a dict. 2008-08-18 Guillaume Chazarain * iotop/data.py: It seems the Name: field can sometimes be empty. http://bugs.debian.org/492568 2008-08-18 Guillaume Chazarain * iotop/data.py: Cosmetic 2008-07-07 Guillaume Chazarain * NEWS, iotop/version.py: The new features list is not that long 2008-06-24 Guillaume Chazarain * iotop/data.py: Also handle invalid UTF-8 2008-06-23 Guillaume Chazarain * iotop/ui.py: Unlike insstr, addstr is picky about lines wider than the terminal. 2008-06-23 Guillaume Chazarain * iotop/data.py, iotop/ui.py: Try harder at handling UTF-8 2008-06-18 Guillaume Chazarain * NEWS, THANKS, iotop/data.py, iotop/ui.py: UTF-8 strings are now correctly handled. 2008-06-18 Guillaume Chazarain * NEWS, iotop/version.py: Bump version 2008-05-28 Guillaume Chazarain * iotop.1: Fix for http://lintian.debian.org/reports/tags/hyphen-used-as-minus-sign.html 2008-05-23 Guillaume Chazarain * MANIFEST.in, install-rpm.sh, setup.cfg, setup.py: Package the man page 2008-05-22 Guillaume Chazarain * iotop/ui.py: Reordered the option like in the man page, as it's a more sensible ordering 2008-05-22 Guillaume Chazarain * THANKS, iotop.1: Added a man page 2008-05-22 Guillaume Chazarain * iotop/ui.py: Safer color terminal handling 2008-05-22 Guillaume Chazarain * iotop/ui.py: Stop flickering during refresh 2008-05-22 Guillaume Chazarain * NEWS, iotop/data.py, iotop/ui.py: Added workaround for missing ac_etime in TASKSTATS_CMD_ATTR_TGID 2008-04-20 Guillaume Chazarain * NEWS: Typo 2008-04-20 Guillaume Chazarain * iotop/ui.py: Document the 'o' key. 2008-04-20 Guillaume Chazarain * iotop/ui.py: Consistency in the grammar 2008-04-20 Guillaume Chazarain * iotop/ui.py: Filter processes to display before trimming them to avoid removing processes that would be displayed after the trimming. For example, sorting by PID could place I/O active processes at the end, but we don't want to delete them as they would be shown anyway is -o is used. 2008-04-06 Guillaume Chazarain * NEWS, iotop/ui.py: Typing 'p' dynamically toggle the --only option 2008-03-20 Guillaume Chazarain * bin/iotop: Detect unsuccessful attempts at running an uninstalled iotop 2008-03-14 Guillaume Chazarain * iotop.py, run-iotop: Let's use the obvious filename 2008-03-10 Guillaume Chazarain * release.sh: Remove blank line 2008-03-10 Guillaume Chazarain * release.sh: Added release script 2008-03-09 Guillaume Chazarain * MANIFEST.in, bin/iotop, setup.cfg, setup.py: Added packaging information 2008-03-09 Guillaume Chazarain * iotop/ui.py, iotop/version.py: Extracted out version number 2008-03-09 Guillaume Chazarain * COPYING: Added GPLv2 COPYING file 2008-03-09 Guillaume Chazarain * THANKS: Added THANKS file 2008-03-09 Guillaume Chazarain * .gitignore: Ignore byte compiled files 2008-03-09 Guillaume Chazarain * NEWS: Added NEWS file 2008-03-09 Guillaume Chazarain * genetlink.py, iotop.py, iotop/__init__.py, iotop/data.py, iotop/genetlink.py, iotop/netlink.py, iotop/ui.py, netlink.py, run-iotop: Code reorganization 2008-03-05 Guillaume Chazarain * genetlink.py, iotop.py, netlink.py: Instead of copy/pasting pynl80211 in iotop.py, keep it in separate files 2008-03-05 Guillaume Chazarain * iotop.py: Update e-mail and copyright information 2008-03-05 Guillaume Chazarain * iotop.py: Reading the cmdline of a dead process raises an exception too. Reported by Roland Kletzing 2008-03-02 Guillaume Chazarain * iotop.py: Skip the dirname only when the cmdline starts with an absolute path 2008-01-20 Guillaume Chazarain * iotop.py: Fix the typo with the right correction this time 2008-01-20 Guillaume Chazarain * iotop.py: Simplify help generation 2008-01-18 Guillaume Chazarain * iotop.py: Bump version 2008-01-18 Guillaume Chazarain * iotop.py: Removed embedded history comments as it is now in git. 2008-01-18 Guillaume Chazarain * iotop.py: Added --only as suggested by Iain Lea 2008-01-18 Guillaume Chazarain * iotop.py: Fix typo, reported by Iain Lea 2007-12-19 Guillaume Chazarain * iotop.py: Tolerate misconfigured terminals 2007-09-30 Guillaume Chazarain * iotop.py: Fixed -b 2007-08-26 Guillaume Chazarain * iotop.py: Document taskstats bug: http://lkml.org/lkml/2007/8/2/185 2007-08-25 Guillaume Chazarain * iotop.py: Handle terminal resizing 2007-08-25 Guillaume Chazarain * iotop.py: More accurate cutting of the command line 2007-08-19 Guillaume Chazarain * iotop.py: handle empty process list 2007-08-19 Guillaume Chazarain * iotop.py: Fix "-P -p NOT_A_TGID", optimize -p 2007-08-13 Guillaume Chazarain * iotop.py: Handle short replies, and fix bandwidth calculation when delay != 1s 2007-07-23 Guillaume Chazarain * iotop.py: Added support for taskstats version > 4 in iotop.py 2007-07-15 Guillaume Chazarain * Initial import of iotop