canonical / real-time-ubuntu-docs

Real-time Ubuntu documentation
https://documentation.ubuntu.com/real-time
0 stars 1 forks source link

doc(reference): Tools for Measuring Real-time Metrics #11

Closed MonicaisHer closed 4 months ago

MonicaisHer commented 4 months ago

This PR adds tools for measuring real-time metrics including ps, perf, stress-ng, Cyclictest, dstat, watch. Each tool has a brief description of real-time uses and includes a link to its manual page.

PR Preview

MonicaisHer commented 4 months ago

irqstat will be excluded from this document, as it lacks an official manual page, and its repo hasn't been maintained for more than three years.

MonicaisHer commented 4 months ago

irqtop can't run successfully:

$ sudo apt install util-linux
$ irqtop
bash: /usr/bin/irqtop: No such file or directory
$ sudo apt install irqtop
$ irqtop -h
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require': /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so: undefined symbol: rb_safe_level - /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so (LoadError)
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/lib/ruby/vendor_ruby/curses.rb:18:in `rescue in <top (required)>'
    from /usr/lib/ruby/vendor_ruby/curses.rb:14:in `<top (required)>'
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/bin/irqtop:9:in `<main>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- 3.0/curses.so (LoadError)
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/lib/ruby/vendor_ruby/curses.rb:16:in `<top (required)>'
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/bin/irqtop:9:in `<main>'
farshidtz commented 4 months ago

irqtop can't run successfully:

$ sudo apt install util-linux
$ irqtop
bash: /usr/bin/irqtop: No such file or directory
$ sudo apt install irqtop
$ irqtop -h
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require': /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so: undefined symbol: rb_safe_level - /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so (LoadError)
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from /usr/lib/ruby/vendor_ruby/curses.rb:18:in `rescue in <top (required)>'
  from /usr/lib/ruby/vendor_ruby/curses.rb:14:in `<top (required)>'
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from /usr/bin/irqtop:9:in `<main>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- 3.0/curses.so (LoadError)
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from /usr/lib/ruby/vendor_ruby/curses.rb:16:in `<top (required)>'
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
  from /usr/bin/irqtop:9:in `<main>'

The one from irqtop package works for me: image

$ man irqtop
...
irqtop ‐ Observe IRQ and SoftIRQ in a top‐like fashion

@mengyi, It looks like it differs from the manual for the irqtop from util-linux, linked in your comment.

locnnil commented 4 months ago

I've tested the irqtop command on my system running Mantic, and it works, I installed from the package:

 sudo apt install -y irqtop

But when I tested it on a virtual machine running a Jammy system, I encountered the same problem that @MonicaisHer did.

The problem seems to be that the symbol rb_safe_level is removed from ruby 3.0, like described here.

image

Seems also that the Mantic ships ruby with version 3.1 and Jammy with version 3.0:

image

image

As consequence, the gem library curses installed in /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so for Jammy, and in /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.1.0/curses.so for Mantic are quite different, you can tell this by it's size and amount of strings on the shared object:

For Jammy:

vm@loki:~$ du -sh /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so  
64K /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so
vm@loki:~$ 
vm@loki:~$ strings /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.0.0/curses.so | wc -l
465
vm@loki:~$

For Mantic:

lincoln@fenrir:~$ du -sh /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.1.0/curses.so 
88K /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.1.0/curses.so
lincoln@fenrir:~$ 
lincoln@fenrir:~$ strings /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.1.0/curses.so | wc -l 
755
lincoln@fenrir:~$
farshidtz commented 4 months ago

The irqtop issue is reportedly fixed on newer versions of ruby-curses. But Jammy is still on 1.2.4.

It has been reported here.

Since this documentation targets 22.04, it is best to exclude it and create an issue to have it added for 24.04.