由於實驗中需要得到某個進程的io使用率,所以需要對進程的io進行 監控,目前比較方便有效的解決是使用iotop(對於內核版本在2.6.20 以上),開發的時候是在ubuntu上搞,內核版本很高,一切很順利,但部屬 的環境是centos,即便是Centos5.5的內核版本仍然是 2.6.18。就需要重新編譯內核。
安裝步驟如下:
一、編譯內核
[1]下載內核:wgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.4.tar.bz2
[2]解壓到/usr/src下:cp /當前目錄 /usr/src/
cd /usr/src
tar -jxvflinux-2.6.35.4.tar.bz2
[3]配置:make menuconfig
把General setup——Enable per-task storage I/O accounting這個選項選上。
修改.config文件
vim .config
將#CONFIG_SYSFS_DEPRECATED_V2 is not set的注釋去掉的,將其改為y。即修改為CONFIG_SYSFS_DEPRECATED_V2=y
[4]編譯和安裝:
makeCONFIG_DEBUG_SECTION_MISMATCH=y
make modules
make modules_install
make install
[5]修改initrd文件
cp /boot/initrd-2.6.35.4.img /tmp
cd /tmp/
mkdir newinitrd
cd newinitrd/
zcat ../initrd-2.6.35.4.img |cpio -i
vim init刪掉其中重復的四行中的兩行
echo"Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
find .|cpio -c -o > ../initrd
cd ..
gzip -9 < initrd > initrd.img
initrd.img就是重新打包的initrd了,然后把initrd.img拷貝到/boot
mv /boot/initrd-2.6.35.4.img/boot/initrd-2.6.35.4.img.bak
mv initrd.img /boot/initrd-2.6.35.4.img
[6]修改配置和啟動
cp /usr/src/linux-2.6.35.4/.config/boot/config-2.6.35.4
修改默認以新的內核啟動
vi /boot/grub/grub.conf
default=0
[7]reboot
二、由於iotop要求python的版本在2.5以上,而centos安裝的版本是2.4則要重新安裝python
[1]下載/安裝python
下載Python2.6.5.tar.bz2(下載地址:http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2)
$tar jxvf Python2.6.5.tar.bz2
$cd Python2.6.5
$./configure
$make && make install
自此,python2.6安裝后路徑默認是在/usr/local/lib/python2.6
查看Python版本:
$ /usr/local/bin/python2.6 -V
[2]建立軟連接,使系統默認的python指向python2.6
正常情況下即使python2.6安裝成功后,系統默認指向的python仍然是2.4.3版本,考慮到yum是基於python2.4.3才能正常工作,不敢輕易卸載。如何實現將系統默認的python指向到2.6版本呢?
mv /usr/bin/python /usr/bin/python.bak
ln -s //usr/local/bin/python2.6 /usr/bin/python
檢驗python指向是否成功
python -V
[3] 解決系統python軟鏈接指向python2.6版本后,yum不能正常工作
方法:
$vi /usr/bin/yum
將文本編輯顯示的#/usr/bin/python修改為#/usr/bin/python2.4,保存修改即可
三、安裝iotop
下載iotop http://guichaz.free.fr/iotop/
tar -xzvf iotop-0.4.2.tar.gz
cd iotop-0.4.2
python setup.py build
python setup.py install
安裝完成如下圖所示:
四、參考資料
IOTOP安裝 http://skyeydemon.blog.51cto.com/315899/201667
CentOS 5.5升級內核到2.6.35.4 http://kerry.blog.51cto.com/172631/398554
CentOS5.4上將Python版本升級到2.6.5http://diansummer.javaeye.com/blog/716364