Source i (link to git-repo or to original if based on someone elses unmodified work):

Add the source-code for this project on opencode.net

Original
5
Become a Fan
7.7

Description:
This plasmoid is no longer maintained. Please use the Plasma 5 Extension BusyTasksPlasmoid or the Java program BusyTasks instead

UPDATE
14.0: Holds the new configuration interface and supports synchronised plasmoid instances on multiple workspaces
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
DOCUMENTATION:
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.
Short manual:
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
TROUBLESHOOTING:
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.

BUGS:
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:
None

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.

PERFORMANCE:
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
Fedora 15
OpenSUSE 11.4
Arch 2011-08-19
Slackware 13.37
Gentoo 11.2
Mint 12
Sabayon 7

TRANSLATIONS:
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.
Last changelog:

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)


Ratings & Comments

84 Comments

post-factum

After adding this plasmoid plasma-desktop crashes. KDE 4.11, Arch Linux. How can I help to fix the issue?

unknownSpirit

Thanks for your feedback I'm gonna try it with 4.11 myself and see what happens. Stay tuned, kind regards,

unknownSpirit

After a few annoying bug-workarounds I eventually got KDE 4.11 to run. First of all, the crash is very likely due to a 64-bit architecture without ia32-libs being installed. See the last point of requirements. Moreover, there's a bug in procps-ng prior to version 3.3.5 causing the rcfile being used to be locale-dependent. (http://lists.opensuse.org/opensuse-bugs/2012-12/msg01466.html) So if you have 3.3.1-3.3.4, this plasmoid won't work for you. Actual procps-ng release seems fine, the name of the configuration file changed, however. So there'll be a small update soon.

post-factum

3.3.8 here. Will try your update immediately.

unknownSpirit

The plasmoid was updated. I cannot test it here though as I don't have procps-ng 3.3.8 per default.

post-factum

Works for me, thanks.

unknownSpirit

No problem. If you like it, just vote for it. Kind regards,

brucew

I get this error after installing System V IPC package and before installing busytasks.plasmoid: Quote:

~/Downloads/KDE/Plasmoids/BusyTasks/BusyTasks-nethogs$ make install g++ -g -Wall -Wextra -c process.cpp process.cpp:4:21: fatal error: ncurses.h: No such file or directory compilation terminated. make: *** [process.o] Error 1

brucew

Note: ncurses.h is natively installed at: /usr/include/ncursesw/ncurses.h

unknownSpirit

First of all: Are you sure you need the self-compilation? There are three versions in the plasmoid-package. Does nethogs start when you display the NET intensive task?

rvs82

Hi, Nice widget. There's only one problem. I can't get it to use iotop. I think the reason is iotop requires root privileges. This is because of security changes in the Linux kernel (I'm using 3.1.0). Is this a known bug and if so, is there a workaround for this? Thanks.

unknownSpirit

Hi I guess you are right, it's due to a linux kernel update concerning tasks' permissions. http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.1 I hope I'll be able to upload a fix in a few hours' time. Kind regards,

rvs82

Thanks!

unknownSpirit

Should work now for the new kernel too. Please consider the fact that I can't test it as I don't have a system with such a kernel yet. You should have regular glances at a system monitor of your choice to control if all daemons start and stop correctly! Kind regards,

unknownSpirit

I found a way to test it and discovered that it does not work yet. Will upload a fix soon, stay tuned. Kind regards,

rvs82

Thanks, I was just about to post the error message I got :) I tried finding the bug myself, but didn't manage to. I'll await the final update.

unknownSpirit

Another update, another try. This time it works here at least. Kind regards,

rvs82

I still get the same error message: Quote:

Iotop could not be started. Information: ^[[?1049h^[[1;24r^[<B^[[m^[[41^[[?7h^[[?1l^[>Traceback (most recent call last): File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks//contents/iotop-0.4.3/iotop.py", line 12, in <module> main() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 582, in main main_loop() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 572, in <lambda> main_loop = lambda: run_iotop(options) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 484, in run_iotop return curses.wrapper(run_iotop_window, options) File "/usr/lib/python2.7/curses/wrapper.py", line 49, in wrapper curses.nocbreak() _curses.error: nocbreak() returned ERR
Also, the script never reaches the point where it asks for my password. I'm running OpenSUSE 12.1 (32-bit).

unknownSpirit

Unfortunately the error code is not really useful as I get it here too when starting iotop without command line options. Could you run it in plasmoidviewer and give me the output? Kind regards,

rvs82

I get the following (after turning on iotop in the settings window): –Error Traceback (most recent call last): File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/code/main.py", line 287, in readConfig self.netIFnumber=int(self.config('BusyTasks').readEntry('netIFnumber')) ValueError: invalid literal for int() with base 10: '' mv: cannot stat `/home/user/.toprc': No such file or directory mv: cannot stat `/home/user/.toprcorig': No such file or directory Traceback (most recent call last): File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks//contents/iotop-0.4.3/iotop.py", line 12, in <module> main() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 582, in main main_loop() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 572, in <lambda> main_loop = lambda: run_iotop(options) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 482, in run_iotop return run_iotop_window(None, options) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/ui.py", line 476, in run_iotop_window process_list = ProcessList(taskstats_connection, options) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/data.py", line 347, in __init__ self.update_process_counts() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/data.py", line 403, in update_process_counts stats = self.taskstats_connection.get_single_task_stats(thread) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/data.py", line 161, in get_single_task_stats reply = GeNlMessage.recv(self.connection) File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/genetlink.py", line 50, in recv msg = conn.recv() File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/iotop-0.4.3/iotop/netlink.py", line 229, in recv raise err OSError: Netlink error: Operation not permitted (1) Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory Tried attaching memory –Error Traceback (most recent call last): File "/home/user/.kde4/share/apps/plasma/plasmoids/BusyTasks/contents/code/main.py", line 645, in paintInterface iotext=re.search('.*?\t([0-9.]{,}).([0-9.]{,}).([KM]{,}B/s).([0-9.]{,}).([KM]{,}B/s).([0-9.]{,}).([KM]{,}B/s).(.*)', self.iotopsmemory.read()) AttributeError: 'int' object has no attribute 'read' This basically repeats itself 3 times after which it loops on the last error (AttributeError). I get the error window after the lines with "Tried attaching memory" with the message I showed in the earlier post (also 3 times). Hope this helps.

unknownSpirit

It's a bit strange, or to state it differently, I do not see what I expected to do :-/ The plasmoid tries to start iotop with standard rights, and fails, as expected (OSError: Netlink error: Operation not permitted (1)) Afterwards, you should get a prompt, which, however, is not the case (and I cannot see a related error either) As a consequence, shared memory is not attached and painting is error-prone. What python version do you have? Can you start the iotop daemon manually by entering the direct path in a terminal? For example via /home/YOURDIRECTORY/.kde4/share/apps/plasma/plasmoids/BusyTasks//contents/iotop-0.4.3/iotop.py or kdesudo -c "python /home/YOURDIRECTORY/.kde4/share/apps/plasma/plasmoids/BusyTasks//contents/iotop-0.4.3/iotop.py" or sudo python /home/YOURDIRECTORY/.kde4/share/apps/plasma/plasmoids/BusyTasks//contents/iotop-0.4.3/iotop.py

rvs82

When I do the first (as normal user) I get the same netlink error as before. The 2nd (kdesu) I don't get any errors, nor any output. The 3rd (sudo) I get the correct iotop output.

unknownSpirit

Ok, we're getting closer... Case one and three are OK (indicates that it should work if you enter the password in plasmoid configuration). Two is a riddle so far. You should either get an error message or a message prompt. What graphical superuser frontend do you use? kdesu or kdesudo?

unknownSpirit

Just to make sure I get it right: nethogs works?

rvs82

Nethogs works just fine. Both if I let it ask the password and if I set the password through the settings dialog. I use kdesu, but I don't think the problem lies there either. If I set the password in the settings dialog I still get the error. And if I do 'kdesu -c "konsole -e /PATH_TO_IOTOP/iotop.py"' it opens another console where the usual iotop output is shown.

Pling
0 Affiliates
Details
license
version 14.3 | 13.0
updated
added
downloads 24h 0
mediaviews 24h 0
pageviews 24h 1

More Plasma 4 Extensions from unknownSpirit:

MemMap
unknownSpirit
last update date: 11 years ago

Score 5.0

Other Plasma 4 Extensions:

Icon Tasks deb build
N00bun2
last update date: 13 years ago

Score 4.3

Prayer Times Plasmoid
riyad
last update date: 12 years ago

Score 5.2

KPrayertime4 Islamic Prayer Times
ahaq
last update date: 15 years ago

Score 4.4

Hostinfo
mgraesslin
last update date: 13 years ago

Score 4.7

Monitor QuadCore Russian
kuchumovn
last update date: 16 years ago

Score 5.0

blaKjaK
werevire
last update date: 15 years ago

Score 5.0