|Minimum required PyKDE/PyQt|
|Submitted: Jul 21 2011|
Updated: Sep 11 2013
This plasmoid uses several integrated backends to receive its input. Please read at least section REQUIREMENTS before installation.14.0: Holds the new configuration interface and supports synchronised plasmoid instances on multiple workspaces
Moreover, I'd be very grateful for any kind of feedback.
14.1: Timeout for network notification messages.
14.2: Optional Irix mode, 64-bit support, many optimizations concerning the on-click-function and the panel mode
14.3: Additional configuration file for procps-ng
Isn't everything some kind of process? At least on a computer it is. So let's keep an eye on them.
This plasmoid initially was a clumsy spin-off from Dmitry Makovey's tail plasmoid, but after I got more and more used to python and the program got more and more complex I cut everything superfluous and eventually separated it from tail.
This plasmoid uses several programs to get its input. The collected data is neither unique nor new, but the idea to clearly sum it up in one single program is. This task monitor displays up to four different tasks, each with different priority.
CPU intensive task:
Name and the percentage of the most CPU intensive task. The underlying top daemon is very efficient and does not really affect CPU, it is piped to shared memory.
Used backend: http://linux.die.net/man/1/top
Memory intensive task:
Name of the most memory intensive task, combined with a measure of size (absolute value or percentage to total available memory).
The implementation is the same as for the task above.
IO intensive task:
The task (or one of its threads) that currently triggers most IO.
The software package includes an own version of iotop that sends data via shared memory.
Original version: http://guichaz.free.fr/iotop/
NET intensive task:
The task that eats up your bandwidth.
You will be prompted for an administrator password when starting nethogs.
Like the one of iotop, this is a modified nethogs daemon that uses IPC.
Original version: http://nethogs.sourceforge.net
Additionally, the configurable update interval plays a crucial role in resource consumption. The smaller it is set, the more resources are needed.
There should be slightly less resource consumption (in terms of IO as well as overall) since release 8.0. Release 10.0 eventually cut out all IO.
The plasmoid is highly configurable to fit most desktop designs.
It supports highlighting of processes, either through a simple colour change after a certain limit of per cents or via colour gradient. For the statisticians among you, you can even log output. BusyTasks is only useful if it is always visible (e.g. residing on a panel) If you'd have got to minize windows or show the desktop to have a glance on it you could equally start the system monitor.
REQUIREMENTS: (and installation instructions)
The program was tested under several different distributions and is considered stable.(read below). Some of the used daemons may require additional libraries, however.
For full functionality, you need to meet the following requirements:
Installation of top in your command-line interpeter. This usually is the case on UNIX OSs.Proper value of $HOME variable in the shell environment. Verify with "echo $HOME".Python version 2.
On new systems version 3 may only be installed. Use the bash command "python -V" to check your version, additionally you may verify the installation of python2 by entering "python2 -V". Usually it's easy to get previous releases, they are not interferingThe System V IPC module for python.
If you don't have it yet, visit http://semanchuk.com/philip/sysv_ipc/ for download and install instructions.
Download file, go to the related directory and run "sudo python setup.py install". For systems linking python 3 per default, type "sudo python2 setup.py install". If it quits moaning about a python file install the package "python-dev(el)" first. Eventually restart KDELibraries for iotop and nethogs, whose scripts/binaries are integrated in the plasmoid package. There is a slight chance that one of them does not work due to missing libraries. In this rare case, there are basically two ways to proceed: Either install the standalone versions of iotop and nethogs and benefit from automatic dependency resolution or get the missing files/packages manually. BusyTasks usually reports the problem. (read section "troubleshooting")On 64-bit architectures you need to install the 32-bit libraries
Oddly enough, inside a panel configuration was not possible in KDE prior to version 4.8. You had to drag it out, change settings there and redrag it into the panel.If you have a problem with resizing, activate the option "resize manually"On systems with linux kernel 3.1 (or above), iotop must be run in administration mode. Before activation, make sure there's a permissions error with standard rights. Be careful, arbitrarily switching between user and administration mode may cause an IPC permission error!If the iotop daemon does not start, some libraries may be missing. (see plasmoid output) Install them via KPackageKit, pacman, portage, etc.If none of the implemented nethogs daemons run, make sure you have the required libraries (libpcap). If it still doesn't work, download the sources (see links), compile it directly on your system, copy it to the BusyTasks directory and overwrite one of the existing nethogs0* daemons.If the name resolution of VirtualBox virtual machines does not work and you see some weird symbols, close the plasmoid, delete the current bashpipetosharedmemory75* binaries from the contents folder and use the old ones by removing the *.old endings. Additionally, they must be executable.On some systems the superuser frontend does only accept passwords entered in terminals. As a consequence the "use administrative password"-setting does not work, you've to manually enter your password each time. As a workaround, one may handle the daemons in the appropriate system runlevel.If the iotop and nethogs daemon do not start, be sure to have entered the correct password.
Iotop may dump a misleading curses error: "_curses.error: setupterm: could not find terminal"If you still don't get it to work, contact me here or via mail. You probably found a bug/compatibility problem.
Since release 12.5 the program should be nearly bug free.
Please report here or via mail (see plasmoid info) if your plasma-desktop crashes (so that I can at least remove the above claim), which usually happens when BusyTasks is removed from the desktop.
Known severe bugs:
Bugs occurring too rarely to be easily classified:
1. Nethogs transfer statistics obviously arbitrarily resets at low transfer rates (further examination/observation necessary)
2. VirtualBox name resolution does not work in rare cases (i.e. starting Windows XP before Unix, further examination/observation necessary)
3. The format of the data string provided by nethogs does not always meet the requirements for the plasmoid.
Python may be the wrong language to write such a tool in.
However, plasma-desktop does not seem to be affected by the plasmoid. On a thirteen years old (!) PIV 1.8GHz the most cpu-intensive plasmoid part is one of its daemons: iotop with 10% cpu load on average, which is quite good for a computer that takes 5-10 min to start up. Given the fact that iotop itself is written in python I even expect some space for improvement using a faster programming language.
Currently the process of (re)configuration is horribly slow.
On the one hand, bad code is responsible for the speed inefficiency, on the other hand it is my quest for user-convenience and upwards-compatibility that accounts for this behaviour. As jobs of configuration or organisation are usually done only twice per runtime (at startup and at termination) it's still acceptable.
I'll probably rewrite the whole program (including the iotop daemon) in C++ sometime (sometime...what a nice euphemism for never ;-)). For the moment reconfiguration performance remains the only real bug.
Additional note: It seems that there's slightly less CPU utilization since version 12.3 on my system. Could just be a coincidence, though.
TESTS: Program successfully tested on:
Kubuntu 9.10, 11.04, 11.10, 12.04 64-bit
If you want to contribute to the project, feel free to unpack the plasmoid-package and read the translation instructions in the contents folder.
Suggestions for further development:
*Implement colour gradient for the data transmission monitors.
I strongly recommend all who have installed a previous version to get an update!
Please comment, rate and criticise.
In the long run I'll have to create a website for documentation because the installation possibilities and configuration options are quite impressive and this description's already uncomfortably large. Due to a severe lack of time reading tooltips is all I suggest for now.
1.0 Initial release
2.0 Keeping original top configuration, Panel integration
2.1 Minor ajdustment: support for multiple plasmoids
3.0 Highlighting a process passing a certain limit with an individual colour.
4.0 More configuration options (e.g. colour gradient)
4.1 Click on plasmoid opens a list of tasks ordered according to CPU usage.
5.0 Optional display of IO intensive task
5.1 Bugfixes (colour change for IO intensive task, process and rate mismatch)
5.2 Configuration option for on-click-behaviour, tooltips, whatsthis-tips
6.0 Code reorganisation, further configuration options, memory intensive task, file history log..
6.1 Optional horizontal arrangement of the tasks, saving the size
6.2 Optional font background to avoid unreadable design
7.0 Code cleanup and reorganisation, disassociation with tail, destructor, bugfixes, more configuration options, NET intensive task, etc.
7.1 Direct change of network interface supported.
8.0 Integration of own iotop and nethogs versions, IPC
9.0 Added icons and a panel mode
10.0 No tail involvement any more (only IPC), bugfixes
10.1 No blocking of plasma-desktop on startup with NET intensive task any more.
10.2 Correct behaviour on systems without user configuration for top.
10.3 Less resource consumption of nethogs, small fix concerning the configuration dialog
10.4 Added a logo
10.5 German and French translations
10.6 Further fixes of bugs (concerning units and logfile) that occurred during code reorganisation.
10.7 Bugfixes: kdesu as optional superuser trigger (for nethogs), updated library link for nethogs
10.8 Implemented several nethogs daemons compiled with different libraries/libary links, debug information
10.9 Small modification for systems with python version 3.
11.0 Easy network interface switching and advanced control over nethogs.
11.1 The last observed unchanged value for a task is displayed for an additional second if the plasmoid is updated once per second.
11.2 Integration of VirtualBox virtual machine name resolution.
11.3 Optional display of the processor that the monitored process is assigned to.
11.4 Improved error handling (at runtime and for plasmoidviewer).
11.5 Extirpation of crashes, performance optimisations, more configuration options
11.6 Iotop bug fix assuring that the task with most IO is chosen.
11.7 Support for newer kernels that deny access to IO statistics for regular users.
11.8 Improved configuration interface, bug fix concerning password prompt
11.9 Small changes to handle high update rate in panels.
12.0 Highlight change in memory amount between update intervals
12.1 Improved panel layout
12.2 Fixed VirtualBox name resolution
12.3 Major update including changes in iotop, nethogs and BusyTasks to enable advanced data collection.
12.4 Extended reset interval concerning the transfer statistics, separate colouring for sum and transfer rate.
12.5 Support for gigabyte values
12.6 Fixed iotop shared memory attachment
12.7 Bugfix concerning encoding of iotop string
12.8 Several minor optimisations (iotop, daemon organisation)
14.0 New internal configuration interface (compatibility upgrade), support for multiple workspaces
14.1 | 12.9 Timeout for network notification messages.
14.2 | 13.0 Optional Irix mode, 64-bit support, many optimizations concerning the on-click-function and the panel mode
14.3 Support for procps-ng (other configuration file)