nmon_printer: schneller Blick in NMON-Dateien

Viele Administratoren setzen NMON zum Sammeln von Performance-Daten auf AIX-Systemen ein. Die gesammelten Daten können dann z.B. mit dem NMON-Analyzer graphisch visualisiert werden. Alternativ kann man natürlich auch njmon einsetzen. Manchmal möchte man einen schnellen Blick in eine NMON-Datei noch auf dem AIX-System werfen. Das geht natürlich mit grep, awk , und anderen Standard UNIX Utilities. Es muss aber immer erst die passende Kommandozeile überlegt und eingetippt werden und die Ausgabe ist dann auch nicht immer sehr übersichtlich.

Für einen solchen schnellen Blick in eine NMON-Datei haben wir in umserem Download Bereich das Skript nmon_printer zur Verfügung gestellt. Mit dem nmon_printer kann man zunächst einmal auflisten welche Daten grundsätzlich in der NMON-Datei gesammelt wurden:

$ nmon_printer -l aix01_200718.nmon
CPU_ALL -     CPU Total aix01
CPU01 -       CPU 1 aix01
CPU02 -       CPU 2 aix01
CPU03 -       CPU 3 aix01
CPU04 -       CPU 4 aix01
CPU05 -       CPU 5 aix01
CPU06 -       CPU 6 aix01
CPU07 -       CPU 7 aix01
CPU08 -       CPU 8 aix01
MEM -         Memory aix01
MEMNEW -      Memory New aix01
MEMUSE -      Memory Use aix01
PAGE -        Paging aix01
...
$

Zum Anzeigen der Datensätze gibt man neben dem NMON File noch den gewünschten darzustellenden Datensatz an, Groß- oder Klein-Schreibung spielt dabei keine Rolle. Hier eine Beispiel für CPU_ALL:

$ nmon_printer aix01_200718.nmon cpu_all
  CPU_ALL             Timestamp  User%  Sys%  Wait%  Idle%  Busy  PhysicalCPUs 
  CPU_ALL  00:05:15 17-JUL-2020    1.2   3.0    0.1   95.7   4.2              8
  CPU_ALL  00:10:15 17-JUL-2020    1.3   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:15:15 17-JUL-2020    1.0   2.3    0.1   96.7   3.3              8
  CPU_ALL  00:20:16 17-JUL-2020    5.1   3.0    0.1   91.8   8.2              8
  CPU_ALL  00:25:16 17-JUL-2020    1.2   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:30:16 17-JUL-2020    1.1  17.5    0.1   81.3  18.5              8
  CPU_ALL  00:35:16 17-JUL-2020    1.1   5.8    0.0   93.1   6.9              8
...
$

In manchen Fällen hat ein Datensatz soviel Felder, das die Zeilen umgebrochen werden und die Ausgabe dann etwas unübersichtlich wird. Der Datensatz LPAR hat z.B. 23 Felder! Für solche Fälle, oder falls man nur an bestimmten Feldern interessiert ist, kann man mit der Option ‚-f‚ die gewünschten Felder angeben. Dabei kann man entweder die gewünschten Felder durch Komma getrennt angeben:

$ nmon_printer -f 0,1,2,13,14,15 aix01_200718.nmon lpar
  LPAR             Timestamp  PhysicalCPU  EC_User%  EC_Sys%  EC_Wait%
  LPAR  00:05:15 17-JUL-2020        0.037      1.23     2.95      0.00
  LPAR  00:10:15 17-JUL-2020        0.034      1.28     2.66      0.00
  LPAR  00:15:15 17-JUL-2020        0.029      1.03     2.25      0.00
  LPAR  00:20:16 17-JUL-2020        0.064      5.14     3.01      0.00
  LPAR  00:25:16 17-JUL-2020        0.035      1.21     2.69      0.00
  LPAR  00:30:16 17-JUL-2020        0.150      1.08    17.46      0.02
  LPAR  00:35:16 17-JUL-2020        0.063      1.13     5.77      0.00
  LPAR  00:40:16 17-JUL-2020        0.030      1.13     2.24      0.00
  LPAR  00:45:16 17-JUL-2020        0.030      1.06     2.34      0.00
...
$

Oder man kann auch Bereiche angeben (z.B. 0-2 oder 13-15):

$ nmon_printer -f 1,5-7 aix01_200718.nmon ioadapt
             Timestamp  fcs1_read-KB/s  fcs1_write-KB/s  fcs1_xfer-tps
  00:05:15 17-JUL-2020             0.0             27.3            3.0
  00:10:15 17-JUL-2020             0.0              0.0            2.6
  00:15:15 17-JUL-2020             0.0             13.6            2.8
  00:20:16 17-JUL-2020             0.0             13.6            2.3
  00:25:16 17-JUL-2020             0.0             13.7            2.3
  00:30:16 17-JUL-2020            27.3           4982.5           89.4
  00:35:16 17-JUL-2020            13.7             27.3            4.1
  00:40:16 17-JUL-2020             0.0             13.6            2.6
  00:45:16 17-JUL-2020             0.0             13.6            2.6
...
$

Die Zählung der Felder beginnt jeweils bei 0.

HSCLB505 The partition cannot use hardware-accelerated encryption

Beim Verschieben einer LPAR mit LPM auf eine ältere Hardware kann der folgende Fehler auftreten:

HSCLB505 The partition cannot use hardware-accelerated encryption on the destination managed system because the destination managed system does not support hardware-accelerated encryption.

Dies bedeutet das Hardware-beschleunigte Verschlüsselung für die LPAR aktiviert ist, jedoch auf dem Ziel Managed System
nicht unterstützt ist.

Die Hardware-beschleunigte Verschlüsselung lässt sich mit dem LPAR-Tool ganz leicht ausschalten:

$ lpar -d chmem lpar01 hardware_mem_encryption=0
$

Ohne LPAR-Tool geht das natürlich auch, z.B. von der HMC-Kommandozeile:

chhwres -m ms01 -r mem -o s -p lpar01 -a 'hardware_mem_encryption=0'

Danach sollte die Validierung und Verschiebung mittels LPM funktionieren.

HSCLB504 The migrating partition cannot use hardware-accelerated Active Memory Expansion

Beim Verschieben einer LPAR mit LPM auf eine ältere Hardware kann der folgende Fehler auftreten:

HSCLB504 The migrating partition cannot use hardware-accelerated Active Memory Expansion on the destination managed system because the destination managed system does not support hardware-accelerated Active Memory Expansion.

Dies bedeutet das Hardware-beschleunigte aktive Memory Erweiterung (AME) für die LPAR aktiviert ist, jedoch auf dem Ziel
Managed System nicht unterstützt ist .

Die Hardware-beschleunigte aktive Memory Erweiterun lässt s ich mit dem LPAR-Tool ganz leicht ausschalten:

$ lpar -d chmem lpar01 hardware_mem_expansion=0
$

Ohne LPAR-Tool geht das natürlich auch, z.B. von der HMC-Kommandozeile:

chhwres -m ms01 -r mem -o s -p lpar01 -a 'hardware_mem_expansion=0'

Danach sollte die Validierung und Verschiebung mittels LPM funktionieren.

AIX Lifecycle ermitteln

Wie oft haben Sie schon den Lifecycle (Start allgemeine Verfügbarkeit und Ende des Supports) für AIX, VIOS, PowerHA oder HMC über Google gesucht?

Diese Informationen lassen sich mit Hilfe des IBM FLRT APIs (https://www14.software.ibm.com/webapp/set2/flrt/sas?page=jsonapi) auch leicht über die Kommandozeile herausfinden. Dazu braucht man lediglich:

  • eine direkte Internet Anbindung oder Anbindung über einen HTTP Proxy
  • eine installierte Version von curl

Eine Übersicht sämtlicher AIX-Versionen bekommt man dann mit Hilfe des folgenden curl-Aufrufs:

$ curl "https://www14.software.ibm.com/support/customercare/flrt/liteTable?prodKey=aix&format=json"
{"results": [
{
"input": "7200-04-02",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U887468&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2020.05.15",
"eosps": "2022.11.30"
},
{
"input": "7200-04-01",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U886355&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2019.11.15",
"eosps": "2022.11.30"
},
...

Die Ausgabe erfolgt im JSON-Format und ist im Beispiel stark gekürzt.

Wir haben das ganze in ein kleines Shell-Skript verpackt (show_life_cycle) und in unserem Dowload-Bereich zur Verfügung gestellt (https://powercampus.de/download).

Hier ein Beispiellauf des Skriptes ohne Argumente:

$ show_life_cycle 
VERSION          GA          EOSPS       UPDATE           UPGRADE
7200-04-02       2020.05.15  2022.11.30  -                -
7200-04-01       2019.11.15  2022.11.30  -                -
7200-04-00       2019.11.15  2022.11.30  7200-04-01       -
7200-03-04       2020.02.14  2021.09.30  -                7200-04-01
7200-03-03       2019.05.10  2021.09.30  7200-03-04       7200-04-01 
7200-03-02       2018.11.16  2021.09.30  7200-03-04       7200-04-01
...

Es werden alle AIX Versionen aufgelistet. Über ein Argument können aber auch andere Produkte zur Darstellung ausgewählt werden, z.B. RHEL-Versionen, SLES-Versionen, VIOS-Versionen, HMC-Versionen, PowerHA-Versionen und sogar HMC-Modelle oder Power Systeme. Eine vollständige Liste findet man unter https://www14.software.ibm.com/webapp/set2/flrt/doc?page=prodTable. Hier als Beispiel eine Auflistung der RHEL-Versionen:

$ show_life_cycle rhel
VERSION          GA          EOSPS       UPDATE           UPGRADE
8.0              2019.05.07  NA          -                -
7.7              2019.08.06  NA          -                -
7.6              2018.10.30  NA          7.7              -
7.5              2018.04.10  NA          7.7              -
7.4              2017.07.31  NA          7.7              -
7.3              2016.11.03  NA          7.7              -
7.2              2015.11.19  NA          7.7              -
7.1              2015.03.05  NA          7.7              -
7.0              2014.06.10  2015.03.05  7.7              -
6.10             2018.06.19  NA          -                7.6
6.9              2017.03.21  NA          6.10             7.6
6.8              2016.05.10  NA          6.10             7.6
6.7              2015.07.22  NA          6.10             7.6
6.6              2014.10.14  NA          6.10             7.6
6.5              2013.11.21  2014.10.14  6.10             7.6
...

Die Ausgaben sind in einigen Fällen sehr lang. Über ein weiteres Argument kann man einen Prefix der gewünschten Versionen angeben, hier gezeigt am Beispiel von PowerHA 7.2.2:

$ show_life_cycle hacmp 7.2.2
VERSION          GA          EOSPS       UPDATE           UPGRADE
7.2.2.4          2020.05.28  2021.04.30  -                7.2.3.2
7.2.2.3          2019.09.13  2021.04.30  -                7.2.3.2
7.2.2.2          2018.11.30  2021.04.30  7.2.2.3          7.2.3.2
7.2.2.1          2018.06.29  2021.04.30  7.2.2.3          7.2.3.2
7.2.2            2017.12.15  2021.04.30  7.2.2.3          7.2.3.2
$

Ist nur eine Anbindung über einen Proxy verfügbar, dann gibt es die folgenden Möglichkeiten:

1. Der HTTP-Proxy wird über die Option ‚-p‚ angegeben, z.B.:

$ show_life_cycle -p http://10.0.0.3:8000 hmc V9
VERSION          GA          EOSPS       UPDATE           UPGRADE
V9 R1 M941       2020.05.22  2021.04.30  -                -
V9 R1 M940       2019.11.22  2021.04.30  -                -
V9 R1 M931       2019.09.11  2021.04.30  -                -
V9 R1 M930       2019.05.17  2021.04.30  V9 R1 M931       -
V9 R1 M921       2018.11.16  2021.04.30  V9 R1 M931       -
V9 R1 M920       2018.08.17  2021.04.30  V9 R1 M931       -
V9 R1 M911       2018.05.25  2021.04.30  V9 R1 M931       -
V9 R1 M910       2018.03.20  2021.04.30  V9 R1 M931       -
$

2. Der HTTP-Proxy wird direkt im Skript gesetzt, Shell-Variable PROXY:

$ grep ^PROXY show_life_cycle 
PROXY="http://10.0.0.3:8000"
$

3. Wird das Skript unter AIX als root ausgeführt, wird automatisch die Proxy Konfiguration des Electronic Service Agents (ESA) übernommen. Kann durch Verwenden der Kommandozeilen-Option ‚-p‚ oder Setzen der Variablen PROXY überschrieben werden.

Das Skript sollte auf jedem UNIX-System mit einer Korn-Shell laufen (auch MacOS). Damit ist die Suche über Google für Life-Cycle Daten nicht mehr erforderlich.

Zum Thema Inventory Scout haben wir neben einem Artikel Automatisierung von Inventory Scout ebenfalls ein Skript zum Download verfügbar!