vpsfreecz / vpsadminos

Host for Linux system containers based on NixOS, ZFS and LXC
https://vpsadminos.org
MIT License
155 stars 26 forks source link

Iotop doesn't work #33

Closed S1lverhead closed 4 years ago

S1lverhead commented 4 years ago

Hi, I'd like to monitor IO activity with Iotop. Flavor: Centos 7 Iotop version:

iotop --version
iotop 0.6

It fails with error: iotop

Traceback (most recent call last):
  File "/usr/sbin/iotop", line 17, in <module>
    main()
  File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 620, in main
    main_loop()
  File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 610, in <lambda>
    main_loop = lambda: run_iotop(options)
  File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 508, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib64/python2.7/curses/wrapper.py", line 43, in wrapper
    return func(stdscr, *args, **kwds)
  File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 498, in run_iotop_window
    taskstats_connection = TaskStatsNetlink(options)
  File "/usr/lib/python2.7/site-packages/iotop/data.py", line 137, in __init__
    self.family_id = controller.get_family_id('TASKSTATS')
  File "/usr/lib/python2.7/site-packages/iotop/genetlink.py", line 69, in get_family_id
    m = GeNlMessage.recv(self.conn)
  File "/usr/lib/python2.7/site-packages/iotop/genetlink.py", line 51, in recv
    msg = conn.recv()
  File "/usr/lib/python2.7/site-packages/iotop/netlink.py", line 229, in recv
    raise err
OSError: Netlink error: No such file or directory (2)

As suggested via IRC I tried: https://forum.proxmox.com/threads/proxmox5-debian9-and-iotop-in-container-error.40838/ Patched Iotop: https://github.com/mvneves/iotop-cgroups

I tried: iotop -g all It fails with exactly the same error:

./iotop.py -g all
Traceback (most recent call last):
  File "./iotop.py", line 12, in <module>
    main()
  File "/root/build/iotop-cgroups/iotop/ui.py", line 656, in main
    main_loop()
  File "/root/build/iotop-cgroups/iotop/ui.py", line 646, in <lambda>
    main_loop = lambda: run_iotop(options)
  File "/root/build/iotop-cgroups/iotop/ui.py", line 538, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib64/python2.7/curses/wrapper.py", line 43, in wrapper
    return func(stdscr, *args, **kwds)
  File "/root/build/iotop-cgroups/iotop/ui.py", line 527, in run_iotop_window
    taskstats_connection = TaskStatsNetlink(options)
  File "/root/build/iotop-cgroups/iotop/data.py", line 140, in __init__
    self.family_id = controller.get_family_id('TASKSTATS')
  File "/root/build/iotop-cgroups/iotop/genetlink.py", line 76, in get_family_id
    m = GeNlMessage.recv(self.conn)
  File "/root/build/iotop-cgroups/iotop/genetlink.py", line 56, in recv
    msg = conn.recv()
  File "/root/build/iotop-cgroups/iotop/netlink.py", line 255, in recv
    raise err
OSError: Netlink error: No such file or directory (2)

I hope, one day someone will have time to check it :)

Thanks for all your effort, Jan

snajpa commented 4 years ago

Worth looking into:

https://github.com/avagin/linux-task-diag/commits/task-diag-v3-devel

aither64 commented 4 years ago

FYI this is now deployed on our staging and iotop is working.

aither64 commented 4 years ago

Deployed also in production.