udda / multiload-ng

Modern graphical system monitor for any panel
http://udda.github.io/multiload-ng
GNU General Public License v2.0
147 stars 22 forks source link

? use disk busy time instead of bps speed ? #47

Open vn971 opened 7 years ago

vn971 commented 7 years ago

Is it possible to use disk "busy time" instead of "bps speed" for disk load measurement?

I'm not sure about that, but "busy time" feels like a more natural measurement, and does not need any configuration or automatic detection. I've seen "busy time" as an optional measurement type in XFCE4 "disk performance monitor" plugin.

If the idea is indeed healthy, it might be good to support it as an alternative for disk load section.

Also, I know it doesn't fit the issue tracking system, but thanks for a great project! It was such a relief to see "multiload" indicator running back again after so many years of missing it (missing the bug-free version, anyway). Thank you!

udda commented 7 years ago

Hello, thanks for your feedback! This is a nice idea, I will look into it.

One of the goals of Multiload-ng is extreme customization, so (in most cases) additional choices are seen as giving more power to the user and are very welcome.

Thank you very much for appreciation, it's a big source of motivation to me :)

vn971 commented 7 years ago

BTW, I've investigated multiload-ng further and seems it works well in all cases except one -- disk load. Somewhy multiload always thinks there is zero disk io, and the graph almost always stays at 0. There are times where it sporadically shows one "bar" (single pixel line with a non-zero height) and then it disappears again. Once a day maybe?. I have an encrypted filesystem, maybe this is the reason why it works so. // If anything, ideas can be copied from xfce4-diskperf-plugin because it seemingly does detect the disk io load (although it only has a bar and no graph).

udda commented 7 years ago

The encrypted FS is definitely the reason it doesn't work. The legacy code upon which Multiload-ng is based excludes some fs types (namely rootfs, smbfs, nfs, cifs, fuse.*) because they does not directly map to a physical device. I think you are using encfs, whose fstype is fuse.encfs, so it's excluded.

Can you show your output of some commands?

I am currently rewriting entire code from scratch: Multiload-ng 2.0 (will release a beta soon). Among other things, it's capable of measuring also disk time.

About encrypted devices, I need to make some tests, but in v2.0 these should be correctly supported. I may ask you some additional data in near future. Thanks again for the feedback!

vn971 commented 7 years ago

I'm using "LVM on LUKS": https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS meaning the basic partition is LUKS (which gives encryption), and LVM is layered above it (which gives separate partitions for /home, /, swap etc).

Relevant entries in mount:

/dev/mapper/MyVol-root on / type ext4 (rw,relatime,data=ordered)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
/dev/mapper/MyVol-home on /home type ext4 (rw,relatime,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl,stripe=4)

df:

Filesystem              1K-blocks      Used  Available Use% Mounted on
dev                       8150896         0    8150896   0% /dev
run                       8158868      1016    8157852   1% /run
/dev/mapper/MyVol-root   51343840  20593380   28112636  43% /
tmpfs                     8158868         0    8158868   0% /dev/shm
tmpfs                     8158868         0    8158868   0% /sys/fs/cgroup
tmpfs                     8158868       144    8158724   1% /tmp
/dev/mapper/MyVol-home 1801871864 219155208 1491116784  13% /home
/dev/sda2                  198337    101333      86764  54% /boot
tmpfs                     1631772        24    1631748   1% /run/user/1000
tmpfs                     1631772         0    1631772   0% /run/user/0

cat /proc/partitions:

major minor  #blocks  name

   8        0 1953514584 sda
   8        1       1024 sda1
   8        2     204800 sda2
   8        3 1953307719 sda3
  11        0    1048575 sr0
 254        0 1953305671 dm-0
 254        1   16777216 dm-1
 254        2   52428800 dm-2
 254        3   52428800 dm-3
 254        4 1831669760 dm-4

multiload-ng shows the following partitions in its list: sda, sda1, sda2, sda3.

Cool, will be waiting for that.:) Thank you!

udda commented 7 years ago

Ah, I was wrong about encfs :) Thanks for the brief explanation.

I am making the following assumptions:

I will begin by looking at the xfce4-diskperf-plugin code, while experimenting with LVM in development machine. Will write updates here, if any.

udda commented 7 years ago

Ok here are the updates:

  1. Added support to LVM volumes into Multiload-ng 2.0. I can't test it, but it should also handle well other device mapper virtual devices.

  2. The approach used by xfce4-diskperf-plugin (reading /proc/diskstats for all relevant information) works because it unconditionally parses all existing partitions, making no differences between mounted and unmounted devices. It can't be used here, because Multiload-ng 2.0 checks also free space with the same code (yeah there is a new storage graph!), and this is possible only on mounted devices, so there are additional checks.

  3. When the first beta is released, you could test it, so we can close this issue.

udda commented 7 years ago

Update: using disk busy time instead of bps will be available in Multiload-ng 2.0 :)

vn971 commented 7 years ago

That's great! Currently XFCE-s "Disk Performance Monitor" is the only panel item left besides multiload-ng. (And there were 6 of them.) Will be waiting!