devizer / w3top-bin

W3-Top isn't grafana, htop, atop, iotop or gnome-system-monitor. It's all together with web interface and built-in benchmarks. Here is a build tools for w3top, an http-based monitoring and bench-marking tool based on KernelManagementLab
MIT License
4 stars 2 forks source link

Effluent praise and 3 minor issues #1

Closed averyfreeman closed 3 years ago

averyfreeman commented 4 years ago

Hi

I really like your w3top program, it seems like you'd be a great candidate to join the cockpit team https://github.com/cockpit-project/cockpit

Although I've never seen anything this elaborate coded for Linux in .NET before. Gotta love the new core SDK - is your target audience Azure users?

Anyway, I digress. My issue(s):

I do not have an eMMC or MicroSD, what's with the disk labels in single y-axis? Can't they be dynamically read?

image

Screen formatting is awfully narrow, is there a way to reformat so the charts take up more of the page?

image

Also, disk benchmarks seem a little slow for a PM961 x4 NVMe -- should that be MB/s instead of Mb/s?:

image

For reference, recent fio test:


Seqread: (groupid=0, jobs=1): err= 0: pid=15863: Fri Jan 24 18:06:30 2020: 
Read: IOPS=2078, BW=2078MiB/s (2179MB/s)(5000MiB/2406msec)
  slat (usec): min=292, max=4184, avg=472.35, stdev=224.91
  clat (nsec): min=1641, max=100817, avg=4157.86, stdev=3157.50
   lat (usec): min=295, max=4193, avg=477.75, stdev=227.11

Seqwrite: (groupid=1, jobs=1): err= 0: pid=15915: Fri Jan 24 18:06:30 2022:
Write: IOPS=1075, BW=1075MiB/s (1128MB/s)(5000MiB/4650msec); 0 zone resets
  slat (usec): min=165, max=13197, avg=920.85, stdev=769.60
  clat (nsec): min=1062, max=124487, avg=3707.01, stdev=3384.57
   lat (usec): min=166, max=13206, avg=925.72, stdev=771.23
devizer commented 4 years ago

Hi @averyfreeman

Thank you for the feedback. Your right - .NET apps, especially as a system tool on Linux, is like MS Office on iPad. Misleading eMMC, micro-sd and Mb on the first screenshot are fixed at v1.19.1431.130 release. Charts on screenshot were just for performance testing on ancient iOS and Android mobile devices. Now they are purged.

Regarding performance for NVMe, I can confirm that now w3top does not support linux specific aio engine and benchmark results differ from fio results obtained with libaio engine. Did you use libaio as an engine? I would add aio support later, but I want to embed charts of CPU Usage, Transfer Rate, Busy and Queue length into benchmark history first. How they are changing in time during the benchmark is a bit more important when we are not intended for high load RDBMS like MySQL or Postgres.

Regarding Azure targeting, it is not only for Azure. It supports almost any linux including Arm 32 and 64-bit architecture. And unattended installer for any linux is out of the box and it is completely tested on each build. Please pay attention that installer configures SystemD for modern linux that equipped with SystemD. And installer configures Sys V init script for a legacy Linux.

So, I faced a ton of options on Azure, Amazon and Google Cloud that significantly or not affect IO performance. All the options are weakly documented, but they cost money, and it does not so easy to obtain on a screen how such options affect IO performance. Same problem with micro-sd/USB cards and eMMC flash for raspberry pi and similar boards.

Regarding narrow layout of live charts i've separated it as an new item #2

Regards

devizer commented 4 years ago

new flex layout of live charts on 1920 pixels width display: image

averyfreeman commented 4 years ago

Hi

Great enhancement! I love the new chart layout.

I'm confused about the update of the eMMC/MicroSD labels - I just cloned the repo last night at 9:20pm PST (GMT-8). Was that an update you did between that time and now?

$ ls -la | grep w3top
drwxr-xr-x  8 avery avery   14 Jan 29 21:20 w3top-bin

Yes, I had forgotten but I captured the test to a text file and apparently I did use libaio - here's the syntax of the fio test I referenced:

$ fio --loops=5 --size=1000m --filename=/mnt/fs/fiotest.tmp --stonewall 
--ioengine=libaio --direct=1 --name=Seqread --bs=1m --rw=read  
--name=Seqwrite --bs=1m --rw=write --name=512Kread --bs=512k 
--rw=randread --name=512Kwrite --bs=512k --rw=randwrite --name=4kQD32read --bs=4k
 --iodepth=32 --rw=randread --name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite

No hurry, I'm sure you have priorities. Just wasn't sure if you were aware of the speed discrepancy.

Re: Azure, etc. I'm impressed you're able to cover so many different platforms, it really is a great start on a useful tool.

Have you talked with cockpit-project? They could use you ;)

devizer commented 3 years ago

Hi @averyfreeman

Please take a look on new version 1.21. It introduces fio on backend and its set of engines including libaio and io_uring for more precise IO benchmark for NVMe and Optane SSDs

Any fio version from 2.0 to latest 3.26 is supported. image

Install/upgrade script for w3top service was not changed: https://github.com/devizer/w3top-bin#reinstallation-of-precompiled-binaries