man linux — заметки админа

3 февраля 2013

iotop на CentOS 5.9 Final

Утилита iotop показывает статистику нагрузки на жесткие диски, в том числе она показывает процессы и пользователей, которые эту самую нагрузку создают. Но на CentOS 5.9 Final, стандартный iotop из репозитория может не запуститься. В таком случае делаем следующее:
Если при запуске iotop, получаем ошибку:

Could not run iotop as some of the requirements are not met:
- Linux >= 2.6.20 with
  - I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING)

Не хватает опций ядра.
Пересобираем ядро, включив эти опции (сборка ядра — это отдельная тема, найти и включить эти опции можно воспользовавшись командой make menuconfig)
После установки нового ядра и успешной перезагрузки, iotop, все еще может не заработать и выдать ошибку типа:

Traceback (most recent call last):
  File "/usr/bin/iotop", line 16, in ?
    main()
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 567, in main
    main_loop()
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 557, in 
    main_loop = lambda: run_iotop(options)
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 465, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib64/python2.4/curses/wrapper.py", line 44, in wrapper
    return func(stdscr, *args, **kwds)
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 457, in run_iotop_window
    process_list = ProcessList(taskstats_connection, options)
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 375, in __init__
    self.update_process_counts()
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 431, in update_process_counts
    stats = self.taskstats_connection.get_single_task_stats(thread)
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 158, in get_single_task_stats
    reply = self.connection.recv()
  File "/usr/lib/python2.4/site-packages/iotop/netlink.py", line 229, in recv
    raise err
OSError: Netlink error: Недопустимый аргумент (22)

Чтож, не отчаивайтесь.
Попробуйте так:
И выполните следующие действия:

yum remove iotop
cd
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
cd /usr/local/src
wget http://man-linux.ru/files/iotop-0.4.4-1.src.rpm
rpmbuild --rebuild iotop-0.4.4-1.src.rpm
rpm -ivh /root/rpmbuild/RPMS/noarch/iotop-0.4.4-1.noarch.rpm

После этого, запускайте — заработало? :)

Ну и пара полезных аргументов команды:

-o

— показывать только процессы, реально использующие жесткие диски в текущий момент времени

-n NUM

— где вместо NUM нужно указать количество повторов, прежде чем программа завершит работу

-b NUM

— не интерактивный режим, для того что бы после выхода из программы, информация оставалась на консоли.
Лично я запускаю примерно так:

iotop -n 5 -o -b
Опубликовано 3 февраля 2013 - информация могла устареть.

Комментариев нет »

No comments yet.

RSS feed for comments on this post.

Leave a comment

Для отправки комментария вам необходимо авторизоваться.

Powered by WordPress