I/OTOP
Needs to have
Python >= 2.5 and kernel
Linux >= 2.6.20 with those options enabled
- CONFIG_TASKSTATS
- CONFIG_TASK_DELAY_ACCT
- CONFIG_TASK_IO_ACCOUNTING
Pre-requisites
2 | tar jxvf iotop-0.3.1. tar .bz2 -C /usr/src |
3 | cd /usr/src/iotop-0.3.1/ |
To execute the program without installing it, just call via CLI:
In case that the following error comes:
1 | Traceback (most recent call last): |
2 | File "./iotop.py" , line 8, in ? |
3 | from iotop.ui import main |
4 | File "/usr/src/iotop-0.3.1/iotop/ui.py" , line 12, in ? |
5 | from iotop.data import find_uids, TaskStatsNetlink, ProcessList |
6 | File "/usr/src/iotop-0.3.1/iotop/data.py" , line 12, in ? |
7 | from iotop import ioprio, vmstat |
8 | File "/usr/src/iotop-0.3.1/iotop/ioprio.py" , line 1, in ? |
It’s because you haven’t the
python installed os it isn’t the 2.5 version. It’s necessary to install it.
Installing Python 2.5 on Red Hat 5.3 / CentOS 5.3
Red Hat 5 / CentOS 5 comes with python 2.4 by default. It isn’t cool
to simply install the new version over the default one, instead, I’m
disponibilizing here the RPMs of python 2.5 for Red Hat 5 / CentOS 5
that will be installed in his own directory
/usr/bin/python25, so, the scripts that Yum and others scripts made use of python 2.4 won’t get hurt.
The news is, always that you need to use the new version of python 2.5 you’ll have to change the interpretor
PATH that call python25. It’s better than the whole system going unstable, isn’t it? ;)
Executing iotop.py
With
python25 installed, it’s time to modify the script
iotop.py and change the interpreter on the first line, from:
to
Ok, time to run the script
If any of the pre-requisites won’t be safisfied, a message like this one will show informing what is missing
Could not run iotop as some of the requirements are not met: |
- Python >= 2.5 for AF_NETLINK support: Found |
-
Linux >= 2.6.20 with I/O accounting support (CONFIG_TASKSTATS,
CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING): Not found |
Python 2.5 it’s OK, but kernel isn’t.
Simple, compiling kernel with those options:
To compile the new kernel, there’s a post here that explains it, here
I’ll show you just which options to be considered, compile and install
the kernel it’s with you now ;)
[*] Export task/process statistics through netlink (EXPERIMENTAL) |
[*] Enable per-task delay accounting (EXPERIMENTAL) |
[*] Enable extended accounting over taskstats (EXPERIMENTAL) |
[*] Enable per-task storage I/O accounting (EXPERIMENTAL) |
Kernel 2.6.30.5 (rpm) with process statistics ready to be used with iotop
To install
1 | rpm -ivh kernel-2.6.30.5fogonacaixadagua-1.i386.rpm |
in case you already installed this kernel before, will need to generate again an image
initrd and use the flag
--force with
rpm -ivh --force command.
iotop running
Installing iotop
Into the directory you extracted
iotop-0.3.1 run the command
./setup.py install
How it was installed python 2.5, if you run
/usr/bin/iotop the following error will be gracefuly show to you
Traceback (most recent call last): |
File "/usr/bin/iotop" , line 4, in
|
ImportError: No module named pkg_resources |
To resolve that one, it’s quite simple, into directory where you extracted iotop, in this case
/usr/src/iotop-0.3.1 copy the entire directory
iotop to
/usr/lib/python-2.5
2 | cp -Rp iotop /usr/lib/python2.5/ |
And after that, edit the file
/usr/bin/iptop and modify the line of interpreter
from
to
Ok, iotop running!