HYPTOP(8)

πŸ“¦ version 2.44.1, in opensuse-leap 16.0

πŸ’… hyptop(8)

Okay bestie, welcome to the hyptop(8) page from the System Manager's Manual β€” and yes, it's giving β€œShow hypervisor performance data on System z” main-character energy. ✨

🌸 NAME

hyptop β€” Show hypervisor performance data on System z. πŸ’–

πŸ¦‹ SYNOPSIS

hyptop [OPTIONS]

✨ DESCRIPTION

Okay so hyptop provides a dynamic real-time view of a hypervisor environment on System z. 🫢 It works with either the z/VM hypervisor or the LPAR hypervisor. Depending on the available data it shows, for example, CPU and memory information about running LPARs or z/VM guests.

hyptop provides two windows:

  • sys_list: Shows a list of systems that the hypervisor is currently running.
  • sys: Shows one system in more detail.

System names in hyptop are either LPAR names as shown on the SE or HMC, or z/VM guest IDs that identify z/VM guest virtual machines. πŸŽ€

You can run hyptop in interactive mode (default) or in batch mode with the "-b" option. For how to use the interactive mode, see the online help (enter "?" after hyptop is started). πŸ‘‘

πŸ’œ OPTIONS

Here's the option menu, bestie β€” every flag, no skipping. πŸ’…

  • -h, --help β€” Print usage information, then exit. πŸ™ˆ
  • -v, --version β€” Print version information, then exit. πŸ¦‹
  • -w <WINDOW NAME>, --window=<WINDOW NAME> β€” Select current window. Use the options "--sys", "--fields", and "--sort" to modify the current window. The last window specified with the "--window" option will be used as start window. The default window is "sys_list". πŸ’…
  • -s <SYSTEM>,..., --sys=<SYSTEM>,... β€” Select systems for current window. If this option is specified, only the selected systems are shown for the window. For window "sys" only one system can be specified. πŸŽ€
  • -f <F_LETTER>[:<UNIT>],..., --fields=<F_LETTER>[:<UNIT>],... β€” Select fields and units in the current window. "F_LETTER" is the field letter that identifies uniquely a field (for example "c" for CPU time). "UNIT" is the used entity for displaying data for the field (for example "us" for microseconds). See FIELDS and UNITS below for definitions. If the "--fields" option is specified, only the selected fields are shown. 🌸
  • -S <F_LETTER>, --sort=<F_LETTER> β€” Select sort field for current window. To reverse the sort order, specify the option twice. See FIELDS below for definitions. ⭐
  • -t <TYPE>,..., --cpu-types=<TYPE>,... β€” Select CPU types that are used for CPU time calculations. See CPU TYPES below for definitions. πŸ”₯
  • -b, --batch-mode β€” Use batch mode (no curses). This can be useful for sending output from hyptop to another program, a file, or a line mode terminal. In this mode no user input is accepted. πŸ’»
  • --format=<FORMAT> β€” Use this option to show output in a machine-readable format. FORMAT can be one of:
    • json β€” Single JavaScript Object Notation (JSON) data structure. Data for all iterations is formatted as one JSON data structure in multiple lines to make them more readable by humans. See section "OUTPUT FORMAT" for more details.
    • json-seq β€” Sequence of JSON data structures. Data for each iteration is formatted as a separate JSON data structure prefixed with an ASCII Record Separator character (0x1e) and suffixed with an ASCII Line Feed character (0x0a) in accordance with RFC7464. See section "OUTPUT FORMAT" for more details.
    • jsonl β€” Line-delimited JSON data structures. Data for each iteration is formatted as a separate JSON data structure separated by ASCII Line Feed character (0x0a, LF). See section "OUTPUT FORMAT" for more details.
    • pairs β€” Textual key=value pairs.
    • csv β€” Comma-separated-value (CSV) list. All values are enclosed in double quotation marks and separated by commas. The first line of output contains a list of headings. Subsequent lines each represent data for one system in one iteration.

This option implies the "--batch-mode" option. 🫢

  • --all β€” Use this option with the "--format" option to include fields without valid values in the output. Fields without valid values are omitted from the output by default. When you use the "--all" option, the invalid values are included and shown as "null". πŸ’€
  • -d <SECONDS>, --delay=<SECONDS> β€” Specifies the delay between screen updates. ⏳
  • -m <FACTOR>, --smt-factor=<FACTOR> β€” Specifies a workload dependent SMT speedup factor. For IBM z15 servers, the default value is 1.3. If the workload benefits from SMT, you can specify a higher value. If the workload does not benefit from SMT, specifying lower values results in more accurate reports of real CPU SMT utilization field for LPARs. There is no hard boundary except that it must be a positive value. Example ranges to select a sensible value from:
For IBM z13: [0.8, 1.3]
For IBM z15: [1.1, 1.5]
  • -n <ITERATIONS>, --iterations=<ITERATIONS> β€” Specifies the maximum number of iterations before ending. 🌈

🧚 PREREQUISITES

The following things are required to run hyptop:

  • The Linux kernel must have the required support to provide the performance data.
  • debugfs has to be mounted.
  • The hyptop user must have read permission for the required debugfs files.
  • You can always monitor the guest operating system where hyptop is running.

To monitor any other operating system instances running on the same hypervisor as hyptop, you will need additional permissions.

  • For z/VM, the guest virtual machine must have privilege class B.
  • For LPAR, on the HMC or SE security menu of the LPAR activation profile, select the Global performance data control checkbox.

To mount debugfs, you can use this command:

# mount none -t debugfs /sys/kernel/debug

To make this persistent, add the following to "/etc/fstab":

none     /sys/kernel/debug       debugfs defaults        0 0

πŸ¦‹ FIELDS

The supported fields depend on the available data on the hypervisor. This is different between LPAR and z/VM. It might also depend on machine type, z/VM version and kernel version. Each field has a unique field letter that can be used to select the field in interactive mode or through the "--fields" command line option. πŸ’–

πŸ’… The fields under LPAR

✨ In "sys_list" and "sys" window

  • 'c' β€” Core dispatch time per second
  • 'e' β€” Thread time per second
  • 'S' β€” Real CPU SMT utilization
  • 'm' β€” Management time per second
  • 'C' β€” Total core dispatch time
  • 'E' β€” Total thread time
  • 'M' β€” Total management time
  • 'o' β€” Online time

πŸŽ€ In "sys_list" window

  • '#' β€” Number of cores (sum of initial and reserved)
  • 'T' β€” Number of threads (sum of initial and reserved)

🌸 In "sys" window

  • 'p' β€” CPU type
  • 'v' β€” Visualization of core dispatch time per second

πŸ’œ The fields under z/VM

πŸ¦‹ In "sys_list" and "sys" window

  • 'c' β€” CPU time per second
  • 'm' β€” Management time per second (*)
  • 'C' β€” Total CPU time
  • 'M' β€” Total management time (*)
  • 'o' β€” Online time

πŸŽ€ In "sys_list" window

  • '#' β€” Number of CPUs
  • 'O' β€” Number of operating CPUs
  • 'u' β€” Used memory
  • 'a' β€” Maximum memory
  • 'r' β€” Current weight
  • 'x' β€” Maximum weight

✨ In "sys" window

  • 'v' β€” Visualization of CPU time per second
(*) Only available for the local guest virtual machine Only available if the system has the required support

🌈 UNITS

Depending on the field type the values can be displayed in different units. The following units are supported:

⏳ Time

  • 'us' β€” Microseconds (10^-6 seconds)
  • 'ms' β€” Millisconds (10^-3 seconds)
  • '%' β€” Hundreds of a second (10^-2 seconds) or percent
  • 's' β€” Seconds
  • 'm' β€” Minutes
  • 'hm' β€” Hours & Minutes
  • 'dhm' β€” Days & Hours & Minutes

🧠 Memory

  • 'kib' β€” Kibibytes (1.024 bytes)
  • 'mib' β€” Mebibytes (1.048.576 bytes)
  • 'gib' β€” Gibibytes (1.073.741.824 bytes)

πŸŽ€ Miscellaneous

  • 'str' β€” String
  • '#' β€” Count/Number
  • 'vis' β€” Visualization

πŸ‘‘ CPU TYPES

Depending on the hypervisor different CPU types are supported. These CPU types can be selected either interactively or with the --cpu-types command line option. The calculation of the CPU data only uses CPUs of the specified types. πŸ’…

On LPAR the following CPU types are supported:

  • 'IFL' β€” Integrated Facility for Linux
  • 'CP' β€” CP processor type
  • 'UN' β€” Unspecified processor type (other than CP or IFL)
NOTE: It is possible that on older machines also IFLs are shown as CPs. On z/VM currently only the processor type 'UN' is available.

πŸ”₯ CPU DATA

For Linux on z/VM, no performance data is available for individual CPUs on remote guests. Therefore, the hyptop "sys" window shows identical values for each of the operating CPUs. For the CPU time fields, these values represent the total across all operating CPUs divided by the number of operating CPUs. For the online time field, the value is the time during which at least one CPU has been operational. Operating CPUs are shown with CPU identifier "0" and stopped CPUs with "1". πŸ’€

✨ OUTPUT FORMATS ✨

Ok so this bit is extra tea β˜• for a couple of the output formats β€” like, the details you'd want if you're parsing this stuff instead of just vibing at it. Let's go πŸ’…

🌸 json 🌸

The JSON output is one top-level object, and it's giving very structured, very demure. Here's what's in it (key-value pairs, bestie):

  • meta: tool meta-data, including the API level, the version, the host name, and the time of invocation πŸ•
  • hyptop: the hypervisor performance data itself

All the performance data sits in an array of iteration objects under the "hyptop" property of that top-level object. Each iteration object has these properties:

  • iteration: the sequential count of the current iteration πŸ”’
  • time and time_epoch: when the iteration was recorded β€” one human-readable, one as Unix epoch
  • cputypes: how many CPUs hyptop detected, per CPU type. Possible properties are cp, ifl and un
  • systems: when the "sys_list" window is selected, this holds an array of system objects with the performance data per system. Each system object has a "system" property plus properties for its performance data (peep below πŸ‘‡)
  • cpus: when the "sys" window is selected, this holds an array of CPU objects with the performance data per CPU of the selected system. Each CPU object has a "coreid" property plus properties for its performance data (again, below)
  • summary: aggregated performance data over all systems in the "systems" or "cpus" array 🫢

All the performance data available for the platform (LPAR, z/VM) that hyptop is running on gets shown. Picking specific fields with --fields? Not supported, sorry babe πŸ™ˆ β€” but you can change the units of fields. Performance data properties are labeled after their respective columns.

Example JSON output for a single iteration β€” iconic, honestly:

{
  "meta": {
    "api_level": 1,
    "version": "2.35.0",
    "host": "mylpar.local",
    "time_epoch": 1730787834,
    "time": "2024-11-05 07:23:54+0100"
  },
  "hyptop": [
    {
      "iteration": 0,
      "time_epoch": 1730787834,
      "time": "2024-11-05 07:23:54+0100",
      "cputypes": {
        "ifl": 124,
        "cp": 1,
        "un": 0
      },
      "systems": [
        {
          "system": "MYLPAR",
          "#core": 30,
          "#the": 60,
          "core": 379.57,
          "the": 382.43,
          "smt": 294.73,
          "mgm": 2.09,
          "core+": "1503:13",
          "the+": "2060:45",
          "mgm+": "22:19",
          "online": "18:18:09"
        }
      ],
      "summary": {
        "#core": 30,
        "#the": 60,
        "core": 379.57,
        "the": 382.43,
        "smt": 294.73,
        "mgm": 2.09,
        "core+": "1503:13",
        "the+": "2060:45",
        "mgm+": "22:19",
        "online": "18:18:09"
      }
    }
  ]
}

πŸ¦‹ json-seq πŸ¦‹

json-seq is the JSON output format's sibling β€” same DNA, but with these differences, bestie:

  • the output is a sequence of top-level JSON objects, each one on a single line with no indentation
  • each top-level object is prefixed by an ASCII Record Separator character (0x1e) and suffixed with an ASCII Line Feed character (0x0a), all in accordance with RFC7464 πŸ“œ
  • the first object carries the tool meta-data properties defined in the previous section
  • every subsequent object represents performance data for one iteration

πŸŽ€ jsonl πŸŽ€

jsonl is the data streaming variation of the JSON output format described above β€” same properties as the json-seq output, except the JSON data is separated only by an ASCII Line Feed character (0x0a, LF). That's it. That's the whole difference. Slay for simplicity πŸ’…


πŸ”₯ EXAMPLES πŸ”₯

Wanna start hyptop with the "sys_list" window in interactive mode? Say less:

# hyptop

Wanna start hyptop with the "sys_list" window in batch mode? Periodt:

# hyptop -b

Wanna start hyptop with the "sys_list" window in interactive mode, with the fields CPU time (in milliseconds) and online time (unit default), sorted by online time? Here you go:

# hyptop -f c:ms,o -S o

Wanna start hyptop with the "sys" window for system "MYLPAR", with the fields CPU time (unit milliseconds) and online time (unit default), and sort the output reverse according to online time? Yes, the double -S o is on purpose, don't come for me:

# hyptop -w sys -s MYLPAR -f c:ms,o -S o -S o

Wanna start hyptop with the "sys_list" window in batch mode with update delay 5 seconds and 10 iterations? Chef's kiss:

# hyptop -b -d 5 -n 10

Wanna start hyptop with the "sys_list" window using only the CPU types IFL and CP for CPU time calculation? Ate:

# hyptop -t ifl,cp

Wanna show a single iteration of performance data as a formatted JSON object for system "MYLPAR", with fields CPU time, thread time, management time and online time in microseconds? Obsessed with this one:

# hyptop -f C:us,E:us,M:us,o:us --format json -n 1 -s MYLPAR

🌈 ENVIRONMENT 🌈

  • TERM β€” this environment variable specifies your terminal type. To run hyptop in interactive mode, TERM has to be set. Interactive mode is not available for terminals that have TERM=dumb (e.g. line mode terminals) 😭 so set it properly, okay?

And that's a wrap on this manpage, bestie 🫢 This little beauty comes from s390-tools, dated Nov 2009 and filed as HYPTOP(8) β€” go forth and monitor those hypervisors, you main character πŸ‘‘πŸ’–

πŸ“¦ where this page comes from