Tips en Trucs 2021

De prestatiemonitor collectl

Het hulpprogramma collectl kan de snelheid van een systeem achterhalen en volgen. De minimale belasting van collectl zorgt dat het monitoren van de systeemprestaties nauwkeurig uitgevoerd wordt. Het monitoren van de systeemprestaties gebeurt door regelmatig de status van het systeem weer te geven. Vergeleken met andere prestatiemonitors kan collectl veel verschillende systeembelastingen volgen, zoals processor, schijven, netwerk, sockets, tcp, inodes, infiniband, lustre, geheugen, nfs, processen, quadrics, slabs en buddyinfo. Collectl werkt zowel interactief als op de achtergrond (daemon) en kan gegevens opslaan en verzamelde data terug afspelen. De verzamelde gegevens kunnen daarenboven naar verschillende formaten geëxporteerd worden.

Collectl installeren

Collectl wordt in openSUSE Leap 15.3 in een standaard softwarebron aangeboden en installeer je met de volgende opdracht:

dany@pindabook:~> sudo zypper install collectl
[sudo] wachtwoord voor root: 
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

Het volgende NIEUWE pakket zal worden geïnstalleerd:
  collectl

1 nieuw te installeren pakket.
Totale downloadgrootte: 487,6 KiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 1,5 MiB worden gebruikt.
Doorgaan? [j/n/v/...? alle opties tonen] (j): 
pakket collectl-4.1.3-bp153.1.15.noarch wordt opgehaald                                        (1/1), 487,6 KiB (  1,5 MiB uitgepakt)
Ophalen: collectl-4.1.3-bp153.1.15.noarch.rpm ...............................................................................[gereed]

Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(1/1) Installeren van: collectl-4.1.3-bp153.1.15.noarch .....................................................................[gereed]
Aanvullende rpm-uitvoer:
Updating /etc/sysconfig/collectl ...

Zoals bij elk terminalprogramma kan je met de optie --help alle mogelijke opties met een beschrijving weergeven. Met de --showsubsys toont collectl welke systeemparameters gemonitord kunnen worden:

dany@pindabook:~> collectl --showsubsys
The following subsystems can be specified in any combinations with -s or 
--subsys in both record and playbackmode.  [default=bcdfijmnstx]

These generate summary, which is the total of ALL data for a particular type
  b - buddy info (memory fragmentation)
  c - cpu
  d - disk
  f - nfs
  i - inodes
  j - interrupts by CPU
  m - memory
  n - network
  s - sockets
  t - tcp
  x - interconnect (currently supported: OFED/Infiniband)
  y - slabs
 
These generate detail data, typically but not limited to the device level

  C -  individual CPUs, including interrupts if -sj or -sJ
  D -  individual Disks
  E -  environmental (fan, power, temp) [requires ipmitool]
  F -  nfs data
  J -  interrupts by CPU by interrupt number
  M -  memory numa/node
  N -  individual Networks
  T -  tcp details (lots of data!)
  X -  interconnect ports/rails (Infiniband/Quadrics)
  Y -  slabs/slubs
  Z -  processes

An alternative format lets you add and/or subtract subsystems to the defaults by
immediately following -s with a + and/or -
  eg: -s+YZ-x adds slabs & processes and removes interconnet summary data
      -s-n removes network summary data
      -s-all removes ALL subsystems, something that can handy when playing back
             data collected with --import and you ONLY want to see that data

Collectl uitvoeren

Je kunt collectl uitvoeren zonder opties om informatie i.v.m. de processor, schijven en het netwerk in gemakkelijk te lezen vorm weer te geven.

dany@pindabook:~> collectl
waiting for 1 second sample...
#<----CPU[HYPER]-----><----------Disks-----------><----------Network---------->
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
   0   0   117    171      0      0      0      0      0      1      0       0 
   0   0   150    192      0      0      0      0      0      3      0       1 
   0   0   125    183      0      0      0      0      0      1      0       1 
   0   0   106    176      0      0      0      0      0      1      0       3 
   0   0   129    199      0      0      0      0      0      3      0       1 
   0   0    98    164      0      0      0      0      0      1      0       1 
   0   0   152    251      0      0      0      0      0      2      0       1 
   1   0   308    404      0      0      0      0      2     19      2      25 
   0   0   120    195      0      0      0      0      0      1      0       1 
Ouch!

Druk op de sneltoets Ctrl+c om collectl te stoppen.

Om informatie over alle door collectl ondersteunde systeemgegevens weer te geven, gebruik je de -all optie:

dany@pindabook:~> collectl --all
waiting for 1 second sample...
#<----CPU[HYPER]-----><-------Int--------><-----------------Memory-----------------><----------Disks-----------><----------Network----------><-------TCP--------><------Sockets-----><----Files---><------NFS Totals------>
#cpu sys inter  ctxsw Cpu0 Cpu1 Cpu2 Cpu3 Free Buff Cach Inac Slab  Map   Fragments KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut   IP  Tcp  Udp Icmp  Tcp  Udp  Raw Frag Handle Inodes  Reads Writes Meta Comm 
   0   0   113    181   16   67   27    1   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      0      0       0    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   122    198   26   67   26    3   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      1       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   101    160    9   65   26    1   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      0       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   165    286   32   66   24   43   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      0       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   151    223   28   64   30   29   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      0       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   131    205   17   69   26   20   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      0       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
   0   0   220    390   52   69   59   39   6G  24M 962M 424M 145M 654M ksssokjhcas      0      0      0      0      0      1      0       1    0    0    0    0  508    0    0    0   6560  80663      0      0    0    0 
Ouch!

Collectl kan met de optie --top de top opdracht vervangen:

dany@pindabook:~> collectl --top
collectl

Om enkel de processor, geheugen en schijfprestaties te volgen gebruik je de optie -scmd:

dany@pindabook:~> collectl -scmd
waiting for 1 second sample...
#<----CPU[HYPER]-----><-----------Memory-----------><----------Disks----------->
#cpu sys inter  ctxsw Free Buff Cach Inac Slab  Map KBRead  Reads KBWrit Writes 
   0   0   206    277   5G  25M   1G 425M 147M 737M      0      0      0      0 
   0   0   150    188   5G  25M   1G 425M 147M 737M      0      0      0      0 
   0   0   108    168   5G  25M   1G 425M 147M 737M      0      0      0      0 
   0   0   141    200   5G  25M   1G 425M 147M 737M      0      0      0      0 
   0   0   144    188   5G  25M   1G 425M 147M 737M      0      0      0      0 
Ouch!

Enkel het geheugen:

dany@pindabook:~> collectl -sm
waiting for 1 second sample...
#<-----------Memory----------->
#Free Buff Cach Inac Slab  Map 
   5G  25M   1G 425M 147M 737M 
   5G  25M   1G 425M 147M 737M 
   5G  25M   1G 425M 147M 737M 
   5G  25M   1G 425M 147M 737M 
Ouch!

Enkel de processor, schijven en netwerk:

dany@pindabook:~> collectl -scdn
waiting for 1 second sample...
#<----CPU[HYPER]-----><----------Disks-----------><----------Network---------->
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
   0   0   116    171      0      0      0      0      0      2      0       0 
   0   0   170    205      0      0      0      0      0      3      0       1 
   0   0   112    166      0      0      0      0      0      2      0       2 
   0   0   142    189      0      0      0      0      0      2      0       2 
Ouch!

Enkel TCP en processor:

dany@pindabook:~> collectl -stc
waiting for 1 second sample...
#<----CPU[HYPER]-----><-------TCP-------->
#cpu sys inter  ctxsw   IP  Tcp  Udp Icmp 
   0   0   114    167    0    0    0    0 
   0   0   136    189    0    0    0    0 
   0   0   100    158    0    0    0    0 
   0   0   169    189    0    0    0    0 
Ouch!

Om informatie op te vragen over de processen:

dany@pindabook:~> collectl -c1 -sZ -i:1
waiting for 1 second sample...

### RECORD    1 >>> pindabook <<< (1637768868.001) (Wed Nov 24 16:47:48 2021) ###

# PROCESS SUMMARY (counters are /sec)
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
    1  root     20     0    0 S  233M   13M  0  0.00  0.00   0  00:04.39    0    0    0    0 /usr/lib/systemd/systemd 
    2  root     20     0    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root      0     2    0 I     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_gp 
    4  root      0     2    0 I     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_par_gp 
    6  root      0     2    0 I     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H-kblockd 
    7  root     20     2    0 I     0     0  0  0.00  0.00   0  00:00.16    0    0    0    0 kworker/0:1-mm_percpu_wq 
    9  root      0     2    0 I     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 mm_percpu_wq 
   10  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.03    0    0    0    0 ksoftirqd/0
   ...

M.a.w. je kunt met collectl verschillende systeeminformatie naast en bij elkaar plaatsen, wat het opsporen van prestatie gerelateerde problemen kan helpen oplossen. Veel succes met collectl.

Collectl volledig van de computer verwijderen

In openSUSE Leap 15.3 verwijder je collectl volledig van de computer met de opdracht:

dany@pindabook:~> sudo zypper remove -u collectl
[sudo] wachtwoord voor root: 
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

Het volgende pakket zal worden VERWIJDERD:
  collectl

1 te verwijderen pakket.
Na de bewerking zal 1,5 MiB worden vrijgemaakt.
Doorgaan? [j/n/v/...? alle opties tonen] (j): 
(1/1) Verwijderen van collectl-4.1.3-bp153.1.15.noarch ......................................................................[gereed]
Aanvullende rpm-uitvoer:
rm: cannot remove '/var/lib/systemd/migrated/collectl': No such file or directory