Analyser

De Diablotins.org.


Analyser, surveiller l'activité du système
Image:brush.png
Observer votre système, comprendre l'utilisation des ressources.


Sommaire

Journaux

Vous avez vu passer toute une liste de paramètres et de détections au démarrage et vous voudriez y revenir ?
Utilisez dmesg(8).

dmesg -a 


Vous trouverez la liste de tous les messages de la veille dans /var/log/dmesg.today et /var/log/dmesg.yesterday.


N'oubliez pas que la console est là pour consulter les messages courants, et que ceux-ci sont configurables via syslog.

Matériel

Lors de l'amorçage, tapez lsdev pour obtenir une liste des périphériques de stockage disponibles et lsmod pour obtenir la liste des modules du noyau attachés lors de son chargement.

DMIDecode

Le port sysutils/dmidecode vous donnera de nombreuses informations sur votre matériel.

david:/<1>ports/sysutils/dmidecode>sudo dmidecode -t bios
# dmidecode 2.11
SMBIOS 2.4 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Award Software International, Inc.
        Version: F2
        Release Date: 12/30/2008
        Address: 0xE0000
        Runtime Size: 128 kB
        ROM Size: 1024 kB
        Characteristics:
                PCI is supported
                PNP is supported
                APM is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                BIOS ROM is socketed
                EDD is supported
                5.25"/360 kB floppy services are supported (int 13h)
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 kB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                LS-120 boot is supported
                ATAPI Zip drive boot is supported
                BIOS boot specification is supported
                Targeted content distribution is supported

Handle 0x0017, DMI type 13, 22 bytes
BIOS Language Information
        Language Description Format: Long
        Installable Languages: 3
                n|US|iso8859-1
                n|US|iso8859-1
                r|CA|iso8859-1
        Currently Installed Language: n|US|iso8859-1

PCI

devinfo(8) vous listera les périphériques connectés.
La sortie est en elle même assez illisible.


pciconf(8) vous donnera des détails sur les périphériques connectés sur le bus pci.

  • Liste simple : pciconf -l
  • Liste détaillée: pciconf -lv

USB

usbconfig(8) vous listera les périphériques USB.

david:~>sudo usbconfig
ugen0.1: <OHCI root HUB nVidia> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen1.1: <EHCI root HUB nVidia> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen0.2: <USB camera vendor 0x0c45> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

Pour l'instant, seul une webcam est connectée.


usbdevfs vous donnera les périphériques à qui un pilote a été attaché.

Système

Activité

Pour surveiller l'activité du système, utilisez vmstat(8).

  • Afficher le rapport toutes les 5 secondes:
vmstat -w5
  • Afficher 5 rapports consécutifs, toutes les deux secondes:
vmstat -w2 -c10
david:/var/log>vmstat -w2 -c5
procs      memory      page                    disks     faults         cpu
r b w     avm    fre   flt  re  pi  po    fr  sr ad1 ad4   in   sy   cs us sy id
0 0 0   1063M  1483M   211   1   1   0   203   0   0   0  115 48681 5233  6  3 91
0 0 0   1063M  1483M  3365   0   0   0  3374   0   0   2  274 11648 2328  3  2 95
0 0 0   1063M  1483M   429   0   0   0   430   0   0   0  120 13357  929  2  1 97
0 0 0   1063M  1483M   215   0   0   0   219   0   0   7  120 7280  962  1  1 98
0 0 0   1063M  1483M     0   0   0   0     1   0   0   0   98  496  629  0  0 100
  • Afficher les interruptions des périphériques:

vmstat -i

david:/var/log>vmstat -i
interrupt                          total       rate
irq1: atkbd0                       38507          5
irq6: fdc0                             1          0
irq12: psm0                        69412         10
irq14: ata0                        17191          2
irq20: nfe0                         7409          1
irq21: ohci0+                      13554          1
irq22: vgapci0+                   414714         60
irq23: hdac0                      222226         32
cpu0: timer                     13633786       1999
cpu1: timer                     13633415       1999
Total                           28050215       4114

Ce rapport est important, si le taux (rate) est trop élevé, vous avez un problème avec le pilote de périphérique concerné.

  • Afficher la consommation de ressources et ses limites ( depuis la branche 9).
vmstat -z

que vous pouvez consulter et modifier par

limits

Réseau

arp(8) vous dira quelles sont les adresses MAC qui sont connectées
david:~>arp -n -a
? (192.168.1.1) at 00:25:15:53:ec:00 on nfe0 expires in 1169 seconds [ethernet]
? (192.168.1.255) at (incomplete) on nfe0 expired [ethernet]
? (192.168.1.19) at 00:24:1d:16:14:52 on nfe0 permanent [ethernet]


netstat(1) est une interface tout-azimut sur l'activité réseau de votre machine.

  • Par connexion:
netstat

Plus précisément, les connexions de la famille inet(3) qui nous intéressent le plus, généralement:

netstat -na -f inet
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address       (state)
tcp4       0      0 192.168.1.21.47566     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.30380     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.13288     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.32984     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.62788     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.26601     95.130.11.10.443       ESTABLISHED
tcp4       0      0 192.168.1.21.10965     209.85.227.139.80      ESTABLISHED
tcp4       0      0 192.168.1.21.10710     74.125.19.139.80       ESTABLISHED
tcp4       0      0 192.168.1.21.30436     209.85.227.106.80      ESTABLISHED
tcp4       0      0 192.168.1.21.12399     192.168.1.1.53         ESTABLISHED
tcp4       0      0 192.168.1.21.15306     209.85.227.157.80      ESTABLISHED
tcp4       0      0 192.168.1.21.31812     209.85.227.157.80      ESTABLISHED
tcp4       0      0 192.168.1.21.27396     209.85.227.157.80      ESTABLISHED
tcp4       0      0 127.0.0.1.25           *.*                    LISTEN
udp4       0      0 *.514                  *.*                    
  • Par interface:
netstat -i -dh
david:/home/david#netstat -i -dh
Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll Drop
nfe0   1500 <Link#1>      00:24:1d:16:14:52     9.3K     0     0     7.9K     0     0  365 
nfe0   1500 fe80:1::224:1 fe80:1::224:1dff:        0     -     -        4     -     -    - 
nfe0   1500 192.168.1.0   192.168.1.21          8.9K     -     -     7.8K     -     -    - 
plip0  1500 <Link#2>                               0     0     0        0     0     0    0 
lo0   16384 <Link#3>                               4     0     0        4     0     0    0 
lo0   16384 your-net      localhost                2     -     -        2     -     -    - 
lo0   16384 localhost     ::1                      0     -     -        2     -     -    - 
lo0   16384 fe80:3::1     fe80:3::1                0     -     -        0     -     -    - 
  • Routage:
netstat -r
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            neufbox            UGS         0     6791   nfe0
localhost          link#3             UH          0        2    lo0
192.168.1.0        link#1             U           2     1618   nfe0
192.168.1.21       link#1             UHS         0        0    lo0
netstat -rs
routing:
        0 bad routing redirects
        0 dynamically created routes
        0 new gateways due to redirects
        43 destinations found unreachable
        0 uses of a wildcard route
        0 routes not in table but not freed
  • Statistiques:
netstat -s -f inet

pour toute une famille, ou

netstat -s -p tcp

pour un protocole.

netstat -Q

pour un bilan de l' expédition express(9) de paquets entre une source et un protocole. Disponible depuis la branche 9.


sockstat(1) est plus précis, il indique les connexions ouvertes:

david:~>sockstat -4L
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
david    firefox-bi 1675  46 tcp4   192.168.1.21:17816    209.85.227.157:80
david    firefox-bi 1675  48 tcp4   192.168.1.21:30816    209.85.227.157:80
david    firefox-bi 1675  49 tcp4   192.168.1.21:47825    209.85.227.157:80
root     syslogd    783   7  udp4   *:514                 *:*

Entrées sorties

iostat(8) affiche un rapport sur l'activité des terminaux, des disques et du processeur.

iostat -w2 -c3
       tty             ad1              ad4              cd0             cpu
 tin  tout  KB/t tps  MB/s   KB/t tps  MB/s   KB/t tps  MB/s  us ni sy in id
  41    14  4.57   0  0.00  11.59   6  0.07   0.00   0  0.00   4  0  2  0 94
 325   127  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   0  0  0  0 100
 136    39  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   0  0  0  0 100

Fichiers

fstat(1) affiche les fichiers ouverts et le processus correspondant:

USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W
david    less       20418 root /             2 drwxr-xr-x    1024  r
david    less       20418   wd /usr     6782977 drwxr-xr-x    2048  r
david    less       20418 text /usr     5867266 -r-xr-xr-x  141936  r
david    less       20418    0* pipe ffffff00431d25b0 <-> ffffff00431d2708      0 rw
david    less       20418    1 /dev        111 crw--w----   pts/2 rw
david    less       20418    2 /dev        111 crw--w----   pts/2 rw
david    less       20418    3 /dev        111 crw--w----   pts/2  r

Interface & statistiques

systat(1) affiche en continu des statistiques sur l'activité du système, par défaut les processus qui occupent le plus le ou les processeurs.

                   /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
    Load Average   |
                   /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root           Xorg XXXX
root           csup X

Ici, tout est calme.
Tapez «:» pour changer l'affichage. Par exemple, entrez à la suite:

  • pigs: les processus qui occupent le plus le processeur, comme ci dessus.
  • swap: L'usage du fichier d'échange.
Disk  1K-blocks Used /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
ad4s1b  4194176    0 X
  • iostat: Voir chapitre précédent.
          /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
cpu  user|XXXXXXXXXXX
     nice|
   system|XXXX
interrupt|
     idle|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
ad1   MB/s 
      tps|
ad4   MB/s 
      tps|XXXXXXXXXXXXXXXXXXXXXXXX
cd0   MB/s 
      tps|
pass0 MB/s 
      tps|
  • ip/ip6, tcp, icmp/icmp: statistiques réseau.
  • vmstat: Une interface vers le chapitre précédent:
    3 users    Load  0,03  0,11  0,08                  13 mar 17:38

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act  177636   13792  1191172    16828 1091928  count
All  221564   30592 1075019k    48988          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow    4244 total
             76      1611  197 3001  244  152             zfod        atkbd0 1
                                                          ozfod       fdc0 irq6
 0,5%Sys   0,2%Intr  0,2%User  0,0%Nice 99,1%Idle        %ozfod   180 psm0 irq12
|    |    |    |    |    |    |    |    |    |    |       daefr     2 ata0 irq14
                                                          prcfr       nfe0 irq20
                                         5 dtbuf          totfr       ohci0+ 21
Namei     Name-cache   Dir-cache    100000 desvn          react    62 vgapci0+ 2
   Calls    hits   %    hits   %     66514 numvn          pdwak       hdac0 23
       4       4 100                 24999 frevn          pdpgs  2000 cpu0: time
                                                          intrn  2000 cpu1: time
Disks   ad1   ad4   cd0 pass0                      256264 wire
KB/t   0,00  0,00  0,00  0,00                      116696 act
tps       0     0     0     1                      418540 inact
MB/s   0,00  0,00  0,00  0,00                        4256 cache
%busy     0     0     0     0                     1087672 free
                                                   204128 buf
  • netstat: voir chapitre idoine:
Local Address          Foreign Address        Proto Recv-Q Send-Q (state)
192.168.1.21.39223     wy-in-f154.1e100.http  tcp4       0      0 TIME_WAIT
192.168.1.21.35078     wy-in-f154.1e100.http  tcp4       0      0 TIME_WAIT
192.168.1.21.42828     wy-in-f154.1e100.http  tcp4       0      0 TIME_WAIT
localhost.smtp         *.*                    tcp4       0      0 LISTEN
192.168.1.21.26919     neufbox.domain         tcp4       0      0 ESTABLISHED
  • ifstat: interfaces réseau:
      Interface           Traffic               Peak                Total
            lo0  in      0,000 KB/s          0,000 KB/s            0,234 KB
                 out     0,000 KB/s          0,000 KB/s            0,234 KB

           nfe0  in      0,000 KB/s          3,001 KB/s            8,105 MB
                 out     0,000 KB/s          1,241 KB/s            4,731 MB

Processus

Lister

Le célèbre ps(1) vous donnera un rapport sur une liste de processus.
L'option x inclue les processus qui n'ont pas de terminal associé, ce qui, de nos jours, est la majorité.

  • ps x : Vos processus.
  • ps ax: ceux des autres aussi.
  • ps cx: pas la peine d'en rajouter, vos savez où sont vos exécutables, n'est ce pas ?
  • ps dx: intéressant; l'affichage en arborescence:
david:~>ps dcx
  PID  TT  STAT      TIME COMMAND
 1390  ??  Ss     0:01,49 fluxbox
 1513  ??  Is     0:00,01 - tcsh
 1515  ??  S      0:00,21 `-- xterm
 1517   0  Is     0:00,05   `-- tcsh
20331   0  I+     0:00,19     `-- systat
 1665  ??  Is     0:00,01 - tcsh
 1667  ??  I      0:00,00 `-- sh
 1671  ??  I      0:00,00   `-- sh
 1675  ??  I      1:18,08     `-- firefox-bin
 1717  ??  Is     0:00,01 - tcsh
 1719  ??  I      0:00,14 `-- xterm
 1721   1  Is     0:00,01   `-- tcsh
20384  ??  Is     0:00,01 - tcsh
20386  ??  S      0:00,11 `-- xterm
20388   2  Ss     0:00,06   `-- tcsh
20478   2  R+     0:00,00     `-- ps
 1441  ??  I      0:00,00 dbus-launch
 1442  ??  Is     0:00,01 dbus-daemon
 1521  ??  Is     1:03,40 pulseaudio
 1678  ??  S      0:00,04 gconfd-2
  • Les threads aussi:
david:~>ps dxH
  PID  TT  STAT      TIME COMMAND
 1390  ??  Ss     0:01,50 fluxbox
 1513  ??  Is     0:00,01 - /bin/tcsh -c xterm
 1515  ??  I      0:00,21 `-- xterm
 1517   0  Is     0:00,05   `-- tcsh
20331   0  I+     0:00,19     `-- systat
 1665  ??  Is     0:00,01 - /bin/tcsh -c firefox3
 1667  ??  I      0:00,00 `-- /bin/sh /usr/local/bin/firefox3
 1671  ??  I      0:00,00   `-- /bin/sh /usr/local/lib/firefox3/run-mozilla.sh /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      1:11,21     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      0:00,16     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      0:00,12     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      0:00,11     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      0:03,12     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:03,69     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,00     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,00     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,89     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,00     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,00     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  S      0:00,02     |-- /usr/local/lib/firefox3/firefox-bin
 1675  ??  I      0:00,00     `-- /usr/local/lib/firefox3/firefox-bin
 1717  ??  Is     0:00,01 - /bin/tcsh -c xterm
 1719  ??  I      0:00,14 `-- xterm
 1721   1  Is     0:00,01   `-- tcsh
20384  ??  Is     0:00,01 - /bin/tcsh -c xterm
20386  ??  S      0:00,11 `-- xterm
20388   2  Ss     0:00,06   `-- tcsh
20481   2  R+     0:00,00     `-- ps dxH
 1441  ??  I      0:00,00 dbus-launch --autolaunch db4bd23c3ddf3ecd6af7a55e4b64c0c8 --binary-syntax --close-stderr
 1442  ??  Is     0:00,01 /usr/local/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
 1521  ??  Is     0:19,23 /usr/local/bin/pulseaudio --start --log-target=syslog
 1521  ??  Is     0:39,05 /usr/local/bin/pulseaudio --start --log-target=syslog
 1521  ??  Is     0:00,05 /usr/local/bin/pulseaudio --start --log-target=syslog
 1521  ??  Is     0:05,07 /usr/local/bin/pulseaudio --start --log-target=syslog
 1678  ??  S      0:00,04 /usr/local/libexec/gconfd-2

Un peu gourmand, le firefox, uh ?


Notez que tous vous processus sont dans /proc, si vous l'avez monté.

Décrire

procstat(1) vous donnera quelques informations sur un processus:

  • Global:
david:~>procstat 20331
  PID  PPID  PGID   SID  TSID THR LOGIN    WCHAN     EMUL          COMM        
20331  1517 20331  1517  1517   1 david    ttyin     FreeBSD ELF64 systat 
  • fichiers ouverts:
david:~>procstat -f 20331
  PID COMM               FD T V FLAGS    REF  OFFSET PRO NAME        
20331 systat            cwd v d --------   -       - -   /var/log          
20331 systat           root v d --------   -       - -   /                 
20331 systat              0 v c rw------   9   40326 -   /dev/pts/0        
20331 systat              1 v c rw------   9   40326 -   /dev/pts/0        
20331 systat              2 v c rw------   9   40326 -   /dev/pts/0        
20331 systat              3 v c r-------   1       0 -   /dev/null         
20331 systat              4 v c r-------   1       0 -   /dev/null         
20331 systat              5 v r r-------   1     260 -   /etc/pwd.db      
  • Crédits:
david:~>procstat -s 20331
  PID COMM              EUID  RUID SVUID  EGID  RGID SVGID GROUPS              
20331 systat            1001  1001  1001     0     0     0 0,5,1001,1002


comme précédemment, notez que tout se trouve dans /proc/*.pid:

david:~>ls /proc/20331/
cmdline ctl     dbregs  etype   file    fpregs  map     mem     note    notepg  osrel   regs    rlimit  status

Surveiller

top(1) va surveiller les processus les plus gourmands.

Projets :