Ceci est une ancienne révision du document !


Table des matières

Version : 2024.01

Dernière mise-à-jour : 2024/10/22 15:34

RH13403 - Gestion des Paramètres du matériel et les Ressources

Contenu du Module

  • RH13403 - Gestion des Paramètres et les Ressources du Matériel
    • Contenu du Module
    • Présentation des Fichiers Spéciaux
    • LAB #1 - Découvrir le Matériel
      • 1.1 - La Commande lspci
      • 1.2 - La Commande lsusb
      • 1.3 - La Commande lsblk
      • 1.4 - La Commande lsscsi
      • 1.5 - La Commande lscpu
      • 1.6 - La Commande lshw
      • 1.7 - La Commande dmidecode
      • 1.8 - La Commande smartctl
      • 1.9 - Les Commandes accton et dump-acct
      • 1.10 - La Commande lastcomm
      • 1.11 - La Commande sa
      • 1.12 - La Commande ac
    • LAB #2 - Réglage de la performance du système
      • 2.1 - Présentation
      • 2.2 - Le fichier /etc/tuned/tuned-main.conf
      • 2.3 - Profils
    • LAB #3 - La Commande sysctl
      • 3.1 - Répertoire /proc
        • Fichiers
          • Processeur
          • Interruptions système
          • Canaux DMA
          • Plages d'entrée/sortie
          • Périphériques
          • Modules
          • Statistiques de l'utilisation des disques
          • Partitions
          • Espaces de pagination
          • Statistiques d'utilisation du processeur
          • Statistiques d'utilisation de la mémoire
          • Version du noyau
        • Répertoires
          • ide/scsi
          • acpi
          • bus
          • net
          • sys
      • 3.2 - Utilisation de la Commande sysctl
    • LAB #4 - Interprétation des informations dans /proc
      • 4.1 - free
      • 4.2 - uptime ou w
      • 4.3 - iostat
      • 4.4 - hdparm
      • 4.5 - vmstat
      • 4.6 - mpstat
      • 4.7 - sar
    • Modules usb
    • udev
      • La Commande udevadm
    • Système de fichiers /sys
    • LAB #5 - Limiter les Ressources
      • 5.1 - ulimit
      • 5.2 - Groupes de Contrôle
        • La Limitation de la Mémoire
        • La Commande cgcreate
        • La Commande cgdelete
        • Le Fichier /etc/cgconfig.conf
        • La Commande cgconfigparser

Présentation des Fichiers Spéciaux

Dans l'ordinateur les périphériques sont reliés à un contrôleur qui communique avec le processeur à l'aide d'un bus. Le contrôleur ainsi que les périphériques nécessitent des pilotes. Sous Linux, les pilotes sont généralement fournis sous la forme d'un module. Chaque périphérique est représenté par un fichier spécial dans le répertoire /dev et c'est dans ce fichier que le système trouve les informations nécessaires pour s'adresser au pilote.

Important : Les périphériques qui nécessitent à ce que l'ordinateur soit éteint afin des les brancher/débrancher sont appelés communément Cold Plug Devices. Les périphériques qui peuvent être brancher/débrancher à chaud sont appelés des Hot Plug Devices.

Consultez le contenu du répertoire /dev :

[root@redhat9 ~]# ls -l /dev | more
total 0
crw-r--r--. 1 root root     10, 235 Oct 22 11:01 autofs
drwxr-xr-x. 2 root root         160 Oct 22 11:01 block
drwxr-xr-x. 2 root root          80 Oct 22 11:01 bsg
drwxr-xr-x. 3 root root          60 Oct 22 11:01 bus
lrwxrwxrwx. 1 root root           3 Oct 22 11:01 cdrom -> sr0
drwxr-xr-x. 2 root root        2980 Oct 22 11:02 char
crw--w----. 1 root tty       5,   1 Oct 22 11:01 console
lrwxrwxrwx. 1 root root          11 Oct 22 11:01 core -> /proc/kcore
drwxr-xr-x. 6 root root         120 Oct 22 11:01 cpu
crw-------. 1 root root     10, 124 Oct 22 11:01 cpu_dma_latency
drwxr-xr-x. 7 root root         140 Oct 22 11:01 disk
brw-rw----. 1 root disk    253,   0 Oct 22 11:01 dm-0
brw-rw----. 1 root disk    253,   1 Oct 22 11:01 dm-1
drwxr-xr-x. 2 root root          60 Oct 22 11:01 dma_heap
drwxr-xr-x. 3 root root          80 Oct 22 11:01 dri
crw-rw----. 1 root video    29,   0 Oct 22 11:01 fb0
lrwxrwxrwx. 1 root root          13 Oct 22 11:01 fd -> /proc/self/fd
crw-rw-rw-. 1 root root      1,   7 Oct 22 11:01 full
crw-rw-rw-. 1 root root     10, 229 Oct 22 11:01 fuse
crw-------. 1 root root    242,   0 Oct 22 11:01 hidraw0
crw-------. 1 root root     10, 228 Oct 22 11:01 hpet
drwxr-xr-x. 2 root root           0 Oct 22 11:01 hugepages
crw-------. 1 root root     10, 183 Oct 22 11:01 hwrng
lrwxrwxrwx. 1 root root          12 Oct 22 11:01 initctl -> /run/initctl
drwxr-xr-x. 4 root root         280 Oct 22 11:01 input
crw-r--r--. 1 root root      1,  11 Oct 22 11:01 kmsg
crw-rw-rw-. 1 root kvm      10, 232 Oct 22 11:01 kvm
lrwxrwxrwx. 1 root root          28 Oct 22 11:01 log -> /run/systemd/journal/dev-log
crw-rw----. 1 root disk     10, 237 Oct 22 11:01 loop-control
crw-rw----. 1 root lp        6,   0 Oct 22 11:01 lp0
crw-rw----. 1 root lp        6,   1 Oct 22 11:01 lp1
crw-rw----. 1 root lp        6,   2 Oct 22 11:01 lp2
crw-rw----. 1 root lp        6,   3 Oct 22 11:01 lp3
drwxr-xr-x. 2 root root         100 Oct 22 11:01 mapper
crw-------. 1 root root     10, 227 Oct 22 11:01 mcelog
crw-r-----. 1 root kmem      1,   1 Oct 22 11:01 mem
drwxrwxrwt. 2 root root          40 Oct 22 11:01 mqueue
drwxr-xr-x. 2 root root          60 Oct 22 11:01 net
crw-rw-rw-. 1 root root      1,   3 Oct 22 11:01 null
crw-------. 1 root root     10, 144 Oct 22 11:01 nvram
crw-r-----. 1 root kmem      1,   4 Oct 22 11:01 port
crw-------. 1 root root    108,   0 Oct 22 11:01 ppp
crw-rw-rw-. 1 root tty       5,   2 Oct 22 15:04 ptmx
drwxr-xr-x. 2 root root           0 Oct 22 11:01 pts
crw-rw-rw-. 1 root root      1,   8 Oct 22 11:01 random
crw-rw-r--+ 1 root root     10, 242 Oct 22 11:02 rfkill
drwxr-xr-x. 2 root root          80 Oct 22 11:01 rhel
lrwxrwxrwx. 1 root root           4 Oct 22 11:01 rtc -> rtc0
crw-------. 1 root root    250,   0 Oct 22 11:01 rtc0
brw-rw----. 1 root disk      8,   0 Oct 22 11:01 sda
brw-rw----. 1 root disk      8,   1 Oct 22 11:01 sda1
brw-rw----. 1 root disk      8,   2 Oct 22 11:01 sda2
crw-rw----. 1 root disk     21,   0 Oct 22 11:01 sg0
crw-rw----+ 1 root cdrom    21,   1 Oct 22 11:01 sg1
--More--

On peut noter dans la sortie de la commande que certains fichiers sont de type bloc (b), tandis que d'autre sont de type caractère (c).

[root@redhat9 ~]# ls -l /dev | grep sda1
brw-rw----. 1 root disk      8,   1 Oct 22 11:01 sda1

[root@redhat9 ~]# ls -l /dev | grep tty0
crw--w----. 1 root tty       4,   0 Oct 22 11:02 tty0

La différence entre les deux repose sur le type de communication entre le système et le module. Dans le premier cas le système accède au périphérique par des coordonnées du bloc de données sur le support tandis que dans le deuxième cas la communication d'échange de données se fait octet par octet sans utiliser des tampons.

Les deux informations clefs du fichier spécial sont situées à la place de la taille d'un fichier normal et se nomment le majeur et le mineur :

  • le majeur identifie le pilote du périphérique et donc son contrôleur,
  • le mineur identifie le périphérique ou une particularité du périphérique telle une partition d'un disque.

LAB #1 - Découvrir le Matériel

1.1 - La Commande lspci

Cette commande vous renseigne sur les adaptateurs reliés aux bus PCI, AGP et PCI express :

[root@redhat9 ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Device 1234:1111 (rev 02)
00:03.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
00:05.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge
00:12.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:1e.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge
00:1f.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge
01:01.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI

Pour obtenir de l'information sur un adaptateur spécifique, il convient d'utiliser la même commande avec l'option -v en spécifiant l'identifiant concerné :

[root@redhat9 ~]# lspci -v -s 00:03.0
00:03.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
        Subsystem: Red Hat, Inc. Device 0005
        Physical Slot: 3
        Flags: bus master, fast devsel, latency 0, IRQ 10
        I/O ports at f000 [size=64]
        Memory at fd600000 (64-bit, prefetchable) [size=16K]
        Capabilities: [84] Vendor Specific Information: VirtIO: <unknown>
        Capabilities: [70] Vendor Specific Information: VirtIO: Notify
        Capabilities: [60] Vendor Specific Information: VirtIO: DeviceCfg
        Capabilities: [50] Vendor Specific Information: VirtIO: ISR
        Capabilities: [40] Vendor Specific Information: VirtIO: CommonCfg
        Kernel driver in use: virtio-pci

ou :

[root@redhat9 ~]# lspci -vv -s 00:03.0
00:03.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
        Subsystem: Red Hat, Inc. Device 0005
        Physical Slot: 3
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 10
        Region 0: I/O ports at f000 [size=64]
        Region 4: Memory at fd600000 (64-bit, prefetchable) [size=16K]
        Capabilities: [84] Vendor Specific Information: VirtIO: <unknown>
                BAR=0 offset=00000000 size=00000000
        Capabilities: [70] Vendor Specific Information: VirtIO: Notify
                BAR=4 offset=00003000 size=00001000 multiplier=00000004
        Capabilities: [60] Vendor Specific Information: VirtIO: DeviceCfg
                BAR=4 offset=00002000 size=00001000
        Capabilities: [50] Vendor Specific Information: VirtIO: ISR
                BAR=4 offset=00001000 size=00001000
        Capabilities: [40] Vendor Specific Information: VirtIO: CommonCfg
                BAR=4 offset=00000000 size=00001000
        Kernel driver in use: virtio-pci

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# lspci --help
lspci: invalid option -- '-'
Usage: lspci [<switches>]

Basic display modes:
-mm             Produce machine-readable output (single -m for an obsolete format)
-t              Show bus tree

Display options:
-v              Be verbose (-vv or -vvv for higher verbosity)
-k              Show kernel drivers handling each device
-x              Show hex-dump of the standard part of the config space
-xxx            Show hex-dump of the whole config space (dangerous; root only)
-xxxx           Show hex-dump of the 4096-byte extended config space (root only)
-b              Bus-centric view (addresses and IRQ's as seen by the bus)
-D              Always show domain numbers
-P              Display bridge path in addition to bus and device number
-PP             Display bus path in addition to bus and device number

Resolving of device ID's to names:
-n              Show numeric ID's
-nn             Show both textual and numeric ID's (names & numbers)
-q              Query the PCI ID database for unknown ID's via DNS
-qq             As above, but re-query locally cached entries
-Q              Query the PCI ID database for all ID's via DNS

Selection of devices:
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]   Show only devices in selected slots
-d [<vendor>]:[<device>][:<class>]              Show only devices with specified ID's

Other options:
-i <file>       Use specified ID database instead of /usr/share/hwdata/pci.ids
-p <file>       Look up kernel modules in a given file instead of default modules.pcimap
-M              Enable `bus mapping' mode (dangerous; root only)

PCI access options:
-A <method>     Use the specified PCI access method (see `-A help' for a list)
-O <par>=<val>  Set PCI access parameter (see `-O help' for a list)
-G              Enable PCI access debugging
-H <mode>       Use direct hardware access (<mode> = 1 or 2)
-F <file>       Read PCI configuration dump from a given file 

1.2 - La Commande lsusb

Cette commande vous renseigne sur les adaptateurs reliés au bus usb :

[root@redhat9 ~]# lsusb
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd QEMU USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

[root@redhat9 ~]# lsusb -vt
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    ID 1d6b:0001 Linux Foundation 1.1 root hub
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        ID 0627:0001 Adomax Technology Co., Ltd 

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# lsusb --help
Usage: lsusb [options]...
List USB devices
  -v, --verbose
      Increase verbosity (show descriptors)
  -s [[bus]:][devnum]
      Show only devices with specified device and/or
      bus numbers (in decimal)
  -d vendor:[product]
      Show only devices with the specified vendor and
      product ID numbers (in hexadecimal)
  -D device
      Selects which device lsusb will examine
  -t, --tree
      Dump the physical USB device hierarchy as a tree
  -V, --version
      Show version of program
  -h, --help
      Show usage and help

1.3 - La Commande lsblk

Cette commande vous rensigne sur les partitions des disques :

[root@redhat9 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda             8:0    0   50G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   49G  0 part 
  ├─rhel-root 253:0    0   44G  0 lvm  /
  └─rhel-swap 253:1    0    5G  0 lvm  [SWAP]
sr0            11:0    1 1024M  0 rom 
 
[root@redhat9 ~]# lsblk -l
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda         8:0    0   50G  0 disk 
sda1        8:1    0    1G  0 part /boot
sda2        8:2    0   49G  0 part 
sr0        11:0    1 1024M  0 rom  
rhel-root 253:0    0   44G  0 lvm  /
rhel-swap 253:1    0    5G  0 lvm  [SWAP]

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# lsblk --help

Usage:
 lsblk [options] [<device> ...]

List information about block devices.

Options:
 -D, --discard        print discard capabilities
 -E, --dedup <column> de-duplicate output by <column>
 -I, --include <list> show only devices with specified major numbers
 -J, --json           use JSON output format
 -O, --output-all     output all columns
 -P, --pairs          use key="value" output format
 -S, --scsi           output info about SCSI devices
 -T, --tree[=<column>] use tree format output
 -a, --all            print all devices
 -b, --bytes          print SIZE in bytes rather than in human readable format
 -d, --nodeps         don't print slaves or holders
 -e, --exclude <list> exclude devices by major number (default: RAM disks)
 -f, --fs             output info about filesystems
 -i, --ascii          use ascii characters only
 -l, --list           use list format output
 -M, --merge          group parents of sub-trees (usable for RAIDs, Multi-path)
 -m, --perms          output info about permissions
 -n, --noheadings     don't print headings
 -o, --output <list>  output columns
 -p, --paths          print complete device path
 -r, --raw            use raw output format
 -s, --inverse        inverse dependencies
 -t, --topology       output info about topology
 -w, --width <num>    specifies output width as number of characters
 -x, --sort <column>  sort output by <column>
 -z, --zoned          print zone model
     --sysroot <dir>  use specified directory as system root

 -h, --help           display this help
 -V, --version        display version

Available output columns:
         NAME  device name
        KNAME  internal kernel device name
         PATH  path to the device node
      MAJ:MIN  major:minor device number
      FSAVAIL  filesystem size available
       FSSIZE  filesystem size
       FSTYPE  filesystem type
       FSUSED  filesystem size used
       FSUSE%  filesystem use percentage
      FSROOTS  mounted filesystem roots
        FSVER  filesystem version
   MOUNTPOINT  where the device is mounted
  MOUNTPOINTS  all locations where device is mounted
        LABEL  filesystem LABEL
         UUID  filesystem UUID
       PTUUID  partition table identifier (usually UUID)
       PTTYPE  partition table type
     PARTTYPE  partition type code or UUID
 PARTTYPENAME  partition type name
    PARTLABEL  partition LABEL
     PARTUUID  partition UUID
    PARTFLAGS  partition flags
           RA  read-ahead of the device
           RO  read-only device
           RM  removable device
      HOTPLUG  removable or hotplug device (usb, pcmcia, ...)
        MODEL  device identifier
       SERIAL  disk serial number
         SIZE  size of the device
        STATE  state of the device
        OWNER  user name
        GROUP  group name
         MODE  device node permissions
    ALIGNMENT  alignment offset
       MIN-IO  minimum I/O size
       OPT-IO  optimal I/O size
      PHY-SEC  physical sector size
      LOG-SEC  logical sector size
         ROTA  rotational device
        SCHED  I/O scheduler name
      RQ-SIZE  request queue size
         TYPE  device type
     DISC-ALN  discard alignment offset
    DISC-GRAN  discard granularity
     DISC-MAX  discard max bytes
    DISC-ZERO  discard zeroes data
        WSAME  write same max bytes
          WWN  unique storage identifier
         RAND  adds randomness
       PKNAME  internal parent kernel device name
         HCTL  Host:Channel:Target:Lun for SCSI
         TRAN  device transport type
   SUBSYSTEMS  de-duplicated chain of subsystems
          REV  device revision
       VENDOR  device vendor
        ZONED  zone model
          DAX  dax-capable device

For more details see lsblk(8).

1.4 - La Commande lsscsi

Cette commmande vous renseigne sur les périphériques SCSI et NVMe :

[root@centos8 ~]# lsscsi
[1:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0 
[2:0:0:0]    disk    ATA      QEMU HARDDISK    2.5+  /dev/sda 
[3:0:0:0]    disk    ATA      QEMU HARDDISK    2.5+  /dev/sdb 
[4:0:0:0]    disk    ATA      QEMU HARDDISK    2.5+  /dev/sdc 
[5:0:0:0]    disk    ATA      QEMU HARDDISK    2.5+  /dev/sdd 

Options de la commande

Les options de cette commande sont :

[root@centos8 ~]# man lsscsi 
[root@centos8 ~]# lsscsi --help
Usage: lsscsi   [--brief] [--classic] [--controllers] [--device] [--generic]
                [--help] [--hosts] [--kname] [--list] [--long] [--long-unit]
                [--lunhex] [--no-nvme] [--pdt] [--protection] [--prot-mode]
                [--scsi_id] [--size] [--sz-lbs] [--sysfsroot=PATH] [--transport]
                [--unit] [--verbose] [--version] [--wwn]  [<h:c:t:l>]
  where:
    --brief|-b        tuple and device name only
    --classic|-c      alternate output similar to 'cat /proc/scsi/scsi'
    --controllers|-C   synonym for --hosts since NVMe controllers treated
                       like SCSI hosts
    --device|-d       show device node's major + minor numbers
    --generic|-g      show scsi generic device name
    --help|-h         this usage information
    --hosts|-H        lists scsi hosts rather than scsi devices
    --kname|-k        show kernel name instead of device node name
    --list|-L         additional information output one
                      attribute=value per line
    --long|-l         additional information output
    --long-unit|-U    print LU name in full, use twice to prefix with
                      '.naa', 'eui.', 'uuid.' or 't10.'
    --lunhex|-x       show LUN part of tuple as hex number in T10 format;
                      use twice to get full 16 digit hexadecimal LUN
    --no-nvme|-N      exclude NVMe devices from output
    --pdt|-D          show the peripheral device type in hex
    --protection|-p   show target and initiator protection information
    --protmode|-P     show negotiated protection information mode
    --scsi_id|-i      show udev derived /dev/disk/by-id/scsi* entry
    --size|-s         show disk size, (once for decimal (e.g. 3 GB),
                      twice for power of two (e.g. 2.7 GiB),
                      thrice for number of blocks))
    --sysfsroot=PATH|-y PATH    set sysfs mount point to PATH (def: /sys)
    --sz-lbs|-S       show size as a number of logical blocks; if used twice
                      adds comma followed by logical block size in bytes
    --transport|-t    transport information for target or, if '--hosts'
                      given, for initiator
    --unit|-u         logical unit (LU) name (aka WWN for ATA/SATA)
    --verbose|-v      output path names where data is found
    --version|-V      output version string and exit
    --wwn|-w          output WWN for disks (from /dev/disk/by-id/wwn*)
    <h:c:t:l>         filter output list (def: '*:*:*:*' (all)). Meaning:
                      <host_num:controller:target:lun> or for NVMe:
                      <'N':ctl_num:cntlid:namespace_id>

List SCSI devices or hosts, followed by NVMe namespaces or controllers.
Many storage devices (e.g. SATA disks and USB attached storage) use SCSI
command sets and hence are also listed by this utility. Hyphenated long
options can also take underscore (and vice versa).

1.5 - La Commande lscpu

Cett commande vous renseigne sur l'architecture des CPUs :

[root@redhat9 ~]# lscpu
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        QEMU
  Model name:            Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
    BIOS Model name:     pc-i440fx-7.2
    CPU family:          6
    Model:               86
    Thread(s) per core:  1
    Core(s) per socket:  2
    Socket(s):           2
    Stepping:            3
    BogoMIPS:            4199.99
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cp
                         uid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_f
                         ault pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat vnmi umip md_clear arch_
                         capabilities
Virtualization features: 
  Virtualization:        VT-x
  Hypervisor vendor:     KVM
  Virtualization type:   full
Caches (sum of all):     
  L1d:                   128 KiB (4 instances)
  L1i:                   128 KiB (4 instances)
  L2:                    16 MiB (4 instances)
  L3:                    32 MiB (2 instances)
NUMA:                    
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:         
  Gather data sampling:  Not affected
  Itlb multihit:         Not affected
  L1tf:                  Mitigation; PTE Inversion; VMX flush not necessary, SMT disabled
  Mds:                   Mitigation; Clear CPU buffers; SMT Host state unknown
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
  Retbleed:              Not affected
  Spec rstack overflow:  Not affected
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Not affected
  Tsx async abort:       Mitigation; Clear CPU buffers; SMT Host state unknown

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# lscpu --help

Usage:
 lscpu [options]

Display information about the CPU architecture.

Options:
 -a, --all               print both online and offline CPUs (default for -e)
 -b, --online            print online CPUs only (default for -p)
 -B, --bytes             print sizes in bytes rather than in human readable format
 -C, --caches[=<list>]   info about caches in extended readable format
 -c, --offline           print offline CPUs only
 -J, --json              use JSON for default or extended format
 -e, --extended[=<list>] print out an extended readable format
 -p, --parse[=<list>]    print out a parsable format
 -s, --sysroot <dir>     use specified directory as system root
 -x, --hex               print hexadecimal masks rather than lists of CPUs
 -y, --physical          print physical instead of logical IDs
     --output-all        print all available columns for -e, -p or -C

 -h, --help              display this help
 -V, --version           display version

Available output columns for -e or -p:
      BOGOMIPS  crude measurement of CPU speed
           CPU  logical CPU number
          CORE  logical core number
        SOCKET  logical socket number
       CLUSTER  logical cluster number
          NODE  logical NUMA node number
          BOOK  logical book number
        DRAWER  logical drawer number
         CACHE  shows how caches are shared between CPUs
  POLARIZATION  CPU dispatching mode on virtual hardware
       ADDRESS  physical address of a CPU
    CONFIGURED  shows if the hypervisor has allocated the CPU
        ONLINE  shows if Linux currently makes use of the CPU
           MHZ  shows the currently MHz of the CPU
      SCALMHZ%  shows scaling percentage of the CPU frequency
        MAXMHZ  shows the maximum MHz of the CPU
        MINMHZ  shows the minimum MHz of the CPU

Available output columns for -C:
      ALL-SIZE  size of all system caches
         LEVEL  cache level
          NAME  cache name
      ONE-SIZE  size of one cache
          TYPE  cache type
          WAYS  ways of associativity
  ALLOC-POLICY  allocation policy
  WRITE-POLICY  write policy
      PHY-LINE  number of physical cache line per cache t
          SETS  number of sets in the cache; set lines has the same cache index
 COHERENCY-SIZE  minimum amount of data in bytes transferred from memory to cache

For more details see lscpu(1).

1.6 - La Command lshw

Cette commande vous renseigne sur le matériel selon la classe de celui-ci. Commencez par visualiser les périphériques et leurs classes répectives :

[root@redhat9 ~]# lshw -businfo
Bus info          Device      Class      Description
====================================================
                              system     Standard PC (i440FX + PIIX, 1996)
                              bus        Motherboard
                              memory     96KiB BIOS
cpu@0                         processor  Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
cpu@1                         processor  Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
                              memory     8GiB System Memory
                              memory     8GiB DIMM RAM
pci@0000:00:00.0              bridge     440FX - 82441FX PMC [Natoma]
pci@0000:00:01.0              bridge     82371SB PIIX3 ISA [Natoma/Triton II]
                              input      PnP device PNP0303
                              input      PnP device PNP0f13
                              storage    PnP device PNP0700
                              system     PnP device PNP0b00
pci@0000:00:01.1  scsi2       storage    82371SB PIIX3 IDE [Natoma/Triton II]
scsi@2:0.0.0      /dev/cdrom  disk       QEMU DVD-ROM
pci@0000:00:01.2              bus        82371SB PIIX3 USB [Natoma/Triton II]
usb@1             usb1        bus        UHCI Host Controller
usb@1:1           input5      input      QEMU QEMU USB Tablet
pci@0000:00:01.3              bridge     82371AB/EB/MB PIIX4 ACPI
pci@0000:00:02.0  /dev/fb0    display    bochs-drmdrmfb
pci@0000:00:03.0              generic    Virtio memory balloon
virtio@0                      generic    Virtual I/O device
pci@0000:00:05.0              bridge     QEMU PCI-PCI bridge
pci@0000:01:01.0              storage    Virtio SCSI
virtio@2          scsi0       generic    Virtual I/O device
scsi@0:0.0.0      /dev/sda    disk       53GB QEMU HARDDISK
scsi@0:0.0.0,1    /dev/sda1   volume     1GiB Linux filesystem partition
scsi@0:0.0.0,2    /dev/sda2   volume     48GiB Linux LVM Physical Volume partition
pci@0000:00:12.0              network    Virtio network device
virtio@1          ens18       network    Ethernet interface
pci@0000:00:1e.0              bridge     QEMU PCI-PCI bridge
pci@0000:00:1f.0              bridge     QEMU PCI-PCI bridge
                  input0      input      Power Button
                  input1      input      AT Translated Set 2 keyboard
                  input3      input      VirtualPS/2 VMware VMMouse
                  input4      input      VirtualPS/2 VMware VMMouse
                  input6      input      PC Speaker

Consultez maintenant le matériel de la classe system :

[root@redhat9 ~]# lshw -c system
redhat9.ittraining.loc      
    description: Computer
    product: Standard PC (i440FX + PIIX, 1996)
    vendor: QEMU
    version: pc-i440fx-7.2
    width: 64 bits
    capabilities: smbios-2.8 dmi-2.8 smp vsyscall32
    configuration: boot=normal uuid=6c89e267-fb34-42a1-9b13-15fa7185048f
  *-pnp00:03
       product: PnP device PNP0b00
       physical id: 3
       capabilities: pnp
       configuration: driver=rtc_cmos

Consultez maintenant le matériel des autres classes principales :

[root@redhat9 ~]# lshw -c memory
  *-firmware                
       description: BIOS
       vendor: SeaBIOS
       physical id: 0
       version: rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org
       date: 04/01/2014
       size: 96KiB
  *-memory
       description: System Memory
       physical id: 1000
       size: 8GiB
       capabilities: ecc
       configuration: errordetection=multi-bit-ecc
     *-bank
          description: DIMM RAM
          vendor: QEMU
          physical id: 0
          slot: DIMM 0
          size: 8GiB

[root@redhat9 ~]# lshw -c video
  *-display                 
       description: VGA compatible controller
       product: bochs-drmdrmfb
       physical id: 2
       bus info: pci@0000:00:02.0
       logical name: /dev/fb0
       version: 02
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller rom fb
       configuration: depth=32 driver=bochs-drm latency=0 resolution=1280,800
       resources: irq:0 memory:fc000000-fcffffff memory:fea50000-fea50fff memory:c0000-dffff


[root@redhat9 ~]# lshw -c storage
  *-pnp00:02                
       product: PnP device PNP0700
       physical id: 2
       capabilities: pnp
  *-ide
       description: IDE interface
       product: 82371SB PIIX3 IDE [Natoma/Triton II]
       vendor: Intel Corporation
       physical id: 1.1
       bus info: pci@0000:00:01.1
       logical name: scsi2
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: ide isa_compat_mode bus_master emulated
       configuration: driver=ata_piix latency=0
       resources: irq:0 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:f080(size=16)
  *-scsi
       description: SCSI storage controller
       product: Virtio SCSI
       vendor: Red Hat, Inc.
       physical id: 1
       bus info: pci@0000:01:01.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: scsi msix bus_master cap_list
       configuration: driver=virtio-pci latency=0
       resources: irq:10 ioport:e000(size=64) memory:fe800000-fe800fff memory:fd400000-fd403fff

[root@redhat9 ~]# lshw -c disk
  *-cdrom                   
       description: DVD reader
       product: QEMU DVD-ROM
       vendor: QEMU
       physical id: 0.0.0
       bus info: scsi@2:0.0.0
       logical name: /dev/cdrom
       logical name: /dev/sr0
       version: 2.5+
       capabilities: removable audio dvd
       configuration: ansiversion=5 status=nodisc
  *-disk
       description: SCSI Disk
       product: QEMU HARDDISK
       vendor: QEMU
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda
       version: 2.5+
       size: 50GiB (53GB)
       capabilities: 5400rpm partitioned partitioned:dos
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=d00dfc8a

[root@redhat9 ~]# lshw -c volume
  *-volume:0                
       description: Linux filesystem partition
       physical id: 1
       bus info: scsi@0:0.0.0,1
       logical name: /dev/sda1
       logical name: /boot
       capacity: 1GiB
       capabilities: primary bootable
       configuration: mount.fstype=xfs mount.options=rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota state=mounted
  *-volume:1
       description: Linux LVM Physical Volume partition
       physical id: 2
       bus info: scsi@0:0.0.0,2
       logical name: /dev/sda2
       serial: tpPvpD-OIie-EmBd-M7Xh-gNRF-Z5u3-OP84ck
       size: 48GiB
       capacity: 48GiB
       capabilities: primary multi lvm2

[root@redhat9 ~]# lshw -c network
  *-network                 
       description: Ethernet controller
       product: Virtio network device
       vendor: Red Hat, Inc.
       physical id: 12
       bus info: pci@0000:00:12.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: msix bus_master cap_list rom
       configuration: driver=virtio-pci latency=0
       resources: irq:10 ioport:f060(size=32) memory:fea52000-fea52fff memory:fd604000-fd607fff memory:fea00000-fea3ffff
     *-virtio1
          description: Ethernet interface
          physical id: 0
          bus info: virtio@1
          logical name: ens18
          serial: 92:86:d7:66:e7:5a
          capabilities: ethernet physical
          configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=10.0.2.101 link=yes multicast=yes

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# lshw -h
Hardware Lister (lshw) - B.02.19.2
usage: lshw [-format] [-options ...]
       lshw -version

        -version        print program version (B.02.19.2)

format can be
        -html           output hardware tree as HTML
        -xml            output hardware tree as XML
        -json           output hardware tree as a JSON object
        -short          output hardware paths
        -businfo        output bus information

options can be
        -dump filename  display output and dump collected information into a file (SQLite database)
        -class CLASS    only show a certain class of hardware
        -C CLASS        same as '-class CLASS'
        -c CLASS        same as '-class CLASS'
        -disable TEST   disable a test (like pci, isapnp, cpuid, etc.)
        -enable TEST    enable a test (like pci, isapnp, cpuid, etc.)
        -quiet          don't display status
        -sanitize       sanitize output (remove sensitive information like serial numbers, etc.)
        -numeric        output numeric IDs (for PCI, USB, etc.)
        -notime         exclude volatile attributes (timestamps) from output

1.7 - La Commande dmidecode

La commande dmidecode lit la table DMI (Desktop Management Interface) aussi appelée SMBIOS (System Management BIOS) et fourni les informations sur :

  • l'état du matériel actuel,
  • les extensions possibles.
[root@redhat9 ~]# dmidecode
# dmidecode 3.5
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
11 structures occupying 511 bytes.
Table at 0x000F59C0.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: SeaBIOS
        Version: rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org
        Release Date: 04/01/2014
        Address: 0xE8000
        Runtime Size: 96 kB
        ROM Size: 64 kB
        Characteristics:
                BIOS characteristics not supported
                Targeted content distribution is supported
        BIOS Revision: 0.0

Handle 0x0100, DMI type 1, 27 bytes
System Information
        Manufacturer: QEMU
        Product Name: Standard PC (i440FX + PIIX, 1996)
        Version: pc-i440fx-7.2
        Serial Number: Not Specified
        UUID: 6c89e267-fb34-42a1-9b13-15fa7185048f
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Not Specified

Handle 0x0300, DMI type 3, 22 bytes
Chassis Information
        Manufacturer: QEMU
        Type: Other
        Lock: Not Present
        Version: pc-i440fx-7.2
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: Unknown
        OEM Information: 0x00000000
        Height: Unspecified
        Number Of Power Cords: Unspecified
        Contained Elements: 0
        SKU Number: Not Specified

Handle 0x0400, DMI type 4, 42 bytes
Processor Information
        Socket Designation: CPU 0
        Type: Central Processor
        Family: Other
        Manufacturer: QEMU
        ID: 63 06 05 00 FF FB 8B 0F
        Version: pc-i440fx-7.2
        Voltage: Unknown
        External Clock: Unknown
        Max Speed: 2000 MHz
        Current Speed: 2000 MHz
        Status: Populated, Enabled
        Upgrade: Other
        L1 Cache Handle: Not Provided
        L2 Cache Handle: Not Provided
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 2
        Core Enabled: 2
        Thread Count: 2
        Characteristics: None

Handle 0x0401, DMI type 4, 42 bytes
Processor Information
        Socket Designation: CPU 1
        Type: Central Processor
        Family: Other
        Manufacturer: QEMU
        ID: 63 06 05 00 FF FB 8B 0F
        Version: pc-i440fx-7.2
        Voltage: Unknown
        External Clock: Unknown
        Max Speed: 2000 MHz
        Current Speed: 2000 MHz
        Status: Populated, Enabled
        Upgrade: Other
        L1 Cache Handle: Not Provided
        L2 Cache Handle: Not Provided
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 2
        Core Enabled: 2
        Thread Count: 2
        Characteristics: None

Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
        Location: Other
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 8 GB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x1100, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: Not Specified
        Type: RAM
        Type Detail: Other
        Speed: Unknown
        Manufacturer: QEMU
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Rank: Unknown
        Configured Memory Speed: Unknown
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: Unknown

Handle 0x1300, DMI type 19, 31 bytes
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000BFFFFFFF
        Range Size: 3 GB
        Physical Array Handle: 0x1000
        Partition Width: 1

Handle 0x1301, DMI type 19, 31 bytes
Memory Array Mapped Address
        Starting Address: 0x00100000000
        Ending Address: 0x0023FFFFFFF
        Range Size: 5 GB
        Physical Array Handle: 0x1000
        Partition Width: 1

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Handle 0x7F00, DMI type 127, 4 bytes
End Of Table

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# dmidecode --help
Usage: dmidecode [OPTIONS]
Options are:
 -d, --dev-mem FILE     Read memory from device FILE (default: /dev/mem)
 -h, --help             Display this help text and exit
 -q, --quiet            Less verbose output
     --no-quirks        Decode everything without quirks
 -s, --string KEYWORD   Only display the value of the given DMI string
 -t, --type TYPE        Only display the entries of given type
 -H, --handle HANDLE    Only display the entry of given handle
 -u, --dump             Do not decode the entries
     --dump-bin FILE    Dump the DMI data to a binary file
     --from-dump FILE   Read the DMI data from a binary file
     --no-sysfs         Do not attempt to read DMI data from sysfs files
     --oem-string N     Only display the value of the given OEM string
 -V, --version          Display the version and exit

1.8 - La Commande smartctl

smartctl contrôle le système SMART (Self-Monitoring, Analysis and Reporting Technology) intégré à la plupart des disques durs et disques SSD ATA/SATA et SCSI/SAS.

Activez smartctl :

[root@redhat9 ~]# smartctl --smart=on --saveauto=on --offlineauto=on /dev/sdb
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-427.37.1.el9_4.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Timers not supported

SMART Enable Automatic Offline failed: scsi error badly formed scsi parameters

[root@redhat9 ~]# smartctl -a /dev/sdb
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-427.37.1.el9_4.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     QEMU HARDDISK
Serial Number:    QM00005
Firmware Version: 2.5+
User Capacity:    34,359,738,368 bytes [34.3 GB]
Sector Size:      512 bytes logical/physical
TRIM Command:     Available, deterministic
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000
Local Time is:    Tue Oct 22 15:38:47 2024 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x02) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (  288) seconds.
Offline data collection
capabilities:                    (0x19) SMART execute Offline immediate.
                                        No Auto Offline data collection support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        No Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        No General Purpose Logging support.
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  54) minutes.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0003   100   100   006    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       16
  4 Start_Stop_Count        0x0002   100   100   020    Old_age   Always       -       100
  5 Reallocated_Sector_Ct   0x0003   100   100   036    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0003   100   100   000    Pre-fail  Always       -       1
 12 Power_Cycle_Count       0x0003   100   100   000    Pre-fail  Always       -       0
190 Airflow_Temperature_Cel 0x0003   069   069   050    Pre-fail  Always       -       31 (Min/Max 31/31)

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

Selective Self-tests/Logging not supported

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# smartctl --help
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-427.37.1.el9_4.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

Usage: smartctl [options] device

============================================ SHOW INFORMATION OPTIONS =====

  -h, --help, --usage
         Display this help and exit

  -V, --version, --copyright, --license
         Print license, copyright, and version information and exit

  -i, --info
         Show identity information for device

  --identify[=[w][nvb]]
         Show words and bits from IDENTIFY DEVICE data                (ATA)

  -g NAME, --get=NAME
        Get device setting: all, aam, apm, dsn, lookahead, security,
        wcache, rcache, wcreorder, wcache-sct

  -a, --all
         Show all SMART information for device

  -x, --xall
         Show all information for device

  --scan
         Scan for devices

  --scan-open
         Scan for devices and try to open each device

================================== SMARTCTL RUN-TIME BEHAVIOR OPTIONS =====

  -j, --json[=cgiosuvy]
         Print output in JSON or YAML format

  -q TYPE, --quietmode=TYPE                                           (ATA)
         Set smartctl quiet mode to one of: errorsonly, silent, noserial

  -d TYPE, --device=TYPE
         Specify device type to one of:
         ata, scsi[+TYPE], nvme[,NSID], sat[,auto][,N][+TYPE], usbcypress[,X], usbjmicron[,p][,x][,N], usbprolific, usbsunplus, sntjmicron[,NSID], sntrealtek, intelliprop,N[+TYPE], jmb39x[-q],N[,sLBA][,force][+TYPE], jms56x,N[,sLBA][,force][+TYPE], marvell, areca,N/E, 3ware,N, hpt,L/M/N, megaraid,N, aacraid,H,L,ID, cciss,N, auto, test

  -T TYPE, --tolerance=TYPE                                           (ATA)
         Tolerance: normal, conservative, permissive, verypermissive

  -b TYPE, --badsum=TYPE                                              (ATA)
         Set action on bad checksum to one of: warn, exit, ignore

  -r TYPE, --report=TYPE
         Report transactions (see man page)

  -n MODE[,STATUS], --nocheck=MODE[,STATUS]                     (ATA, SCSI)
         No check if: never, sleep, standby, idle (see man page)

============================== DEVICE FEATURE ENABLE/DISABLE COMMANDS =====

  -s VALUE, --smart=VALUE
        Enable/disable SMART on device (on/off)

  -o VALUE, --offlineauto=VALUE                                       (ATA)
        Enable/disable automatic offline testing on device (on/off)

  -S VALUE, --saveauto=VALUE                                          (ATA)
        Enable/disable Attribute autosave on device (on/off)

  -s NAME[,VALUE], --set=NAME[,VALUE]
        Enable/disable/change device setting: aam,[N|off], apm,[N|off],
        dsn,[on|off], lookahead,[on|off], security-freeze,
        standby,[N|off|now], wcache,[on|off], rcache,[on|off],
        wcreorder,[on|off[,p]], wcache-sct,[ata|on|off[,p]]

======================================= READ AND DISPLAY DATA OPTIONS =====

  -H, --health
        Show device SMART health status

  -c, --capabilities                                            (ATA, NVMe)
        Show device SMART capabilities

  -A, --attributes
        Show device SMART vendor-specific Attributes and values

  -f FORMAT, --format=FORMAT                                          (ATA)
        Set output format for attributes: old, brief, hex[,id|val]

  -l TYPE, --log=TYPE
        Show device log. TYPE: error, selftest, selective, directory[,g|s],
        xerror[,N][,error], xselftest[,N][,selftest], background,
        sasphy[,reset], sataphy[,reset], scttemp[sts,hist],
        scttempint,N[,p], scterc[,N,M], devstat[,N], defects[,N], ssd,
        gplog,N[,RANGE], smartlog,N[,RANGE], nvmelog,N,SIZE

  -v N,OPTION , --vendorattribute=N,OPTION                            (ATA)
        Set display OPTION for vendor Attribute N (see man page)

  -F TYPE, --firmwarebug=TYPE                                         (ATA)
        Use firmware bug workaround:
        none, nologdir, samsung, samsung2, samsung3, xerrorlba, swapid

  -P TYPE, --presets=TYPE                                             (ATA)
        Drive-specific presets: use, ignore, show, showall

  -B [+]FILE, --drivedb=[+]FILE                                       (ATA)
        Read and replace [add] drive database from FILE
        [default is +/etc/smartmontools/smart_drivedb.h
         and then    /usr/share/smartmontools/drivedb.h]

============================================ DEVICE SELF-TEST OPTIONS =====

  -t TEST, --test=TEST
        Run test. TEST: offline, short, long, conveyance, force, vendor,N,
                        select,M-N, pending,N, afterselect,[on|off]

  -C, --captive
        Do test in captive mode (along with -t)

  -X, --abort
        Abort any non-captive test on device

=================================================== SMARTCTL EXAMPLES =====

  smartctl --all /dev/sda                    (Prints all SMART information)

  smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
                                              (Enables SMART on first disk)

  smartctl --test=long /dev/sda          (Executes extended disk self-test)

  smartctl --attributes --log=selftest --quietmode=errorsonly /dev/sda
                                      (Prints Self-Test & Attribute errors)
  smartctl --all --device=3ware,2 /dev/sda
  smartctl --all --device=3ware,2 /dev/twe0
  smartctl --all --device=3ware,2 /dev/twa0
  smartctl --all --device=3ware,2 /dev/twl0
          (Prints all SMART info for 3rd ATA disk on 3ware RAID controller)
  smartctl --all --device=hpt,1/1/3 /dev/sda
          (Prints all SMART info for the SATA disk attached to the 3rd PMPort
           of the 1st channel on the 1st HighPoint RAID controller)
  smartctl --all --device=areca,3/1 /dev/sg2
          (Prints all SMART info for 3rd ATA disk of the 1st enclosure
           on Areca RAID controller)

1.9 - Les Commandes accton et dump-acct

Cette commande permet d'activer ou désactiver la comptabilisation des processus :

[root@redhat9 ~]# accton on
Turning on process accounting, file set to the default '/var/account/pacct'.

[root@redhat9 ~]# systemctl status psacct
○ psacct.service - Kernel process accounting
     Loaded: loaded (/usr/lib/systemd/system/psacct.service; disabled; preset: disabled)
     Active: inactive (dead)

[root@redhat9 ~]# systemctl enable --now psacct
Created symlink /etc/systemd/system/multi-user.target.wants/psacct.service → /usr/lib/systemd/system/psacct.service.

[root@redhat9 ~]# systemctl status psacct
● psacct.service - Kernel process accounting
     Loaded: loaded (/usr/lib/systemd/system/psacct.service; enabled; preset: disabled)
     Active: active (exited) since Tue 2024-10-22 15:41:45 CEST; 3s ago
    Process: 2249 ExecStartPre=/usr/libexec/psacct/accton-create (code=exited, status=0/SUCCESS)
    Process: 2250 ExecStart=/usr/sbin/accton /var/account/pacct (code=exited, status=0/SUCCESS)
   Main PID: 2250 (code=exited, status=0/SUCCESS)
        CPU: 4ms

Oct 22 15:41:45 redhat9.ittraining.loc systemd[1]: Starting Kernel process accounting...
Oct 22 15:41:45 redhat9.ittraining.loc accton[2250]: Turning on process accounting, file set to '/var/account/pacct'.
Oct 22 15:41:45 redhat9.ittraining.loc systemd[1]: Finished Kernel process accounting.

Par contre le fichier /var/account/pacct ne peut pas être lu avec les utilitaires de consultation de fichiers texte :

[root@redhat9 ~]# cat /var/account/pacct
vg?H
_selinuxenablg(systemd-debugg?2kpodman-systemgM{grg?Mselinux-autorg?(systemd-hiberg?(systemd-veritg?(systemd-run-gg?(systemd-integg@(systemd-gettyg?(systemd-sysv-g?(systemd-systeg@-ostree-systemg@(systemd-cryptgMsg@Mnkdump-dep-geng@(systemd-rc-log@Mgrg@Mkdump-dep-geng@(systemd-blessg@(systemd-gpt-aug@JY(sd-executorg@Maccton-creatgacctogH
acctg@@(systemd-tty-asgANsystemcg?Mlesg@tN5systemcgD{unix_chkpwd
                                                               g?E(gmag|MjpgMsg@crond
                                                                                    gE(gmain
                                                                                           gE(gmain
                                                                                                  gE'gmain
                                                                                                         gE'gmain
                                                                                                                gE'gmain
                                                                                                                       gE'gmain
                                                                                                                              gE*gmain
                                                                                                                                     gE(gmainrgGkworker/dyingrgGkworker/dyingsgtGkworker/dying)rgGkworker/dying(rgGkworker/dyingtg.Gkworker/dyingtg.Gkworker/dying
PpackagekitdrgBGkworker/dying.ugGkworker/dyingFsg0Gkworker/dying[root@redhat9 ~]# gGkworker/dying%rgDGkworker/dyinggF]

La commande dump-acct permet de voir son contenu mais pas de l'exploiter :

[root@redhat9 ~]# dump-acct /var/account/pacct
accton          |v3|     0.00|     0.00|     1.00|     0|     0|  2632.00|     0.00|    2216|    2090|S    |       0|pts/0   |Tue Oct 22 15:41:10 2024
less            |v3|     0.00|     0.00|     9.00|     0|     0|221312.00|     0.00|    2218|    2217|S    |       0|pts/0   |Tue Oct 22 15:41:23 2024
systemctl       |v3|     0.00|     0.00|    10.00|     0|     0|236800.00|     0.00|    2217|    2090|S    |       3|pts/0   |Tue Oct 22 15:41:23 2024
systemd-fstab-g |v3|     0.00|     0.00|     0.00|     0|     0| 18240.00|     0.00|    2228|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
selinuxenabled  |v3|     0.00|     0.00|     0.00|     0|     0|  3436.00|     0.00|    2239|    2224|     |       0|__      |Tue Oct 22 15:41:45 2024
systemd-debug-g |v3|     0.00|     0.00|     0.00|     0|     0| 18200.00|     0.00|    2227|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
podman-system-g |v3|     0.00|     0.00|     1.00|     0|     0|1467392.00|     0.00|    2223|    2220|S   X|       0|__      |Tue Oct 22 15:41:45 2024
grep            |v3|     0.00|     0.00|     0.00|     0|     0|221824.00|     0.00|    2246|    2224|     |       1|__      |Tue Oct 22 15:41:45 2024
selinux-autorel |v3|     0.00|     0.00|     1.00|     0|     0|222528.00|     0.00|    2224|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-hiberna |v3|     0.00|     0.00|     1.00|     0|     0| 18192.00|     0.00|    2231|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-veritys |v3|     0.00|     0.00|     1.00|     0|     0| 18224.00|     0.00|    2243|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-run-gen |v3|     0.00|     0.00|     1.00|     0|     0| 18200.00|     0.00|    2240|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-integri |v3|     0.00|     0.00|     1.00|     0|     0| 18208.00|     0.00|    2232|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-getty-g |v3|     0.00|     0.00|     2.00|     0|     0| 18200.00|     0.00|    2229|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-sysv-ge |v3|     0.00|     0.00|     1.00|     0|     0| 18224.00|     0.00|    2242|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-system- |v3|     0.00|     0.00|     1.00|     0|     0| 18192.00|     0.00|    2241|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
ostree-system-g |v3|     0.00|     0.00|     2.00|     0|     0| 27728.00|     0.00|    2222|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-cryptse |v3|     0.00|     0.00|     2.00|     0|     0| 18224.00|     0.00|    2226|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
sed             |v3|     0.00|     0.00|     0.00|     0|     0|221952.00|     0.00|    2247|    2237|     |       0|__      |Tue Oct 22 15:41:45 2024
kdump-dep-gener |v3|     0.00|     0.00|     2.00|     0|     0|223168.00|     0.00|    2237|    2221| F   |       0|__      |Tue Oct 22 15:41:45 2024
systemd-rc-loca |v3|     0.00|     0.00|     2.00|     0|     0| 18200.00|     0.00|    2236|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
grep            |v3|     0.00|     0.00|     2.00|     0|     0|221696.00|     0.00|    2238|    2221|     |       1|__      |Tue Oct 22 15:41:45 2024
kdump-dep-gener |v3|     0.00|     0.00|     2.00|     0|     0|223168.00|     0.00|    2221|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-bless-b |v3|     0.00|     0.00|     2.00|     0|     0| 18200.00|     0.00|    2225|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-gpt-aut |v3|     0.00|     0.00|     6.00|     0|     0| 18208.00|     0.00|    2230|    2220|S    |       0|__      |Tue Oct 22 15:41:45 2024
(sd-executor)   |v3|     0.00|     0.00|     7.00|     0|     0|174080.00|     0.00|    2220|       1|SF   |       0|__      |Tue Oct 22 15:41:45 2024
accton-create   |v3|     0.00|     0.00|     2.00|     0|     0|222528.00|     0.00|    2249|       1|S    |       0|__      |Tue Oct 22 15:41:45 2024
accton          |v3|     0.00|     0.00|     0.00|     0|     0|     0.00|     0.00|    2250|       1|     |       0|__      |Tue Oct 22 15:41:45 2024
accton          |v3|     0.00|     0.00|     0.00|     0|     0|  2632.00|     0.00|    2250|       1|S    |       0|__      |Tue Oct 22 15:41:45 2024
systemd-tty-ask |v3|     0.00|     0.00|     3.00|     0|     0| 18224.00|     0.00|    2248|    2219|S    |       0|pts/0   |Tue Oct 22 15:41:45 2024
systemctl       |v3|     0.00|     0.00|    29.00|     0|     0|237696.00|     0.00|    2219|    2090|S    |       0|pts/0   |Tue Oct 22 15:41:45 2024
less            |v3|     0.00|     0.00|     1.00|     0|     0|221312.00|     0.00|    2252|    2251|S    |       0|pts/0   |Tue Oct 22 15:41:49 2024
systemctl       |v3|     0.00|     0.00|     2.00|     0|     0|236800.00|     0.00|    2251|    2090|S    |       0|pts/0   |Tue Oct 22 15:41:49 2024
unix_chkpwd     |v3|     0.00|     0.00|     0.00|     0|     0|  3908.00|     0.00|    2254|    2253|S    |       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     1.00|   998|   996| 93248.00|     0.00|    2255|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
pwd             |v3|     0.00|     0.00|     0.00|  1000|  1000|220928.00|     0.00|    2258|    2257|     |       0|__      |Tue Oct 22 15:42:01 2024
sh              |v3|     0.00|     0.00|     0.00|  1000|  1000|222528.00|     0.00|    2257|    2253|S    |       0|__      |Tue Oct 22 15:42:01 2024
crond           |v3|     0.00|     1.00|     4.00|     0|  1000|231104.00|     0.00|    2253|     983|SF   |       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2259|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2261|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2263|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2265|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2267|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2269|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2271|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2273|     779|    X|       0|__      |Tue Oct 22 15:42:01 2024
kworker/dying   |v3|     0.00|     0.00| 33274.00|     0|     0|     0.00|     0.00|      26|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33274.00|     0|     0|     0.00|     0.00|      31|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33140.00|     0|     0|     0.00|     0.00|     253|       2| F   |       0|__      |Tue Oct 22 15:36:51 2024
kworker/dying   |v3|     0.00|     0.00| 33274.00|     0|     0|     0.00|     0.00|      41|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33274.00|     0|     0|     0.00|     0.00|      40|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33070.00|     0|     0|     0.00|     0.00|     451|       2| F   |       0|__      |Tue Oct 22 15:36:52 2024
kworker/dying   |v3|     0.00|     0.00| 33070.00|     0|     0|     0.00|     0.00|     452|       2| F   |       0|__      |Tue Oct 22 15:36:52 2024
kworker/dying   |v3|     0.00|     1.00| 33275.00|     0|     0|     0.00|     0.00|      11|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33274.00|     0|     0|     0.00|     0.00|      25|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33256.00|     0|     0|     0.00|     0.00|      72|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33348.00|     0|     0|     0.00|     0.00|      37|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
packagekitd     |v3|     7.00|     5.00| 30176.00|     0|     0|487808.00|     0.00|    1717|       1|S   X|       0|__      |Tue Oct 22 15:37:23 2024
kworker/dying   |v3|     0.00|     0.00| 33602.00|     0|     0|     0.00|     0.00|       7|       2| F   |       0|__      |Tue Oct 22 15:36:50 2024
kworker/dying   |v3|     0.00|     0.00| 33302.00|     0|     0|     0.00|     0.00|     558|       2| F   |       0|__      |Tue Oct 22 15:36:53 2024
kworker/dying   |v3|     0.00|     0.00| 33584.00|     0|     0|     0.00|     0.00|      70|       2| F   |       0|__      |Tue Oct 22 15:36:51 2024
cat             |v3|     0.00|     0.00|     0.00|     0|     0|220928.00|     0.00|    2278|    2090|     |       0|pts/0   |Tue Oct 22 15:42:46 2024
systemd-tmpfile |v3|     0.00|     0.00|     1.00|    42|    42| 18640.00|     0.00|    2279|    1240|     |       0|__      |Tue Oct 22 15:42:54 2024
systemd-tmpfile |v3|     0.00|     0.00|     1.00|  1000|  1000| 18640.00|     0.00|    2280|    1907|     |       0|__      |Tue Oct 22 15:42:54 2024
unix_chkpwd     |v3|     0.00|     0.00|     0.00|     0|     0|  3908.00|     0.00|    2283|    2282|S    |       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2284|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
pwd             |v3|     0.00|     0.00|     0.00|  1000|  1000|220928.00|     0.00|    2287|    2286|     |       0|__      |Tue Oct 22 15:43:01 2024
sh              |v3|     0.00|     0.00|     0.00|  1000|  1000|222528.00|     0.00|    2286|    2282|S    |       0|__      |Tue Oct 22 15:43:01 2024
crond           |v3|     0.00|     0.00|     4.00|     0|  1000|231104.00|     0.00|    2282|     983|SF   |       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2288|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2290|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2292|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2294|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2296|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2298|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2300|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024
gmain           |v3|     0.00|     0.00|     0.00|   998|   996| 93248.00|     0.00|    2302|     779|    X|       0|__      |Tue Oct 22 15:43:01 2024

1.10 - La Commande lastcomm

Cette commande vous renseigne sur l'historique et les statistiques des commandes par utilisateur :

[root@redhat9 ~]# lastcomm
man                    root     pts/0      0.00 secs Tue Oct 22 15:44
dump-acct              root     pts/0      0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
crond            SF    root     __         0.00 secs Tue Oct 22 15:44
sh               S     trainee  __         0.00 secs Tue Oct 22 15:44
pwd                    trainee  __         0.00 secs Tue Oct 22 15:44
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:44
unix_chkpwd      S     root     __         0.00 secs Tue Oct 22 15:44
dump-acct              root     pts/0      0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
crond            SF    root     __         0.00 secs Tue Oct 22 15:43
sh               S     trainee  __         0.00 secs Tue Oct 22 15:43
pwd                    trainee  __         0.00 secs Tue Oct 22 15:43
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:43
unix_chkpwd      S     root     __         0.00 secs Tue Oct 22 15:43
systemd-tmpfile        trainee  __         0.00 secs Tue Oct 22 15:42
systemd-tmpfile        gdm      __         0.00 secs Tue Oct 22 15:42
cat                    root     pts/0      0.00 secs Tue Oct 22 15:42
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
packagekitd      S   X root     __         0.12 secs Tue Oct 22 15:37
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.01 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
kworker/dying     F    root     __         0.00 secs Tue Oct 22 15:36
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
crond            SF    root     __         0.01 secs Tue Oct 22 15:42
sh               S     trainee  __         0.00 secs Tue Oct 22 15:42
pwd                    trainee  __         0.00 secs Tue Oct 22 15:42
gmain                X polkitd  __         0.00 secs Tue Oct 22 15:42
unix_chkpwd      S     root     __         0.00 secs Tue Oct 22 15:42
systemctl        S     root     pts/0      0.00 secs Tue Oct 22 15:41
less             S     root     pts/0      0.00 secs Tue Oct 22 15:41
systemctl        S     root     pts/0      0.00 secs Tue Oct 22 15:41
systemd-tty-ask  S     root     pts/0      0.00 secs Tue Oct 22 15:41
accton           S     root     __         0.00 secs Tue Oct 22 15:41
accton                 root     __         0.00 secs Tue Oct 22 15:41
accton-create    S     root     __         0.00 secs Tue Oct 22 15:41
(sd-executor)    SF    root     __         0.00 secs Tue Oct 22 15:41
systemd-gpt-aut  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-bless-b  S     root     __         0.00 secs Tue Oct 22 15:41
kdump-dep-gener  S     root     __         0.00 secs Tue Oct 22 15:41
grep                   root     __         0.00 secs Tue Oct 22 15:41
systemd-rc-loca  S     root     __         0.00 secs Tue Oct 22 15:41
kdump-dep-gener   F    root     __         0.00 secs Tue Oct 22 15:41
sed                    root     __         0.00 secs Tue Oct 22 15:41
systemd-cryptse  S     root     __         0.00 secs Tue Oct 22 15:41
ostree-system-g  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-system-  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-sysv-ge  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-getty-g  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-integri  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-run-gen  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-veritys  S     root     __         0.00 secs Tue Oct 22 15:41
systemd-hiberna  S     root     __         0.00 secs Tue Oct 22 15:41
selinux-autorel  S     root     __         0.00 secs Tue Oct 22 15:41
grep                   root     __         0.00 secs Tue Oct 22 15:41
podman-system-g  S   X root     __         0.00 secs Tue Oct 22 15:41
systemd-debug-g  S     root     __         0.00 secs Tue Oct 22 15:41
selinuxenabled         root     __         0.00 secs Tue Oct 22 15:41
systemd-fstab-g  S     root     __         0.00 secs Tue Oct 22 15:41
systemctl        S     root     pts/0      0.00 secs Tue Oct 22 15:41
less             S     root     pts/0      0.00 secs Tue Oct 22 15:41
accton           S     root     pts/0      0.00 secs Tue Oct 22 15:41

[root@redhat9 ~]# lastcomm grep
grep                   root     __         0.00 secs Tue Oct 22 15:41
grep                   root     __         0.00 secs Tue Oct 22 15:41

1.11 - La Commande sa

Cette commande vous renseigne sur les statistiques sur les processus lancés et leurs ressources systèmes:

[root@redhat9 ~]# sa -u | egrep "root"
root       0.00 cpu      658k mem      0 io accton          
root       0.00 cpu    55328k mem      0 io less            
root       0.00 cpu    59200k mem      0 io systemctl       
root       0.00 cpu     4560k mem      0 io systemd-fstab-g 
root       0.00 cpu      859k mem      0 io selinuxenabled  
root       0.00 cpu     4550k mem      0 io systemd-debug-g 
root       0.00 cpu   366848k mem      0 io podman-system-g 
root       0.00 cpu    55456k mem      0 io grep            
root       0.00 cpu    55632k mem      0 io selinux-autorel 
root       0.00 cpu     4548k mem      0 io systemd-hiberna 
root       0.00 cpu     4556k mem      0 io systemd-veritys 
root       0.00 cpu     4550k mem      0 io systemd-run-gen 
root       0.00 cpu     4552k mem      0 io systemd-integri 
root       0.00 cpu     4550k mem      0 io systemd-getty-g 
root       0.00 cpu     4556k mem      0 io systemd-sysv-ge 
root       0.00 cpu     4548k mem      0 io systemd-system- 
root       0.00 cpu     6932k mem      0 io ostree-system-g 
root       0.00 cpu     4556k mem      0 io systemd-cryptse 
root       0.00 cpu    55488k mem      0 io sed             
root       0.00 cpu    55792k mem      0 io kdump-dep-gener *
root       0.00 cpu     4550k mem      0 io systemd-rc-loca 
root       0.00 cpu    55424k mem      0 io grep            
root       0.00 cpu    55792k mem      0 io kdump-dep-gener 
root       0.00 cpu     4550k mem      0 io systemd-bless-b 
root       0.00 cpu     4552k mem      0 io systemd-gpt-aut 
root       0.00 cpu    43520k mem      0 io (sd-executor)   *
root       0.00 cpu    55632k mem      0 io accton-create   
root       0.00 cpu        0k mem      0 io accton          
root       0.00 cpu      658k mem      0 io accton          
root       0.00 cpu     4556k mem      0 io systemd-tty-ask 
root       0.00 cpu    59424k mem      0 io systemctl       
root       0.00 cpu    55328k mem      0 io less            
root       0.00 cpu    59200k mem      0 io systemctl       
root       0.00 cpu      977k mem      0 io unix_chkpwd     
root       0.01 cpu    57776k mem      0 io crond           *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.01 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.12 cpu   121952k mem      0 io packagekitd     
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu    55232k mem      0 io cat             
root       0.00 cpu      977k mem      0 io unix_chkpwd     
root       0.00 cpu    57776k mem      0 io crond           *
root       0.00 cpu      759k mem      0 io dump-acct       
root       0.00 cpu      977k mem      0 io unix_chkpwd     
root       0.00 cpu    57776k mem      0 io crond           *
root       0.00 cpu      660k mem      0 io dump-acct       
root       0.00 cpu    55552k mem      0 io man             
root       0.00 cpu      760k mem      0 io lastcomm        
root       0.00 cpu      977k mem      0 io unix_chkpwd     
root       0.00 cpu    57776k mem      0 io crond           *
root       0.00 cpu      760k mem      0 io lastcomm        
root       0.00 cpu      977k mem      0 io unix_chkpwd     
root       0.01 cpu    57776k mem      0 io crond           *
root       0.00 cpu      661k mem      0 io lastcomm        

1.12 - La Commande ac

Cette commande vous renseigne sur les statistiques des temps de connexion des utilisateurs :

[root@redhat9 ~]# ac -p
        trainee                             20.30
        total       20.30

[root@redhat9 ~]# ac -d
Oct 19  total       11.06
Sep 25  total        1.49
Sep 30  total        0.04
Oct 21  total        6.08
Today   total        1.63

Options de la commande

Les options de cette commande sont :

[root@redhat9 ~]# ac --help

Usage: ac [OPTION] ...

OPTIONS:
  -d, --daily-totals        Print totals for each day
  -p, --individual-totals   Print time totals for each user
  -f, --file <file>         Read from <file>
  --complain                Print errors for whatever problem
  --reboots                 Count the time between login and reboot
  --supplants               Count the time between logins on the terminal
  --timewarps               Count the time between login and time warp
  --compatibility           Shortcut for --reboots --supplants --timewarps
  -a, --all-days            Do not skip days without login activity
  --tw-leniency <value>     Set the time warp leniency <value> in seconds
  --tw-suspicious <value>   Set the time warp suspicious <value> in seconds
  --print-year              Print year when displaying dates
  --print-zeros             Don't suppress zeros in category totals
  --debug                   Print verbose internal information
  -V, --version             Show version and exit
  -h, --help                Show help and exit

The system's default login accounting file is /var/log/wtmp.

LAB #2 - Réglage de la performance du système

2.1 - Présentation

Le daemon tuned permet de régler la performance du système en fonction de profils contenant des paramètres de configuration du noyau pré-définis. Lors de l'installation de RedHat 9, le daemon n'est ni activé, ni démarré :

[root@redhat9 ~]# systemctl status tuned
○ tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)

Le daemon peut être configuré pour modifier d'une manière dynamique les paramètres du noyau en fonction de la charge du système, en commencant avec les valeurs incluent dans le profil actif. Pour faire ceci, le daemon utilise des modules plug-ins monitor et des modules plug-ins tuning. Les plug-ins monitor analysent le système et fournissent les informations recoltées aux plug-ins tuning qui les utilisent pour appliquer des modifications dynamiques.

Les plugs-in monitor sont :

  • disk - surveille le nombre d'opération en E/S de chaque disque,
  • net - surveille le nombre de paquets transmis par chaque interface réseau,
  • load - surveille la charge de chaque CPU.

Les plug-ins tuning corréspondants sont :

  • disk - définit différents paramètres de disque, par exemple le planificateur de disque ou la gestion avancée de l'énergie,
  • net - configure la vitesse de l'interface et la fonctionnalité Wake-on-LAN (WoL),
  • cpu - définit différents paramètres des CPU par exemple le CPU governor ou la latence.

2.2 - Le fichier /etc/tuned/tuned-main.conf

Pour activer le mode dynamique, modifiez la valeur de la directive dynamic_tuning dans le fichier /etc/tuned/tuned-main.conf :

[root@redhat9 ~]# vi /etc/tuned/tuned-main.conf

[root@redhat9 ~]# cat /etc/tuned/tuned-main.conf
# Global tuned configuration file.

# Whether to use daemon. Without daemon it just applies tuning. It is
# not recommended, because many functions don't work without daemon,
# e.g. there will be no D-Bus, no rollback of settings, no hotplug,
# no dynamic tuning, ...
daemon = 1

# Dynamicaly tune devices, if disabled only static tuning will be used.
dynamic_tuning = 1

# How long to sleep before checking for events (in seconds)
# higher number means lower overhead but longer response time.
sleep_interval = 1

# Update interval for dynamic tunings (in seconds).
# It must be multiply of the sleep_interval.
update_interval = 10

# Recommend functionality, if disabled "recommend" command will be not
# available in CLI, daemon will not parse recommend.conf but will return
# one hardcoded profile (by default "balanced").
recommend_command = 1

# Whether to reapply sysctl from /run/sysctl.d/, /etc/sysctl.d/ and
# /etc/sysctl.conf.  If enabled, these sysctls will be re-appliead
# after TuneD sysctls are applied, i.e. TuneD sysctls will not
# override user-provided system sysctls.
reapply_sysctl = 1

# Default priority assigned to instances
default_instance_priority = 0

# Udev buffer size
udev_buffer_size = 1MB

# Log file count
log_file_count = 2

# Log file max size
log_file_max_size = 1MB

# Preset system uname string for architecture specific tuning.
# It can be used to force tuning for specific architecture.
# If commented, "uname" will be called to fill its content.
# uname_string = x86_64

# Preset system cpuinfo string for architecture specific tuning.
# It can be used to force tuning for specific architecture.
# If commented, "/proc/cpuinfo" will be read to fill its content.
# cpuinfo_string = Intel

# Enable TuneD listening on dbus
# enable_dbus = 1

# Enable TuneD listening on unix domain socket
# As this functionality is not used commonly, we disable it by default
# and it is needed to allow it manually
# enable_unix_socket = 0

# Path to socket for TuneD to listen
# Existing files on given path will be removed
# unix_socket_path = /run/tuned/tuned.sock

# Paths to sockets for TuneD to send signals to separated by , or ;
# unix_socket_signal_paths =

# Default unix socket ownership
# Can be set as id or name, -1 or non-existing name leaves unchanged
# unix_socket_ownership = -1 -1

# Permissions for listening sockets
# unix_socket_permissions = 0o600

# Size of connections backlog for listen function on socket
# Higher value allows to process requests from more clients
# connections_backlog = 1024

# TuneD daemon rollback strategy. Supported values: auto|not_on_exit
# - auto: rollbacks are always performed on a profile switch or 
#   graceful TuneD process exit
# - not_on_exit: rollbacks are always performed on a profile
#   switch, but not on any kind of TuneD process exit
# rollback = auto

Activez et démarrez le daemon tuned :

[root@redhat9 ~]# systemctl enable --now tuned

[root@redhat9 ~]# systemctl status tuned
● tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-10-22 16:13:46 CEST; 4s ago
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)
   Main PID: 3060 (tuned)
      Tasks: 4 (limit: 48800)
     Memory: 16.4M
        CPU: 411ms
     CGroup: /system.slice/tuned.service
             └─3060 /usr/bin/python3 -Es /usr/sbin/tuned -l -P

Oct 22 16:13:45 redhat9.ittraining.loc systemd[1]: Starting Dynamic System Tuning Daemon...
Oct 22 16:13:46 redhat9.ittraining.loc systemd[1]: Started Dynamic System Tuning Daemon.

2.3 - Profils

Les profils sont stocké dans le répertoire ls /usr/lib/tuned :

[root@redhat9 ~]# ls /usr/lib/tuned
accelerator-performance  balanced  functions    intel-sst            network-latency     optimize-serial-console  recommend.d             virtual-guest
aws                      desktop   hpc-compute  latency-performance  network-throughput  powersave                throughput-performance  virtual-host

Consultez le fichier /usr/lib/tuned/throughput-performance/tuned.conf :

[root@redhat9 ~]# cat /usr/lib/tuned/throughput-performance/tuned.conf
#
# tuned configuration
#

[main]
summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads

[variables]
thunderx_cpuinfo_regex=CPU part\s+:\s+(0x0?516)|(0x0?af)|(0x0?a[0-3])|(0x0?b8)\b
amd_cpuinfo_regex=model name\s+:.*\bAMD\b

[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100
energy_performance_preference=performance

[acpi]
platform_profile=performance

# Marvell ThunderX
[vm.thunderx]
type=vm
uname_regex=aarch64
cpuinfo_regex=${thunderx_cpuinfo_regex}
transparent_hugepages=never

[disk]
# The default unit for readahead is KiB.  This can be adjusted to sectors
# by specifying the relevant suffix, eg. (readahead => 8192 s). There must
# be at least one space between the number and suffix (if suffix is specified).
readahead=>4096

[sysctl]
# If a workload mostly uses anonymous memory and it hits this limit, the entire
# working set is buffered for I/O, and any more write buffering would require
# swapping, so it's time to throttle writes until I/O can catch up.  Workloads
# that mostly use file mappings may be able to use even higher values.
#
# The generator of dirty data starts writeback at this percentage (system default
# is 20%)
vm.dirty_ratio = 40

# Start background writeback (via writeback threads) at this percentage (system
# default is 10%)
vm.dirty_background_ratio = 10

# PID allocation wrap value.  When the kernel's next PID value
# reaches this value, it wraps back to a minimum PID value.
# PIDs of value pid_max or larger are not allocated.
#
# A suggested value for pid_max is 1024 * <# of cpu cores/threads in system>
# e.g., a box with 32 cpus, the default of 32768 is reasonable, for 64 cpus,
# 65536, for 4096 cpus, 4194304 (which is the upper limit possible).
#kernel.pid_max = 65536

# The swappiness parameter controls the tendency of the kernel to move
# processes out of physical memory and onto the swap disk.
# 0 tells the kernel to avoid swapping processes out of physical memory
# for as long as possible
# 100 tells the kernel to aggressively swap processes out of physical memory
# and move them to swap cache
vm.swappiness=10

# The default kernel value 128 was over twenty years old default,
# kernel-5.4 increased it to 4096, thus do not have it lower than 2048
# on older kernels
net.core.somaxconn=>2048

# Marvell ThunderX
[sysctl.thunderx]
type=sysctl
uname_regex=aarch64
cpuinfo_regex=${thunderx_cpuinfo_regex}
kernel.numa_balancing=0

Pour consulter le profil actif, utilisez la commande suivante :

[root@redhat9 ~]# tuned-adm active
Current active profile: virtual-guest

Ce profil est choisit par le système en fonction de la sortie de la sous-commande recommend de la commande tuned-adm :

[root@redhat9 ~]# tuned-adm recommend
virtual-guest

La sous-commande list de la commande tuned-adm permet de consulter les profils disponibles :

[root@redhat9 ~]# tuned-adm list
Available profiles:
- accelerator-performance     - Throughput performance based tuning with disabled higher latency STOP states
- aws                         - Optimize for aws ec2 instances
- balanced                    - General non-specialized tuned profile
- desktop                     - Optimize for the desktop use-case
- hpc-compute                 - Optimize for HPC compute workloads
- intel-sst                   - Configure for Intel Speed Select Base Frequency
- latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
- network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- optimize-serial-console     - Optimize for serial console use.
- powersave                   - Optimize for low power consumption
- throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest               - Optimize for running inside a virtual guest
- virtual-host                - Optimize for running KVM guests
Current active profile: virtual-guest

Les profiles fournit avec RedHat 9 sont les suivants :

Profile Description
accelerator-performance Il s'agit d'un réglage identique au throughput-performance, qui réduit également la latence à moins de 100 μs.
aws Optimiser pour les instances aws ec2
balanced Idéal pour les systèmes qui nécessitent un compromis entre économie d'énergie et performance.
desktop Dérivé du profil balanced. Permet une réponse plus rapide des applications interactives.
hpc-compute Dérivé du profil latency-performance. Idéal pour l'informatique de haute performance.
intel-sst Optimisé pour les systèmes dotés de configurations Intel Speed Select Technology. A utiliser en superposition à d'autres profils.
latency-performance Idéal pour les systèmes de serveurs qui nécessitent une faible latence au détriment de la consommation d'énergie.
network-latency Dérivé du profil latency-performance. Permet d'activer des paramètres supplémentaires de réglage du réseau afin d'obtenir une faible latence du réseau.
network-throughput Dérivé du profil throughput-performance. Des paramètres supplémentaires de réglage du réseau sont appliqués pour obtenir un débit maximal.
optimize-serial-console Augmente la réactivité de la console série. A utiliser en superposition à d'autres profils.
powersave Permet de régler le système pour une économie d'énergie maximale.
throughput-performance Permet de régler le système pour obtenir un débit maximal.
virtual-guest Permet d'optimiser les performances du système s'il fonctionne sur une machine virtuelle.
virtual-host Permet de régler le système pour qu'il soit le plus performant possible s'il sert d'hôte à des machines virtuelles.

Modifiez le profil actif à throughput-performance :

[root@redhat9 ~]# tuned-adm profile throughput-performance

[root@redhat9 ~]# tuned-adm active
Current active profile: throughput-performance

Verifiez la valeur de vm.spappiness :

[root@redhat9 ~]# sysctl vm.swappiness
vm.swappiness = 10

Pour désactiver l'optimisation de la performance, utilisez la sous-commande off de la commande tuned-adm :

[root@redhat9 ~]# tuned-adm off

[root@redhat9 ~]# tuned-adm active
No current active profile.

Cette commande n'arrête pas le daemon tuned :

[root@redhat9 ~]# systemctl status tuned
● tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-10-22 16:13:46 CEST; 1h 7min ago
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)
   Main PID: 3060 (tuned)
      Tasks: 2 (limit: 48800)
     Memory: 17.0M
        CPU: 2.028s
     CGroup: /system.slice/tuned.service
             └─3060 /usr/bin/python3 -Es /usr/sbin/tuned -l -P

Oct 22 16:13:45 redhat9.ittraining.loc systemd[1]: Starting Dynamic System Tuning Daemon...
Oct 22 16:13:46 redhat9.ittraining.loc systemd[1]: Started Dynamic System Tuning Daemon.

Notez que la valeur de vm.spappiness a été modifiée :

[root@redhat9 ~]# sysctl vm.swappiness
vm.swappiness = 60

Pour activer l'optimisation de la performance de nouveau, utilisez la sous commande profile de la commande tuned-adm avec le profil voulu :

[root@redhat9 ~]# tuned-adm profile throughput-performance

[root@redhat9 ~]# tuned-adm active
Current active profile: throughput-performance
<code>

Dernièrement, arrêtez le daemon **tuned** :

<code>
[root@redhat9 ~]# systemctl disable --now tuned
Removed "/etc/systemd/system/multi-user.target.wants/tuned.service".

[root@redhat9 ~]# systemctl status tuned
○ tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; disabled; preset: enabled)
     Active: inactive (dead) since Tue 2024-10-22 17:29:32 CEST; 10s ago
   Duration: 1h 15min 46.019s
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)
    Process: 3060 ExecStart=/usr/sbin/tuned -l -P (code=exited, status=0/SUCCESS)
   Main PID: 3060 (code=exited, status=0/SUCCESS)
        CPU: 2.233s

Oct 22 16:13:45 redhat9.ittraining.loc systemd[1]: Starting Dynamic System Tuning Daemon...
Oct 22 16:13:46 redhat9.ittraining.loc systemd[1]: Started Dynamic System Tuning Daemon.
Oct 22 17:29:32 redhat9.ittraining.loc systemd[1]: Stopping Dynamic System Tuning Daemon...
Oct 22 17:29:32 redhat9.ittraining.loc systemd[1]: tuned.service: Deactivated successfully.
Oct 22 17:29:32 redhat9.ittraining.loc systemd[1]: Stopped Dynamic System Tuning Daemon.
Oct 22 17:29:32 redhat9.ittraining.loc systemd[1]: tuned.service: Consumed 2.233s CPU time.

LAB #3 - La commande sysctl

3.1 - Répertoire /proc

Le répertoire /proc contient des fichiers et des répertoires virtuels. Le contenu de ces fichiers est créé dynamiquement lors de la consultation. Seul root peut consulter la totalité des informations dans le répertoire /proc.

[root@centos8 ~]# ls /proc
1      16391  19    2212  2427  2622  431   59    84    999          mdstat
10     16476  1931  2215  2428  2659  432   6     842   acpi         meminfo
1007   16534  1956  2222  2431  2667  433   60    8465  buddyinfo    misc
11     16576  1960  2226  2432  2686  434   61    866   bus          modules
11805  16593  2     2230  2435  27    435   63    867   cgroups      mounts
12     16598  20    2237  2439  28    436   64    868   cmdline      mtrr
1219   16600  2007  2238  244   29    437   65    869   consoles     net
1228   16613  2029  2241  2443  3     44    6568  87    cpuinfo      pagetypeinfo
1232   16646  203   2244  2445  31    446   66    870   crypto       partitions
1234   16673  2034  2247  2449  32    45    67    871   devices      sched_debug
1235   16677  2037  2260  2451  33    46    674   872   diskstats    schedstat
1247   16711  2054  2262  2465  34    47    68    874   dma          scsi
13     16712  2062  2267  2472  35    4790  69    875   driver       self
1307   16729  21    2268  2473  37    49    70    878   execdomains  slabinfo
1339   16742  210   2274  2474  38    50    701   879   fb           softirqs
1356   17     2118  2275  2475  39    5076  71    880   filesystems  stat
14     1764   2121  2280  2476  4     51    714   884   fs           swaps
1441   180    2124  2287  2478  40    52    72    887   interrupts   sys
1443   181    2126  2292  2481  402   53    73    9     iomem        sysrq-trigger
1444   1817   2156  23    2484  41    532   74    901   ioports      sysvipc
1446   182    2160  2302  25    419   539   75    903   irq          thread-self
14977  1828   2164  2307  2536  420   55    76    9144  kallsyms     timer_list
15     1829   2165  2310  2539  421   568   8     916   kcore        tty
15067  183    2167  2330  2571  422   569   808   918   keys         uptime
1536   1845   2169  2332  2578  423   570   809   919   key-users    version
1553   185    2177  2349  2579  425   571   81    921   kmsg         vmallocinfo
15594  186    2187  2358  259   426   572   833   969   kpagecgroup  vmstat
15735  187    2190  2373  2593  427   573   835   986   kpagecount   zoneinfo
16     1880   2194  2384  26    428   574   837   989   kpageflags
16165  1883   22    239   2602  43    575   838   990   loadavg
16167  1888   2204  241   2608  430   576   839   993   locks

Fichiers

Processeur
[root@centos8 ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 4
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 0
siblings        : 4
core id         : 2
cpu cores       : 4
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 0
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 4
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 1
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 4
initial apicid  : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 5
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 1
siblings        : 4
core id         : 1
cpu cores       : 4
apicid          : 5
initial apicid  : 5
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 6
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 1
siblings        : 4
core id         : 2
cpu cores       : 4
apicid          : 6
initial apicid  : 6
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 15
model           : 6
model name      : Common KVM processor
stepping        : 1
microcode       : 0x1
cpu MHz         : 1999.987
cache size      : 16384 KB
physical id     : 1
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 3999.97
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:
Interruptions système
[root@centos8 ~]# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:        109          0          0          0          0          0          0          0   IO-APIC   2-edge      timer
  1:          0          0          0          0          9          0          0          0   IO-APIC   1-edge      i8042
  8:          0          0          0          0          0          1          0          0   IO-APIC   8-edge      rtc0
  9:          0          0          0          0          0          0          0          0   IO-APIC   9-fasteoi   acpi
 10:          0          0          0          0      47098          0          0          0   IO-APIC  10-fasteoi   virtio0
 11:          0          0         31          0          0          0          0          0   IO-APIC  11-fasteoi   uhci_hcd:usb1
 12:          0          0          0         15          0          0          0          0   IO-APIC  12-edge      i8042
 14:          0          0          0          0          0          0          0          0   IO-APIC  14-edge      ata_piix
 15:       7376          0        144          0          0          0          0      84588   IO-APIC  15-edge      ata_piix
 24:          0          0          0          0          0          0          0          0   PCI-MSI 294912-edge      virtio1-config
 25:          0          0          0          0          0       5640          0         16   PCI-MSI 294913-edge      virtio1-input.0
 26:         36          0          0       5058          0          0          0          0   PCI-MSI 294914-edge      virtio1-output.0
 27:          0      16008          0       9431          0          0          0          0   PCI-MSI 114688-edge      ahci[0000:00:07.0]
NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts
LOC:     870537     771900    1117711     288839     833717     502365     758229     405110   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0          0          0          0          0   Performance monitoring interrupts
IWI:          0          0          0          0          2          0          0          0   IRQ work interrupts
RTR:          0          0          0          0          0          0          0          0   APIC ICR read retries
RES:     178171      67749      43116      65994      71361     118585      54139      53452   Rescheduling interrupts
CAL:      11095      11007      10841      10343      14679       9998      12165      12443   Function call interrupts
TLB:       2295       2297       2000       1728       2330       2338       1991       1861   TLB shootdowns
TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts
DFR:          0          0          0          0          0          0          0          0   Deferred Error APIC interrupts
MCE:          0          0          0          0          0          0          0          0   Machine check exceptions
MCP:        288        288        288        288        288        288        288        288   Machine check polls
HYP:          0          0          0          0          0          0          0          0   Hypervisor callback interrupts
HRE:          0          0          0          0          0          0          0          0   Hyper-V reenlightenment interrupts
HVS:          0          0          0          0          0          0          0          0   Hyper-V stimer0 interrupts
ERR:          0
MIS:          0
PIN:          0          0          0          0          0          0          0          0   Posted-interrupt notification event
NPI:          0          0          0          0          0          0          0          0   Nested posted-interrupt event
PIW:          0          0          0          0          0          0          0          0   Posted-interrupt wakeup event

Important : Un pilote de périphérique demande au processeur de fournir un service en utilisant un IRQ. Quand la demande est faite, le processeur interrompe ses activités et passe le contrôle au pilote identifié par l'IRQ. Techniquement l'attribution d'un IRQ à un périphérique doit être exclusive. Dans le cas où deux périphériques demandent un service en même temps, c'est le périphérique ayant l'IRQ le plus bas qui est prioritaire.

Canaux DMA
[root@centos8 ~]# cat /proc/dma
 4: cascade
Plages d'entrée/sortie
root@centos8 ~]# cat /proc/ioports | more
0000-0cf7 : PCI Bus 0000:00
  0000-001f : dma1
  0020-0021 : pic1
  0040-0043 : timer0
  0050-0053 : timer1
  0060-0060 : keyboard
  0064-0064 : keyboard
  0070-0077 : rtc0
  0080-008f : dma page reg
  00a0-00a1 : pic2
  00c0-00df : dma2
  00f0-00ff : fpu
  0170-0177 : 0000:00:01.1
    0170-0177 : ata_piix
  01f0-01f7 : 0000:00:01.1
    01f0-01f7 : ata_piix
  0376-0376 : 0000:00:01.1
    0376-0376 : ata_piix
  03c0-03df : vga+
  03f6-03f6 : 0000:00:01.1
    03f6-03f6 : ata_piix
--More--

Important - Si deux périphériques ont le même port, les deux périphériques seront inutilisables.

Périphériques
[root@centos8 ~]# cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 21 sg
 29 fb
128 ptm
136 pts
162 raw
180 usb
188 ttyUSB
189 usb_device
202 cpu/msr
203 cpu/cpuid
226 drm
244 aux
245 hidraw
246 usbmon
247 bsg
248 watchdog
249 ptp
250 pps
251 rtc
252 dax
253 tpm
254 gpiochip

Block devices:
  8 sd
  9 md
 11 sr
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
253 device-mapper
254 mdp
259 blkext
Modules
[root@centos8 ~]# cat /proc/modules | more
xt_CHECKSUM 16384 1 - Live 0xffffffffc09a8000
ipt_MASQUERADE 16384 3 - Live 0xffffffffc09a3000
xt_conntrack 16384 1 - Live 0xffffffffc099e000
ipt_REJECT 16384 2 - Live 0xffffffffc0999000
nft_compat 20480 16 - Live 0xffffffffc0993000
nf_nat_tftp 16384 0 - Live 0xffffffffc098b000
nft_objref 16384 1 - Live 0xffffffffc0986000
nf_conntrack_tftp 16384 3 nf_nat_tftp, Live 0xffffffffc0981000
nft_counter 16384 33 - Live 0xffffffffc097c000
tun 53248 1 - Live 0xffffffffc096e000
bridge 192512 0 - Live 0xffffffffc093e000
stp 16384 1 bridge, Live 0xffffffffc0939000
llc 16384 2 bridge,stp, Live 0xffffffffc0930000
nft_fib_inet 16384 1 - Live 0xffffffffc08f5000
nft_fib_ipv4 16384 1 nft_fib_inet, Live 0xffffffffc08ed000
nft_fib_ipv6 16384 1 nft_fib_inet, Live 0xffffffffc08e8000
nft_fib 16384 3 nft_fib_inet,nft_fib_ipv4,nft_fib_ipv6, Live 0xffffffffc08e3000
nft_reject_inet 16384 5 - Live 0xffffffffc08de000
nf_reject_ipv4 16384 2 ipt_REJECT,nft_reject_inet, Live 0xffffffffc08d9000
nf_reject_ipv6 16384 1 nft_reject_inet, Live 0xffffffffc08d4000
nft_reject 16384 1 nft_reject_inet, Live 0xffffffffc08cf000
--More--
Statistiques de l'utilisation des disques
[root@centos8 ~]# cat /proc/diskstats
   8       0 sda 15481 112 1445637 154103 10272 2377 277530 890611 0 237219 1044714 0 0 0 0
   8       1 sda1 402 3 66754 13349 31 18 392 4632 0 2824 17981 0 0 0 0
   8       2 sda2 14915 109 1375516 140528 8450 2359 277138 869788 0 225416 1010316 0 0 0 0
   8      16 sdb 230 0 5991 36 0 0 0 0 0 110 36 0 0 0 0
  11       0 sr0 10 0 4 2 0 0 0 0 0 9 2 0 0 0 0
 253       0 dm-0 11651 0 1364532 72138 12121 0 288727 1208138 0 227630 1280276 0 0 0 0
 253       1 dm-1 104 0 4440 79 0 0 0 0 0 71 79 0 0 0 0
Partitions
[root@centos8 ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   33554432 sda
   8        1    1048576 sda1
   8        2   32504832 sda2
   8       16    4194304 sdb
  11        0    1048575 sr0
 253        0   29143040 dm-0
 253        1    3358720 dm-1
Espaces de pagination
[root@centos8 ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       3358716 0       -2
Statistiques d'utilisation du processeur
[root@centos8 ~]# cat /proc/loadavg
0.00 0.00 0.00 1/697 16936
Statistiques d'utilisation de la mémoire
[root@centos8 ~]# cat /proc/meminfo
MemTotal:        3825032 kB
MemFree:         1862116 kB
MemAvailable:    2420560 kB
Buffers:            3300 kB
Cached:           750496 kB
SwapCached:            0 kB
Active:           315572 kB
Inactive:        1400260 kB
Active(anon):       1856 kB
Inactive(anon):   974728 kB
Active(file):     313716 kB
Inactive(file):   425532 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       3358716 kB
SwapFree:        3358716 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        962004 kB
Mapped:           261084 kB
Shmem:             14552 kB
KReclaimable:      46980 kB
Slab:             118396 kB
SReclaimable:      46980 kB
SUnreclaim:        71416 kB
KernelStack:       11280 kB
PageTables:        46532 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5271232 kB
Committed_AS:    5072744 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             5920 kB
HardwareCorrupted:     0 kB
AnonHugePages:    546816 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      173944 kB
DirectMap2M:     4020224 kB
Version du noyau
[root@centos8 ~]# cat /proc/version
Linux version 4.18.0-305.3.1.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC)) #1 SMP Tue Jun 1 16:14:33 UTC 2021

Répertoires

ide/scsi

Ce répertoire contient des répertoires dans lesquels se trouvent des informations sur la capacité, le type et la géométrie des disques.

acpi

Ce répertoire contient des informations sur la gestion de l'énérgie, les températures, les vitesses de ventilateurs, la charge des batteries.

bus

Ce répertoire contient un sous-répertoire par bus.

net

Ce répertoire contient des informations sur le réseau.

sys

Ce répertoire contient des paramètres du noyau. Certains des fichiers dans ce répertoire sont accessibles en écriture par root en temps réel. Par exemple pour éviter des attaques réseau DoS utilisant la commande ping, saisissez la commande suivante :

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all [Entrée]

Cette commande a pour résultat d'ignorer les reqûetes ping.

2.2 - Utilisation de la Commande sysctl

Les fichiers dans le répertoire /proc/sys peuvent être administrés par la commande sysctl en temps réel.

La commande sysctl applique les règles consignés dans le fichier /etc/sysctl.conf au démarrage de la machine.

Saisissez la commande :

[root@centos8 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

[root@centos8 ~]# ls -l /etc/sysctl.d/
total 0
lrwxrwxrwx. 1 root root 14 Mar 16 15:42 99-sysctl.conf -> ../sysctl.conf
[root@centos8 ~]# ls -l /usr/lib/sysctl.d/
total 24
-rw-r--r--. 1 root root 1810 Dec 22  2020 10-default-yama-scope.conf
-rw-r--r--. 1 root root  524 Mar 16 15:42 50-coredump.conf
-rw-r--r--. 1 root root 1270 Mar 16 15:42 50-default.conf
-rw-r--r--. 1 root root  246 Jun 15  2020 50-libkcapi-optmem_max.conf
-rw-r--r--. 1 root root  636 Mar 16 15:42 50-pid-max.conf
-rw-r--r--. 1 root root  499 Nov 26  2019 60-libvirtd.conf

[root@centos8 ~]# cat /usr/lib/sysctl.d/50-default.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See sysctl.d(5) and core(5) for documentation.

# To override settings in this file, create a local file in /etc
# (e.g. /etc/sysctl.d/90-override.conf), and put any assignments
# there.

# System Request functionality of the kernel (SYNC)
#
# Use kernel.sysrq = 1 to allow all keys.
# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html for a list
# of values and keys.
kernel.sysrq = 16

# Append the PID to the core filename
kernel.core_uses_pid = 1

# https://bugzilla.redhat.com/show_bug.cgi?id=1689346
kernel.kptr_restrict = 1

# Source route verification
net.ipv4.conf.all.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.all.accept_source_route = 0

# Promote secondary addresses when the primary address is removed
net.ipv4.conf.all.promote_secondaries = 1

# Fair Queue CoDel packet scheduler to fight bufferbloat
net.core.default_qdisc = fq_codel

# Enable hard and soft link protection
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

Les options de la commande sysctl sont :

[root@centos8 ~]# sysctl --help

Usage:
 sysctl [options] [variable[=value] ...]

Options:
  -a, --all            display all variables
  -A                   alias of -a
  -X                   alias of -a
      --deprecated     include deprecated parameters to listing
  -b, --binary         print value without new line
  -e, --ignore         ignore unknown variables errors
  -N, --names          print variable names without values
  -n, --values         print only values of the given variable(s)
  -p, --load[=<file>]  read values from file
  -f                   alias of -p
      --system         read values from all system directories
  -r, --pattern <expression>
                       select setting that match expression
  -q, --quiet          do not echo variable set
  -w, --write          enable writing a value to variable
  -o                   does nothing
  -x                   does nothing
  -d                   alias of -h

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see sysctl(8).

Important : Consultez la page de la traduction du manuel de sysctl ici pour comprendre la commande.

LAB#3 - Interprétation des informations dans /proc

Les informations brutes stockées dans /proc peuvent être interprétées grâce à l'utilisation des commandes dites de gestion des performances :

  • free,
  • uptime et w,
  • iostat,
  • hdparm,
  • vmstat,
  • mpstat,
  • sar.

3.1 - La Commande free

La commande free permet de donner l’état de la mémoire totale, libre, partagée, swap et bufferisée. Saisissez donc la commande suivante :

[root@centos8 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3735        1135        1818          14         782        2363
Swap:          3279           0        3279

Dans le cas de cet exemple, nous pouvons constater que l’affichage montre :

  • 3735 Mo de mémoire physique totale,
  • 1135 Mo de mémoire physique utilisée et 1818 Mo de mémoire physique libre,
  • 3279 Mo de mémoire swap totale et 0 Mo de swap utilisé

Les options de cette commande sont :

[root@centos8 ~]# free --help

Usage:
 free [options]

Options:
 -b, --bytes         show output in bytes
     --kilo          show output in kilobytes
     --mega          show output in megabytes
     --giga          show output in gigabytes
     --tera          show output in terabytes
     --peta          show output in petabytes
 -k, --kibi          show output in kibibytes
 -m, --mebi          show output in mebibytes
 -g, --gibi          show output in gibibytes
     --tebi          show output in tebibytes
     --pebi          show output in pebibytes
 -h, --human         show human-readable output
     --si            use powers of 1000 not 1024
 -l, --lohi          show detailed low and high memory statistics
 -t, --total         show total for RAM + swap
 -s N, --seconds N   repeat printing every N seconds
 -c N, --count N     repeat printing N times, then exit
 -w, --wide          wide output

     --help     display this help and exit
 -V, --version  output version information and exit

For more details see free(1).

3.2 - Les Commandes uptime et w

Chacune des ces commandes indique la charge moyenne du ou des processeurs depuis 1 minute, 5 minutes et 15 minutes :

[root@centos8 ~]# uptime
 04:39:03 up 1 day,  2:34,  1 user,  load average: 0.00, 0.00, 0.00
 
[root@centos8 ~]# w
 04:39:04 up 1 day,  2:34,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
trainee  pts/0    10.0.2.1         03:58    0.00s  0.11s  0.02s sshd: trainee [priv]

Les valeurs load average ou charge moyenne indiquent le nombre moyen de processus en cours de traitement ou en attente pour la période concernée.

Par exemple si les valeurs sur un système muni d'un seul processeur étaient 3,48 4,00 3,85 ceci indiquerait que le processeur a du mal à traiter les processus mettant en moyenne :

  • 2,48 processus en attente dans la dernière minute,
  • 3,00 processus en attente dans les dernières 5 minutes,
  • 2,85 processus en attente dans les dernières 15 minutes.

Les options de ces commandes sont :

[root@centos8 ~]# uptime --help

Usage:
 uptime [options]

Options:
 -p, --pretty   show uptime in pretty format
 -h, --help     display this help and exit
 -s, --since    system up since
 -V, --version  output version information and exit

For more details see uptime(1).

[root@centos8 ~]# w --help

Usage:
 w [options]

Options:
 -h, --no-header     do not print header
 -u, --no-current    ignore current process username
 -s, --short         short format
 -f, --from          show remote hostname field
 -o, --old-style     old style output
 -i, --ip-addr       display IP address instead of hostname (if possible)

     --help     display this help and exit
 -V, --version  output version information and exit

For more details see w(1).

3.3 - La Commande iostat

La commande iostat affiche des statistiques sur l'utilisation des disques, des terminaux et des lecteurs de cartouche :

[root@centos8 ~]# iostat
bash: iostat: command not found...
Install package 'sysstat' to provide command 'iostat'? [N/y] y


 * Waiting in queue... 
The following packages have to be installed:
 lm_sensors-libs-3.4.0-22.20180522git70f7e08.el8.x86_64 Lm_sensors core libraries
 sysstat-11.7.3-5.el8.x86_64    Collection of performance monitoring tools for Linux
Proceed with changes? [N/y] y


 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.03    0.01    0.00   99.93

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.28         7.67         1.49     735338     142510
sdb               0.00         0.03         0.00       2995          0
scd0              0.00         0.00         0.00          2          0
dm-0              0.26         7.25         1.55     694786     148837
dm-1              0.00         0.02         0.00       2220          0

Au-dessous de la première ligne indiquant la version du noyau du système et son nom d'hôte ainsi que la date actuelle, iostat affiche une vue d'ensemble de l'utilisation CPU moyenne du système depuis le dernier démarrage. Le rapport d'utilisation du CPU inclut les pourcentages suivants :

  • %user - Pourcentage de temps passé en mode utilisateur (exécutant des applications, etc.)
  • %nice - Pourcentage de temps passé en mode utilisateur (pour les processus qui ont modifié leur priorité de programmation à l'aide de la commande nice)
  • %system - Pourcentage de temps passé en mode noyau
  • %steal - Pourcentage du temps passé par des CPU virtuels en attendant que l'hyperviseur s'occupe d'un autre CPU virtuel.
  • %iowait - Pourcentage du temps passé à attendre les entrées et les sorties des disques.
  • %idle - Pourcentage de temps passé en inactivité

Notez la valeur de %iowait. Dans le cas où ce pourcentage est trop élévé, ceci indique que le processeur passe son temps à attendre les entrées et les sorties de disque.

Au-dessous du rapport d'utilisation du CPU de la sortie de la commande iostat figure le rapport d'utilisation des périphériques. Ce dernier contient une ligne pour chaque périphérique disque du système et inclut les informations suivantes :

  • La spécification du périphérique.
  • Le nombre de transferts (ou opérations d'E/S) par seconde.
  • Le nombre de blocs de KB lus par seconde.
  • Le nombre de blocs de KB écrits par seconde.
  • Le nombre total de KB lus.
  • Le nombre total de KB écrits.

Dernièrement, pour voir les statistiques étendues des disques, utilisez la commande suivante :

[root@centos8 ~]# iostat -d -x
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        30/06/21        _x86_64_        (8 CPU)

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              0.20    0.16     11.67      1.81     0.00     0.03   0.48  17.45    6.79   69.99   0.01    58.28    11.33   9.13   0.33
sdb              0.00    0.00      0.02      0.00     0.00     0.00   0.00   0.00    0.13    0.00   0.00     8.81     0.00   0.51   0.00
scd0             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.20    0.00   0.00     0.20     0.00   0.90   0.00
dm-0             0.12    0.19      3.98      1.90     0.00     0.00   0.00   0.00    4.18   79.07   0.02    32.88    10.07  10.34   0.32
dm-1             0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    0.76    0.00   0.00    21.35     0.00   0.68   0.00

Les options de cette commande sont :

[root@centos8 ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
[ <device> [...] | ALL ]

3.4 - La Commande hdparm

Pour surveiller la vitesse des entrées et des sorties du disque, vous pouvez utiliser la commande hdparm :

[root@centos8 ~]# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1410 MB in  3.00 seconds = 469.98 MB/sec

3.5 - La Commande vmstat

La commande vmstat affiche des statistiques sur la mémoire, la pagination et la charge ponctuelle du processeur :

[root@centos8 ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1765216   2256 866336    0    0     3     0    9   12  0  0 100  0  0
 0  0      0 1765136   2256 866336    0    0     0     0   57   80  0  0 100  0  0
 0  0      0 1765136   2256 866376    0    0     0     0   54   77  0  0 100  0  0
 0  0      0 1765136   2256 866376    0    0     0     0   66  100  0  0 100  0  0
 0  0      0 1765136   2256 866376    0    0     0     0  103  125  0  0 100  0  0
 0  0      0 1765108   2256 866376    0    0     0     0   64   86  0  0 100  0  0
 0  0      0 1765108   2256 866376    0    0     0     0   62   88  0  0 100  0  0
 0  0      0 1765108   2256 866376    0    0     0     0   68   97  0  0 100  0  0
 0  0      0 1765108   2256 866376    0    0     0     0   60   88  0  0 100  0  0
 0  0      0 1765108   2256 866376    0    0     0     0  177  251  0  0 100  0  0

La première ligne subdivise le champ en six catégories à savoir : processus, mémoire, swap, E/S, système et CPU sur lesquelles elle donne des statistiques. La seconde ligne identifie de manière encore plus détaillée chacun des champs, permettant ainsi de parcourir simplement et rapidement l'ensemble des données lors de la recherche de statistiques spécifiques.

Les champs relatifs aux processus sont les suivants :

  • r — Le nombre de processus exécutables attendant d'avoir accès au CPU
  • b — Le nombre de processus exécutables dans un état de veille qui ne peut être interrompu

Les champs relatifs à la mémoire sont les suivants :

  • swpd — La quantité de mémoire virtuelle utilisée
  • free — La quantité de mémoire libre
  • buff — La quantité de mémoire utilisée par les tampons (ou buffers)
  • cache — La quantité de mémoire utilisée comme cache de pages

Les champs relatifs au swap sont les suivants :

  • si — La quantité de mémoire chargée depuis le disque
  • so — La quantité de mémoire déchargée sur le disque

Les champs relatifs aux Entrées/Sorties (E/S) sont les suivants :

  • bi — Blocs envoyés vers un périphérique blocs
  • bo— Blocs reçus d'un périphérique blocs

Les champs relatifs au système sont les suivants :

  • in — Nombre d'interruptions par seconde
  • cs — Nombre de changements de contexte par seconde

Les champs relatifs au CPU sont les suivants :

  • us — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau utilisateur
  • sy — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau système
  • id — Le pourcentage de temps pendant lequel le CPU était inoccupé
  • wa — Attente d'E/S

Les options de cette commande sont :

[root@centos8 ~]# vmstat --help

Usage:
 vmstat [options] [delay [count]]

Options:
 -a, --active           active/inactive memory
 -f, --forks            number of forks since boot
 -m, --slabs            slabinfo
 -n, --one-header       do not redisplay header
 -s, --stats            event counter statistics
 -d, --disk             disk statistics
 -D, --disk-sum         summarize disk statistics
 -p, --partition <dev>  partition specific statistics
 -S, --unit <char>      define display unit
 -w, --wide             wide output
 -t, --timestamp        show timestamp

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see vmstat(8).

Important : Par défaut la commande vmstat affiche des informations depuis le démarrage du système.

3.6 - La Commande mpstat

La commande mpstat affiche des statistiques détaillées sur le CPU :

[root@centos8 ~]# mpstat
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_(8 CPU)

04:53:22     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:53:22     all    0.03    0.00    0.01    0.02    0.01    0.01    0.00    0.00    0.00   99.92

Dans le cas où vous avez plusieurs processeurs ou coeurs, vous pouvez visualiser ces mêmes informations par unité de traitement :

[root@centos8 ~]# mpstat -P ALL
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_(8 CPU)

04:54:28     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:54:28     all    0.03    0.00    0.01    0.02    0.01    0.01    0.00    0.00    0.00   99.92
04:54:28       0    0.03    0.00    0.01    0.00    0.01    0.00    0.00    0.00    0.00   99.94
04:54:28       1    0.02    0.00    0.02    0.03    0.02    0.00    0.00    0.00    0.00   99.91
04:54:28       2    0.02    0.00    0.01    0.01    0.01    0.04    0.00    0.00    0.00   99.90
04:54:28       3    0.01    0.00    0.01    0.02    0.00    0.00    0.00    0.00    0.00   99.95
04:54:28       4    0.05    0.00    0.02    0.03    0.01    0.00    0.00    0.00    0.00   99.88
04:54:28       5    0.03    0.01    0.01    0.02    0.01    0.00    0.00    0.00    0.00   99.92
04:54:28       6    0.02    0.00    0.02    0.01    0.01    0.00    0.00    0.00    0.00   99.95
04:54:28       7    0.02    0.00    0.01    0.01    0.01    0.00    0.00    0.00    0.00   99.94

Pour afficher 5 jeux de statistiques à des intervales de 2 secondes pour tous les unités de traitement, il convient d'utiliser la commande suivante :

[root@centos8 ~]# mpstat -P ALL 2 5
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

04:55:11     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:55:13     all    0.00    0.00    0.00    0.00    0.00    0.00    0.06    0.00    0.00   99.94
04:55:13       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       4    0.00    0.00    0.00    0.00    0.00    0.00    0.50    0.00    0.00   99.50
04:55:13       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:13       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

04:55:13     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:55:15     all    0.00    0.00    0.00    0.00    0.06    0.00    0.00    0.00    0.00   99.94
04:55:15       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:15       7    0.00    0.00    0.00    0.00    0.50    0.00    0.00    0.00    0.00   99.50

04:55:15     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:55:17     all    0.00    0.00    0.00    0.00    0.06    0.00    0.00    0.00    0.00   99.94
04:55:17       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       2    0.00    0.00    0.00    0.00    0.50    0.00    0.00    0.00    0.00   99.50
04:55:17       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:17       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

04:55:17     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:55:19     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:19       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

04:55:19     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:55:21     all    0.06    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.94
04:55:21       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:55:21       7    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.01    0.00    0.00    0.00    0.02    0.00    0.01    0.00    0.00   99.95
Average:       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       2    0.00    0.00    0.00    0.00    0.10    0.00    0.00    0.00    0.00   99.90
Average:       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       4    0.00    0.00    0.00    0.00    0.00    0.00    0.10    0.00    0.00   99.90
Average:       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       7    0.10    0.00    0.00    0.00    0.10    0.00    0.00    0.00    0.00   99.80

Les options de cette commande sont :

[root@centos8 ~]# mpstat --help
Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -n ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
[ -N { <node_list> | ALL } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]

3.7 - La Commande sar

La commande sar (System Activity Reporter) permet de surveiller toutes les ressources du système selon l'option qui est passée en argument à la commande.

Sous RHEL/CentOS 8 la commande /usr/lib64/sa/sadc permet de collecter les informations :

[root@centos8 ~]# ls /usr/lib64/sa
sa1  sa2  sadc

Le script /usr/lib64/sa/sa1 exécute la commande sadc. Ce script prend deux options :

Option Description
-t L'intervalle entre les collectes
-n Nombre de collectes

Le script /usr/lib64/sa/sa2 exécute la commande sar et consigne les informations dans un fichier au format /var/log/sa/sar<jj> :

[root@centos8 ~]# ls /var/log/sa/
sa29  s


ar29

Sous CentOS / RHEL 8, l'intervalle entre les collectes des informations est configuré par les timers de systemd au lieu des cron jobs :

[root@centos8 ~]# cat /usr/lib/systemd/system/sysstat-collect.timer
# /usr/lib/systemd/system/sysstat-collect.timer
# (C) 2014 Tomasz Torcz <tomek@pipebreaker.pl>
#
# sysstat-11.7.3 systemd unit file:
#        Activates activity collector every 10 minutes

[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service

La valeur de OnCalendar indique un collecte toutes les dix minutes.

Pour modifier l'intervalle entre les collectes, il faut créer un fichier override dans le répertoire /etc/systemd/system/ en utilisant la commande systemctl edit. En effet, il ne faut jamais éditer les fichiers dans le répertoire /usr/lib/systemd/system :

[root@centos8 ~]# systemctl edit sysstat-collect.timer
[root@centos8 ~]# cat /etc/systemd/system/sysstat-collect.timer.d/override.conf 
[Unit]
Description=Run system activity accounting tool every 2 minutes

[Timer]
OnCalendar=
OnCalendar=*:00/2
AccuracySec=0

Important : Notez la ligne OnCalendar= qui est necessaire afin de surcharger la valeur par défaut.

Vérifiez ensuite la prise en compte de la configuration :

[root@centos8 ~]# systemctl status sysstat-collect.timer
● sysstat-collect.timer - Run system activity accounting tool every 2 minutes
   Loaded: loaded (/usr/lib/systemd/system/sysstat-collect.timer; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/sysstat-collect.timer.d
           └─override.conf
   Active: active (waiting) since Tue 2021-06-29 06:16:04 EDT; 3h 2min ago
  Trigger: Tue 2021-06-29 09:20:00 EDT; 1min 19s left

Jun 29 06:16:04 centos8.ittraining.loc systemd[1]: Started Run system activity accounting tool every 10 minutes.
[root@centos8 ~]# journalctl -g sysstat-collect.service
-- Logs begin at Mon 2021-06-28 02:04:10 EDT, end at Tue 2021-06-29 09:18:00 EDT. --
Jun 29 06:20:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 06:26:29 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 06:30:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 06:40:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 06:50:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:00:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:10:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:20:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:30:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:40:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:50:33 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:53:56 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:54:00 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:56:00 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 07:58:00 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
Jun 29 08:00:00 centos8.ittraining.loc systemd[1]: sysstat-collect.service: Succeeded.
...

Saisissez la commande suivante :

[root@centos8 ~]# sar
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

06:16:04     LINUX RESTART      (8 CPU)

06:20:33        CPU     %user     %nice   %system   %iowait    %steal     %idle
06:26:29        all      0.03      0.00      0.03      0.00      0.00     99.94
06:30:33        all      0.02      0.00      0.03      0.00      0.00     99.95
06:40:33        all      0.02      0.00      0.03      0.00      0.00     99.94
06:50:33        all      0.02      0.00      0.02      0.00      0.00     99.95
07:00:33        all      0.02      0.00      0.02      0.00      0.00     99.95
07:10:33        all      0.02      0.00      0.02      0.00      0.00     99.95
07:20:33        all      0.02      0.00      0.03      0.00      0.00     99.95
07:30:33        all      0.02      0.01      0.03      0.00      0.00     99.94
07:40:33        all      0.03      0.00      0.04      0.00      0.00     99.93
07:50:33        all      0.03      0.00      0.03      0.00      0.00     99.94
07:53:56        all      0.08      0.00      0.06      0.00      0.00     99.86
07:54:00        all      0.09      0.00      0.06      0.00      0.00     99.85
Average:        all      0.03      0.00      0.03      0.00      0.00     99.94

07:55:44     LINUX RESTART      (8 CPU)

07:56:00        CPU     %user     %nice   %system   %iowait    %steal     %idle
07:58:00        all      0.03      0.00      0.03      0.00      0.00     99.94
08:00:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:02:00        all      0.02      0.00      0.03      0.00      0.00     99.94
08:04:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:06:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:08:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:10:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:12:00        all      0.03      0.00      0.03      0.00      0.00     99.95
08:14:00        all      0.02      0.00      0.03      0.01      0.00     99.94
08:16:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:18:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:20:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:22:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:24:00        all      0.02      0.00      0.02      0.00      0.00     99.95
08:26:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:28:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:30:00        all      0.02      0.05      0.05      0.00      0.00     99.87
08:32:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:34:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:36:00        all      0.03      0.00      0.04      0.00      0.00     99.94
08:38:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:40:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:42:00        all      0.02      0.00      0.03      0.00      0.00     99.94
08:44:00        all      0.03      0.00      0.03      0.00      0.00     99.94
08:46:00        all      0.02      0.00      0.03      0.00      0.00     99.94
08:48:00        all      0.03      0.00      0.03      0.00      0.00     99.95
08:50:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:52:00        all      0.02      0.00      0.06      0.00      0.00     99.92
08:54:00        all      0.02      0.00      0.03      0.00      0.00     99.95
08:56:00        all      0.02      0.00      0.04      0.00      0.00     99.94
08:58:00        all      0.02      0.00      0.02      0.00      0.00     99.96
09:00:00        all      0.07      0.00      0.05      0.00      0.00     99.88
09:02:00        all      0.02      0.00      0.04      0.00      0.00     99.94
09:04:00        all      0.02      0.00      0.03      0.00      0.00     99.95
09:06:00        all      0.02      0.00      0.04      0.00      0.00     99.94
09:08:00        all      0.02      0.00      0.04      0.00      0.00     99.94
09:10:00        all      0.02      0.00      0.03      0.00      0.00     99.95
09:12:00        all      0.02      0.00      0.03      0.00      0.00     99.94

09:12:00        CPU     %user     %nice   %system   %iowait    %steal     %idle
09:14:00        all      0.02      0.00      0.03      0.00      0.00     99.95
09:16:00        all      0.02      0.00      0.06      0.00      0.00     99.92
09:18:00        all      0.03      0.00      0.03      0.00      0.00     99.95
09:20:00        all      0.02      0.00      0.03      0.00      0.00     99.94
Average:        all      0.02      0.00      0.03      0.00      0.00     99.94

Statistiques d'Utilisation du CPU

Visualisez maintenant les statistiques d'utilisation du CPU:

[root@centos8 ~]# sar -u 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

09:22:52        CPU     %user     %nice   %system   %iowait    %steal     %idle
09:22:57        all      0.03      0.00      0.03      0.00      0.00     99.95
09:23:02        all      0.03      0.00      0.03      0.00      0.00     99.95
09:23:07        all      0.00      0.00      0.03      0.00      0.00     99.97
Average:        all      0.02      0.00      0.03      0.00      0.00     99.96

D'avantage de statistiques peuvent être obtenues en utilisant l'option ALL :

[root@centos8 ~]# sar -u ALL 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_(8 CPU)

01:49:14        CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest    %gnice     %idle
01:49:19        all      0.03      0.00      0.00      0.00      0.00      0.03      0.00      0.00      0.00     99.95
01:49:24        all      0.03      0.00      0.03      0.00      0.00      0.10      0.05      0.00      0.00     99.80
01:49:29        all      0.00      0.00      0.00      0.25      0.00      0.10      0.05      0.00      0.00     99.60
Average:        all      0.02      0.00      0.01      0.08      0.00      0.08      0.03      0.00      0.00     99.78

Pour consulter les statistiques d'un coeur spécifique, utilisez l'option -P :

[root@centos8 ~]# sar -u -P 1 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

01:51:52        CPU     %user     %nice   %system   %iowait    %steal     %idle
01:51:57          1      0.00      0.00      0.00      0.00      0.00    100.00
01:52:02          1      0.20      0.00      0.00      0.00      0.00     99.80
01:52:07          1      0.00      0.00      0.00      0.00      0.00    100.00
Average:          1      0.07      0.00      0.00      0.00      0.00     99.93
[root@centos8 ~]# sar -u -P 5 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

01:52:16        CPU     %user     %nice   %system   %iowait    %steal     %idle
01:52:21          5      0.00      0.00      0.00      0.00      0.00    100.00
01:52:26          5      0.00      0.00      0.00      0.00      0.00    100.00
01:52:31          5      0.00      0.00      0.00      0.00      0.00    100.00
Average:          5      0.00      0.00      0.00      0.00      0.00    100.00

Statistiques d'Utilisation de la Mémoire et du Swap

Utilisez l'option -r pour visualiser les statistiques concernant la mémoire :

[root@centos8 ~]# sar -r 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        30/06/21        _x86_64_(8 CPU)

07:33:32    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
07:33:37      1647240   2297232   2177792     56.94      3356    827396   5096432     70.94    359072   1486368         0
07:33:42      1647232   2297224   2177800     56.94      3356    827396   5095788     70.93    359072   1486300         0
07:33:47      1647232   2297224   2177800     56.94      3356    827396   5095788     70.93    359072   1486376         0
Average:      1647235   2297227   2177797     56.94      3356    827396   5096003     70.94    359072   1486348         0

Utilisez l'option -S pour visualiser les statistiques concernant le Swap :

[root@centos8 ~]# sar -S 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        30/06/21        _x86_64_(8 CPU)

07:31:58    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
07:32:03      3358716         0      0.00         0      0.00
07:32:08      3358716         0      0.00         0      0.00
07:32:13      3358716         0      0.00         0      0.00
Average:      3358716         0      0.00         0      0.00

Statistiques des E/S

Utilisez l'option -b pour visualiser les statistiques concernant les E/S :

[root@centos8 ~]# sar -b 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

09:24:49          tps      rtps      wtps   bread/s   bwrtn/s
09:24:54         0.00      0.00      0.00      0.00      0.00
09:24:59         1.20      0.00      1.20      0.00     20.20
09:25:04         0.00      0.00      0.00      0.00      0.00
Average:         0.40      0.00      0.40      0.00      6.73

Statistiques des E/S par Disque

Utilisez l'option -d pour visualiser les statistiques concernant les E/S par disque :

[root@centos8 ~]# sar -d 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        29/06/21        _x86_64_        (8 CPU)

09:25:45          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
09:25:50       dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:50      dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:50      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:50     dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:50     dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:25:50          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
09:25:55       dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:55      dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:55      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:55     dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:25:55     dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:25:55          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
09:26:00       dev8-0      0.60      0.00      0.30      0.50      0.01     13.00     13.00      0.78
09:26:00      dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:26:00      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09:26:00     dev253-0      0.60      0.00      0.50      0.83      0.01     12.67     13.00      0.78
09:26:00     dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
Average:       dev8-0      0.20      0.00      0.10      0.50      0.00     13.00     13.00      0.26
Average:      dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-0      0.20      0.00      0.17      0.83      0.00     12.67     13.00      0.26
Average:     dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

La colonne DEV indentifie les disques par leurs majeurs et mineurs. Pour voir les informations avec les noms des disques, ajoutez l'option -p :

[root@centos8 ~]# sar -p -d 5 3
Linux 4.18.0-305.3.1.el8.x86_64 (centos8.ittraining.loc)        30/06/21        _x86_64_        (8 CPU)

07:48:32          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
07:48:37          sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:37          sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:37          sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:37    cl_centos8-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:37    cl_centos8-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

07:48:37          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
07:48:42          sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:42          sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:42          sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:42    cl_centos8-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:42    cl_centos8-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

07:48:42          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
07:48:47          sda      0.40      0.00      0.40      1.00      0.02     56.00     56.50      2.26
07:48:47          sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:47          sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07:48:47    cl_centos8-root      0.40      0.00      0.80      2.00      0.02     56.00     56.50      2.26
07:48:47    cl_centos8-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
Average:          sda      0.13      0.00      0.13      1.00      0.01     56.00     56.50      0.75
Average:          sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:          sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    cl_centos8-root      0.13      0.00      0.27      2.00      0.01     56.00     56.50      0.75
Average:    cl_centos8-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Les options de la commande sar sont :

[root@centos8 ~]# sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports (report name between square brackets):
        -B      Paging statistics [A_PAGE]
        -b      I/O and transfer rate statistics [A_IO]
        -d      Block devices statistics [A_DISK]
        -F [ MOUNT ]
                Filesystems statistics [A_FS]
        -H      Hugepages utilization statistics [A_HUGE]
        -I { <int_list> | SUM | ALL }
                Interrupts statistics [A_IRQ]
        -m { <keyword> [,...] | ALL }
                Power management statistics [A_PWR_...]
                Keywords are:
                CPU     CPU instantaneous clock frequency
                FAN     Fans speed
                FREQ    CPU average clock frequency
                IN      Voltage inputs
                TEMP    Devices temperature
                USB     USB devices plugged into the system
        -n { <keyword> [,...] | ALL }
                Network statistics [A_NET_...]
                Keywords are:
                DEV     Network interfaces
                EDEV    Network interfaces (errors)
                NFS     NFS client
                NFSD    NFS server
                SOCK    Sockets (v4)
                IP      IP traffic      (v4)
                EIP     IP traffic      (v4) (errors)
                ICMP    ICMP traffic    (v4)
                EICMP   ICMP traffic    (v4) (errors)
                TCP     TCP traffic     (v4)
                ETCP    TCP traffic     (v4) (errors)
                UDP     UDP traffic     (v4)
                SOCK6   Sockets (v6)
                IP6     IP traffic      (v6)
                EIP6    IP traffic      (v6) (errors)
                ICMP6   ICMP traffic    (v6)
                EICMP6  ICMP traffic    (v6) (errors)
                UDP6    UDP traffic     (v6)
                FC      Fibre channel HBAs
                SOFT    Software-based network processing
        -q      Queue length and load average statistics [A_QUEUE]
        -r [ ALL ]
                Memory utilization statistics [A_MEMORY]
        -S      Swap space utilization statistics [A_MEMORY]
        -u [ ALL ]
                CPU utilization statistics [A_CPU]
        -v      Kernel tables statistics [A_KTABLES]
        -W      Swapping statistics [A_SWAP]
        -w      Task creation and system switching statistics [A_PCSW]
        -y      TTY devices statistics [A_SERIAL]

Modules usb

L'USB (Universal Serial Bus) est un bus de données qui peut offrir des taux de transfert jusqu'à 480Mb/s sous la version 2.0 et jusqu'à 4.8 Gb/s sous la version 3.0. Les modules nécessaires pour les contrôleurs USB sont :

Version USB Module Nom Complet
1.0\1.1 UHCI Universal Controller Host Interface
OHCI Open Controller Host Interface
2.0 EHCI Enhanced Host Controller Interface
3.0 XHCI Extensible Host Controller Interface

Le tableau suivant liste les modules courrament chargés en fonction du périphérique utilisé :

Module Type de Périphérique
usb_storage Supports de masse
usbhid Periphériques HID (Human Interface Device)
snd-usb-audio Cartes son usb
usbvidéo Cartes vidéo et d'acquisition
irda-usb Périphériques infrarouges
usbnet Cartes réseaux usb

Les modules peuvent être chargés par un des moyens suivants :

  • INITrd,
  • Le processus init (systemd),
  • kmod, d'une manière dynamique et transparente lors du branchement du périphérique,
  • udev,
  • manuellement.

udev

Depuis le noyau Linux 2.6 Linux est capable de détecter des périphériques branchés à chaud. Cette technologie s'appelle le hotplugging. Le hotplugging est obtenu grâce à l'utilisation de trois composants :

  • Udev,
  • HAL,
  • Dbus.

Les rôles de chaque composant sont les suivants :

  • Udev se charge de créer et supprimer d'une manière dynamique les nœuds dans le répertoire /dev,
  • HAL obtient des informations à partir d'Udev et créé un fichier au format XML représentant le périphérique branché. Il informe ensuite Nautilus en utilisant le Dbus,
  • Dbus joue le rôle d'un bus système qui est utilisé pour la communication inter-processus.

Lors de démarrage de Linux, Udev joue un rôle important :

  • Au démarrage tmpfs est monté sur /dev,
  • Udev copie les éventuels nœuds statiques de /lib/udev/devices vers /dev,
  • le démon udevd collecte des données appelées uevents du noyau et cherche une règle correspondante dans le répertoire /lib/udev/rules.d/,
  • Udev crée les nœuds et liens symboliques spécifiés dans la règle identifiée,
  • Udev stocke les règles contenues dans /lib/udev/rules.d/*.rules en mémoire,
  • En cas de modification des ces règles, Udev met à jour la mémoire.

Udev repose sur le filesystem sysfs monté sur /sys qui permet de rendre les périphériques visibles à Udev dans l'User Space. Par exemple, lors du branchement d'une clé USB, Udev crée /dev/sdb1 automatiquement et utilise les informations contenues dans le fichier /lib/modules/`uname -r`/modules.alias pour trouver le pilote nécessaire :

Le fichier de configuration principal d'Udev est /etc/udev/udev.conf :

[root@centos8 ~]# cat /etc/udev/udev.conf
# see udev.conf(5) for details
#
# udevd is also started in the initrd.  When this file is modified you might
# also want to rebuild the initrd, so that it will include the modified configuration.

#udev_log="info"

Les fichiers de règles se trouvent dans /lib/udev/rules.d/ :

[root@centos8 ~]# ls /lib/udev/rules.d/
01-md-raid-creating.rules              70-uaccess.rules
10-dm.rules                            70-wacom.rules
11-dm-lvm.rules                        71-biosdevname.rules
11-dm-mpath.rules                      71-nvmf-iopolicy-netapp.rules
11-dm-parts.rules                      71-prefixdevname.rules
13-dm-disk.rules                       71-seat.rules
39-usbmuxd.rules                       73-idrac.rules
40-elevator.rules                      73-seat-late.rules
40-libgphoto2.rules                    75-net-description.rules
40-redhat.rules                        75-probe_mtd.rules
40-usb-blacklist.rules                 75-rdma-description.rules
40-usb_modeswitch.rules                77-mm-cinterion-port-types.rules
50-udev-default.rules                  77-mm-dell-port-types.rules
60-alias-kmsg.rules                    77-mm-ericsson-mbm.rules
60-block.rules                         77-mm-fibocom-port-types.rules
60-cdrom_id.rules                      77-mm-haier-port-types.rules
60-drm.rules                           77-mm-huawei-net-port-types.rules
60-evdev.rules                         77-mm-longcheer-port-types.rules
60-fido-id.rules                       77-mm-mtk-port-types.rules
60-input-id.rules                      77-mm-nokia-port-types.rules
60-libfprint-2-autosuspend.rules       77-mm-pcmcia-device-blacklist.rules
60-net.rules                           77-mm-quectel-port-types.rules
60-persistent-alsa.rules               77-mm-sierra.rules
60-persistent-input.rules              77-mm-simtech-port-types.rules
60-persistent-storage.rules            77-mm-telit-port-types.rules
60-persistent-storage-tape.rules       77-mm-ublox-port-types.rules
60-persistent-v4l.rules                77-mm-usb-device-blacklist.rules
60-raw.rules                           77-mm-usb-serial-adapters-greylist.rules
60-rdma-ndd.rules                      77-mm-x22x-port-types.rules
60-rdma-persistent-naming.rules        77-mm-zte-port-types.rules
60-sensor.rules                        78-sound-card.rules
60-serial.rules                        80-drivers.rules
60-tpm-udev.rules                      80-iio-sensor-proxy.rules
61-gdm.rules                           80-libinput-device-groups.rules
61-gnome-bluetooth-rfkill.rules        80-mm-candidate.rules
61-gnome-settings-daemon-rfkill.rules  80-net-setup-link.rules
61-scsi-sg3_id.rules                   80-udisks2.rules
62-multipath.rules                     81-kvm-rhel.rules
63-fc-wwpn-id.rules                    84-nm-drivers.rules
63-md-raid-arrays.rules                85-nm-unmanaged.rules
63-scsi-sg3_symlink.rules              85-regulatory.rules
64-btrfs.rules                         90-alsa-restore.rules
64-md-raid-assembly.rules              90-bolt.rules
65-libwacom.rules                      90-fwupd-devices.rules
65-md-incremental.rules                90-iprutils.rules
65-sane-backends.rules                 90-libinput-fuzz-override.rules
66-kpartx.rules                        90-nm-thunderbolt.rules
68-del-part-nodes.rules                90-pulseaudio.rules
69-btattach-bcm.rules                  90-rdma-hw-modules.rules
69-cd-sensors.rules                    90-rdma-ulp-modules.rules
69-dm-lvm-metad.rules                  90-rdma-umad.rules
69-libmtp.rules                        90-vconsole.rules
69-md-clustered-confirm-device.rules   91-drm-modeset.rules
70-hypervfcopy.rules                   95-cd-devices.rules
70-hypervkvp.rules                     95-dm-notify.rules
70-hypervvss.rules                     95-upower-csr.rules
70-joystick.rules                      95-upower-hid.rules
70-mouse.rules                         95-upower-wup.rules
70-nvmf-autoconnect.rules              98-kexec.rules
70-power-switch.rules                  99-qemu-guest-agent.rules
70-printers.rules                      99-systemd.rules
70-spice-vdagentd.rules                99-vmware-scsi-udev.rules
70-touchpad.rules

Important : Il vous est possible d'ajouter des règles si besoin est. Dans ce cas, créez un fichier 99-local.rules est éditez-le au lieu d'éditer les fichiers existants.

Comme indique le nom de chaque fichier, le contenu est composé de règles à l'attention d'udev. Le fichier des règles par défaut est le 50-udev-default.rules :

[root@centos8 ~]# cat /lib/udev/rules.d/50-udev-default.rules | more
# do not edit this file, it will be overwritten on update

# run a command on remove events
ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
ACTION=="remove", GOTO="default_end"

SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"

# select "system RTC" or just use the first one
SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc"
SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100"

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"

ACTION!="add", GOTO="default_end"

SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"

SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"

SUBSYSTEM=="input", GROUP="input"
SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664"

SUBSYSTEM=="video4linux", GROUP="video"
SUBSYSTEM=="graphics", GROUP="video"
SUBSYSTEM=="drm", KERNEL!="renderD*", GROUP="video"
SUBSYSTEM=="dvb", GROUP="video"
SUBSYSTEM=="media", GROUP="video"
SUBSYSTEM=="cec", GROUP="video"

SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="render", MODE="0666"
SUBSYSTEM=="kfd", GROUP="render", MODE="0666"

SUBSYSTEM=="sound", GROUP="audio", \
  OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer"
--More--

Chaque règle prend la forme suivante :

KEY, [KEY, …] NAME [, SYMLINK]

Chaque KEY est un champ au format type=valeur qui doit correspondre à un périphérique unique. La valeur de type peut prendre plusieurs formes :

Type Description Exemples
BUS Type de bus usb, scsi, ide
KERNEL Le nom par défault du périphérique donné par le noyau hda, ttyUSB0, lp0
SUBSYSTEM Le nom noyau du sous-système, généralement identique à la valeur du BUS usb, scsi
DRIVER Le nom du pilote qui contrôle le périphérique usb-storage
ID Le numéro du périphérique sur son bus PCI bus id, USB id
PLACE Ne concerne que les périphériques USB et donne la position topologique du périphérique sur son bus S/O
SYSFS{filename} Le nom du fichier dans /sys pour le périphérique. Ce fichier contient le fabricant, le label, le numéro de série et UUID du périphérique. La vérification de jusqu'à 5 fichiers est possible par règle S/O
PROGRAM Ceci permet à Udev d'appeler un programme externe pour nommer un périphérique S/O
RESULT Valeur à comparer au résultat de PROGRAM S/O

NAME et SYMLINK sont utilisées pour stipuler ce que Udev doit faire avec le périphérique :

Type Description Exemples
NAME Le nome du nœud dans /dev S/O
SYMLINK Le ou les lien(s) symbolique(s) qui pointe(nt) vers le NAME S/O

La commande udevadm

Pour obtenir de l'information sur un périphérique il convient d'utiliser la commande udevadm :

[root@centos8 ~]# udevadm info --query=all -n /dev/sda
P: /devices/pci0000:00/0000:00:07.0/ata3/host2/target2:0:0/2:0:0:0/block/sda
N: sda
S: disk/by-id/ata-QEMU_HARDDISK_QM00005
S: disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00005
S: disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00005
S: disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00005
S: disk/by-path/pci-0000:00:07.0-ata-1
E: DEVLINKS=/dev/disk/by-path/pci-0000:00:07.0-ata-1 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00005 /dev/disk/by-id/ata-QEMU_HARDDISK_QM00005 /dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00005 /dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00005
E: DEVNAME=/dev/sda
E: DEVPATH=/devices/pci0000:00/0000:00:07.0/ata3/host2/target2:0:0/2:0:0:0/block/sda
E: DEVTYPE=disk
E: ID_ATA=1
E: ID_ATA_FEATURE_SET_SMART=1
E: ID_ATA_FEATURE_SET_SMART_ENABLED=1
E: ID_ATA_SATA=1
E: ID_ATA_WRITE_CACHE=1
E: ID_ATA_WRITE_CACHE_ENABLED=1
E: ID_BUS=ata
E: ID_MODEL=QEMU_HARDDISK
E: ID_MODEL_ENC=QEMU\x20HARDDISK\x20\x20\x20
E: ID_PART_TABLE_TYPE=dos
E: ID_PART_TABLE_UUID=b39ec5c8
E: ID_PATH=pci-0000:00:07.0-ata-1
E: ID_PATH_TAG=pci-0000_00_07_0-ata-1
E: ID_REVISION=2.5+
E: ID_SCSI=1
E: ID_SCSI_INQUIRY=1
E: ID_SERIAL=QEMU_HARDDISK_QM00005
E: ID_SERIAL_SHORT=QM00005
E: ID_TYPE=disk
E: ID_VENDOR=ATA
E: ID_VENDOR_ENC=ATA\x20\x20\x20\x20\x20
E: MAJOR=8
E: MINOR=0
E: SCSI_IDENT_LUN_ATA=QEMU_HARDDISK_QM00005
E: SCSI_IDENT_LUN_T10=ATA_QEMU_HARDDISK_QM00005
E: SCSI_IDENT_LUN_VENDOR=QM00005
E: SCSI_IDENT_SERIAL=QM00005
E: SCSI_MODEL=QEMU_HARDDISK
E: SCSI_MODEL_ENC=QEMU\x20HARDDISK\x20\x20\x20
E: SCSI_REVISION=2.5+
E: SCSI_TPGS=0
E: SCSI_TYPE=disk
E: SCSI_VENDOR=ATA
E: SCSI_VENDOR_ENC=ATA\x20\x20\x20\x20\x20
E: SUBSYSTEM=block
E: TAGS=:systemd:
E: USEC_INITIALIZED=8735808

Les options de la commande

Les options de la commande udevadm sont :

[root@centos8 ~]# udevadm --help
udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]

Send control commands or test the device manager.

Commands:
  info          Query sysfs or the udev database
  trigger       Request events from the kernel
  settle        Wait for pending udev events
  control       Control the udev daemon
  monitor       Listen to kernel and udev events
  test          Test an event run
  test-builtin  Test a built-in command

[root@centos8 ~]# udevadm info --help
udevadm info [OPTIONS] [DEVPATH|FILE]

Query sysfs or the udev database.

  -h --help                   Print this message
  -V --version                Print version of the program
  -q --query=TYPE             Query device information:
       name                     Name of device node
       symlink                  Pointing to node
       path                     sysfs device path
       property                 The device properties
       all                      All values
  -p --path=SYSPATH           sysfs device path used for query or attribute walk
  -n --name=NAME              Node or symlink name used for query or attribute walk
  -r --root                   Prepend dev directory to path names
  -a --attribute-walk         Print all key matches walking along the chain
                              of parent devices
  -d --device-id-of-file=FILE Print major:minor of device containing this file
  -x --export                 Export key/value pairs
  -P --export-prefix          Export the key name with a prefix
  -e --export-db              Export the content of the udev database
  -c --cleanup-db             Clean up the udev database

Système de fichiers /sys

Le système de fichiers virtuel /sys a été introduit avec le noyau Linux 2.6. Son rôle est de décrire le matériel pour udev.

Saisissez la commande suivante :

[root@centos8 ~]# ls -l /sys
total 0
drwxr-xr-x.   2 root root 0 Jul 12 08:15 block
drwxr-xr-x.  33 root root 0 Jul 12 08:15 bus
drwxr-xr-x.  57 root root 0 Jul 12 08:15 class
drwxr-xr-x.   4 root root 0 Jul 12 08:15 dev
drwxr-xr-x.  14 root root 0 Jul 12 08:15 devices
drwxr-xr-x.   6 root root 0 Jul 12 08:15 firmware
drwxr-xr-x.   9 root root 0 Jul 12 08:15 fs
drwxr-xr-x.   2 root root 0 Jul 12 08:15 hypervisor
drwxr-xr-x.  15 root root 0 Jul 12 08:15 kernel
drwxr-xr-x. 153 root root 0 Jul 12 08:15 module
drwxr-xr-x.   2 root root 0 Jul 12 08:15 power

Chaque répertoire contient des informations :

  • block
    • contient des informations sur les périphériques bloc
  • bus
    • contient des informations sur les bus de données
  • class
    • contient des informations sur des classes de matériel
  • devices
    • contient des informations sur la position des périphériques sur les bus
  • firmware
    • contient, entre autre, des informations sur l'ACPI
  • module
    • contient des informations sur les modules du noyau
  • power
    • contient des informations sur la gestion de l'énergie
  • fs
    • contient des informations sur les systèmes de fichiers

Pour illustrer ceci, saisissez la commande suivante :

[root@centos8 ~]# cat /sys/block/sda/sda1/size
2097152

Ce chiffre correspond aux nombre de secteurs.

LAB #4 - Limitation des ressources

4.1 - ulimit

Les ressources disponibles aux utilisateurs peuvent être limitées par l'utilisation de la commande ulimit.

La commande ulimit gère deux types de limite, la limite hard en utilisant l'option -H et la limite soft en utilisant l'option -S. Seul root peut positionner une limite hard et ceci à condition que la limite ne dépasse pas les ressources réelles.

La limite soft est la limite imposée à l'utilisateur par défaut tandis que la limite hard est la limite que l'utilisateur peut atteindre en utilisant la commande ulimit lui-même.

L'utilisateur root peut paramétrer les limites accordées en éditant la fichier /etc/security/limits.conf :

[root@centos8 ~]# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - a user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open file descriptors
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

Important : La valeur de la limite peut être un nombre ou le mot unlimited.

Par exemple, si root inscrit les deux ligne suivantes dans le fichier /etc/security/limits.conf :

...
trainee                soft        nofile          1024
trainee                hard        nofile          4096
...

la limite du nombre de fichiers ouverts simultanément par trainee est de 1 024. Par contre, trainee a la possibilité d'augmenter cette limite jusqu'à 4 096 en utilisant la commande suivante :

$ ulimit -n 4096

Pour consulter la liste des limites actuelles, il convient d'utiliser la commande ulimit avec l'option -a :

[root@centos8 ~]# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14702
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14702
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Options de la commande

Les options de ulimit sont :

[root@centos8 ~]# help ulimit
ulimit: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
    Modify shell resource limits.
    
    Provides control over the resources available to the shell and processes
    it creates, on systems that allow such control.
    
    Options:
      -S        use the `soft' resource limit
      -H        use the `hard' resource limit
      -a        all current limits are reported
      -b        the socket buffer size
      -c        the maximum size of core files created
      -d        the maximum size of a process's data segment
      -e        the maximum scheduling priority (`nice')
      -f        the maximum size of files written by the shell and its children
      -i        the maximum number of pending signals
      -k        the maximum number of kqueues allocated for this process
      -l        the maximum size a process may lock into memory
      -m        the maximum resident set size
      -n        the maximum number of open file descriptors
      -p        the pipe buffer size
      -q        the maximum number of bytes in POSIX message queues
      -r        the maximum real-time scheduling priority
      -s        the maximum stack size
      -t        the maximum amount of cpu time in seconds
      -u        the maximum number of user processes
      -v        the size of virtual memory
      -x        the maximum number of file locks
      -P        the maximum number of pseudoterminals
      -T        the maximum number of threads
    
    Not all options are available on all platforms.
    
    If LIMIT is given, it is the new value of the specified resource; the
    special LIMIT values `soft', `hard', and `unlimited' stand for the
    current soft limit, the current hard limit, and no limit, respectively.
    Otherwise, the current value of the specified resource is printed.  If
    no option is given, then -f is assumed.
    
    Values are in 1024-byte increments, except for -t, which is in seconds,
    -p, which is in increments of 512 bytes, and -u, which is an unscaled
    number of processes.
    
    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

4.2 - Groupes de Contrôle

Les Groupes de Contrôles (Control Groups) aussi appelés CGroups, sont une façon de contrôler et de limiter des ressources. Les groupes de contrôle permettent l'allocation de ressources, même d'une manière dynamique pendant que le système fonctionne, telles le temps processeur, la mémoire système, la bande réseau, ou une combinaison de ces ressources parmi des groupes de tâches (processus) définis par l'utilisateur et exécutés sur un système.

Les groupes de contrôle sont organisés de manière hiérarchique, comme des processus. Par contre, la comparaison entre les deux démontre que tandis que les processus se trouvent dans une arborescence unique descandant tous du processus init et héritant de l'environnement de leurs parents, les contrôles groupes peuvent être multiples donnant lieu à des arborescences ou hiérarchies multiples qui héritent de certains attributs de leurs groupes de contrôle parents.

Ces hiérarchies multiples et séparés sont necéssaires parce que chaque hiérarchie est attaché à un ou plusieurs sous-système(s) aussi appelés des Contrôleurs de Ressources ou simplement des Contrôleurs. Les contrôleurs disponibles sous RHEl/CentOS 7 sont :

  • blkio - utilisé pour établir des limites sur l'accès des entrées/sorties à partir et depuis des périphériques blocs,
  • cpu - utilisé pour fournir aux tâches des groupes de contrôle accès au CPU grâce au planificateur,
  • cpuacct - utilisé pour produire des rapports automatiques sur les ressources CPU utilisées par les tâches dans un groupe de contrôle,
  • cpuset - utilisé pour assigner des CPU individuels sur un système multicoeur et des noeuds de mémoire à des tâches dans un groupe de contrôle,
  • devices - utilisé pour autoriser ou pour refuser l'accès des tâches aux périphériques dans un groupe de contrôle,
  • freezer - utilisé pour suspendre ou pour réactiver les tâches dans un groupe de contrôle,
  • memory - utilisé pour établir les limites d'utilisation de la mémoire par les tâches d'un groupe de contrôle et pour génèrer des rapports automatiques sur les ressources rmémoire utilisées par ces tâches,
  • net_cls - utilisé pour repèrer les paquets réseau avec un identifiant de classe (classid) afin de permettre au contrôleur de trafic Linux, tc, d'identifier les paquets provenant d'une tâche particulière d'un groupe de contrôle.
  • perf_event - utilisé pour permettre le monitoring des CGroups avec l'outil perf,
  • hugetlb - utilisé pour limiter des ressources sur des pages de mémoire virtuelle de grande taille.

Pour visualiser les hiérarchies, il convient d'utiliser la commande lssubsys :

[root@centos8 ~]# lssubsys -am
bash: lssubsys: command not found...
Install package 'libcgroup-tools' to provide command 'lssubsys'? [N/y] y


 * Waiting in queue... 
The following packages have to be installed:
 libcgroup-0.41-19.el8.x86_64   Library to control and monitor control groups
 libcgroup-tools-0.41-19.el8.x86_64     Command-line utility programs, services and daemons for libcgroup
Proceed with changes? [N/y] y


 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
blkio /sys/fs/cgroup/blkio
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls,net_prio /sys/fs/cgroup/net_cls,net_prio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
pids /sys/fs/cgroup/pids
rdma /sys/fs/cgroup/rdma
[root@centos8 ~]# lssubsys -am
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
blkio /sys/fs/cgroup/blkio
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls,net_prio /sys/fs/cgroup/net_cls,net_prio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
pids /sys/fs/cgroup/pids
rdma /sys/fs/cgroup/rdma

Sous RHEL/CentOS 8, Systemd organise les processus dans chaque CGroup. Par exemple tous les processus démarrés par le serveur Apache se trouveront dans le même CGroup, y compris les scripts CGI. Ceci implique que la gestion des ressources en utilisant des hiérarchies est couplé avec l'arborescence des unités de Systemd.

En haut de l'arborescence des unités de Systemd se trouve la tranche root - -.slice, dont dépend :

  • le system.slice - l'emplacement des services système,
  • le user.slice - l'emplacement des sessions des utilisateurs,
  • le machine.slice - l'emplacement des machines virtuelles et conteneurs.

En dessous des tranches peuvent se trouver :

  • des scopes - des processus crées par fork,
  • des services - des processus créés par une Unité.

Les slices peuvent être visualisés avec la commande suivante :

[root@centos8 ~]# systemctl list-units --type=slice
UNIT                                        LOAD   ACTIVE SUB    DESCRIPTION                                
-.slice                                     loaded active active Root Slice                                 
machine.slice                               loaded active active Virtual Machine and Container Slice        
system-getty.slice                          loaded active active system-getty.slice                         
system-lvm2\x2dpvscan.slice                 loaded active active system-lvm2\x2dpvscan.slice                
system-sshd\x2dkeygen.slice                 loaded active active system-sshd\x2dkeygen.slice                
system-systemd\x2dfsck.slice                loaded active active system-systemd\x2dfsck.slice               
system-systemd\x2dhibernate\x2dresume.slice loaded active active system-systemd\x2dhibernate\x2dresume.slice
system-user\x2druntime\x2ddir.slice         loaded active active system-user\x2druntime\x2ddir.slice        
system-vncserver.slice                      loaded active active system-vncserver.slice                     
system.slice                                loaded active active System Slice                               
user-1000.slice                             loaded active active User Slice of UID 1000                     
user-42.slice                               loaded active active User Slice of UID 42                       
user.slice                                  loaded active active User and Session Slice                     

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

13 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

L'arborescence des unités de Systemd est la suivante :

[root@centos8 ~]# systemd-cgls
Control group /:
-.slice
├─user.slice
│ ├─user-42.slice
│ │ ├─session-c1.scope
│ │ │ ├─1317 gdm-session-worker [pam/gdm-launch-environment]
│ │ │ ├─1459 /usr/libexec/gdm-wayland-session --register-session gnome-session --autostart /usr/share/gdm/greeter/autostart
│ │ │ ├─1856 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
│ │ │ ├─1882 /usr/bin/gnome-shell
│ │ │ ├─2059 /usr/bin/Xwayland :1024 -rootless -terminate -accessx -core -listen 4 -listen 5 -displayfd 6
│ │ │ ├─2132 ibus-daemon --xim --panel disable
│ │ │ ├─2135 /usr/libexec/ibus-dconf
│ │ │ ├─2138 /usr/libexec/ibus-x11 --kill-daemon
│ │ │ ├─2251 /usr/libexec/gsd-xsettings
│ │ │ ├─2261 /usr/libexec/gsd-a11y-settings
│ │ │ ├─2268 /usr/libexec/gsd-clipboard
│ │ │ ├─2271 /usr/libexec/gsd-color
│ │ │ ├─2272 /usr/libexec/gsd-datetime
│ │ │ ├─2273 /usr/libexec/gsd-housekeeping
│ │ │ ├─2274 /usr/libexec/gsd-keyboard
│ │ │ ├─2275 /usr/libexec/gsd-media-keys
│ │ │ ├─2280 /usr/libexec/gsd-mouse
│ │ │ ├─2281 /usr/libexec/gsd-power
│ │ │ ├─2283 /usr/libexec/gsd-print-notifications
│ │ │ ├─2284 /usr/libexec/gsd-rfkill
│ │ │ ├─2285 /usr/libexec/gsd-screensaver-proxy
│ │ │ ├─2290 /usr/libexec/gsd-sharing
│ │ │ ├─2321 /usr/libexec/gsd-smartcard
│ │ │ ├─2328 /usr/libexec/gsd-sound
│ │ │ ├─2333 /usr/libexec/gsd-wacom
│ │ │ └─2432 /usr/libexec/ibus-engine-simple
│ │ └─user@42.service
│ │   ├─xdg-permission-store.service
│ │   │ └─2170 /usr/libexec/xdg-permission-store
│ │   ├─pulseaudio.service
│ │   │ └─1455 /usr/bin/pulseaudio --daemonize=no --log-target=journal
│ │   ├─init.scope
│ │   │ ├─1357 /usr/lib/systemd/systemd --user
│ │   │ └─1377 (sd-pam)
│ │   ├─at-spi-dbus-bus.service
│ │   │ ├─2090 /usr/libexec/at-spi-bus-launcher
│ │   │ ├─2095 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
│ │   │ └─2098 /usr/libexec/at-spi2-registryd --use-gnome-session
│ │   └─dbus.service
│ │     ├─1755 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
│ │     └─2143 /usr/libexec/ibus-portal
│ └─user-1000.slice
│   ├─user@1000.service
│   │ ├─gvfs-goa-volume-monitor.service
│   │ │ └─2369 /usr/libexec/gvfs-goa-volume-monitor
│   │ ├─xdg-permission-store.service
│   │ │ └─2191 /usr/libexec/xdg-permission-store
│   │ ├─tracker-store.service
│   │ │ └─2653 /usr/libexec/tracker-store
│   │ ├─evolution-calendar-factory.service
│   │ │ ├─2605 /usr/libexec/evolution-calendar-factory
│   │ │ └─2706 /usr/libexec/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.Calendarx2605x2 --own-path /org/gnome/evolution>
│   │ ├─pulseaudio.service
│   │ │ └─1456 /usr/bin/pulseaudio --daemonize=no --log-target=journal
│   │ ├─gvfs-daemon.service
│   │ │ ├─1896 /usr/libexec/gvfsd
│   │ │ └─1901 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
│   │ ├─evolution-source-registry.service
│   │ │ └─2206 /usr/libexec/evolution-source-registry
│   │ ├─gvfs-udisks2-volume-monitor.service
│   │ │ └─2243 /usr/libexec/gvfs-udisks2-volume-monitor
│   │ ├─init.scope
│   │ │ ├─1239 /usr/lib/systemd/systemd --user
│   │ │ └─1318 (sd-pam)
│   │ ├─gvfs-gphoto2-volume-monitor.service
│   │ │ └─2269 /usr/libexec/gvfs-gphoto2-volume-monitor
│   │ ├─at-spi-dbus-bus.service
│   │ │ ├─1964 /usr/libexec/at-spi-bus-launcher
│   │ │ ├─1969 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
│   │ │ └─1972 /usr/libexec/at-spi2-registryd --use-gnome-session
│   │ ├─dbus.service
│   │ │ ├─1786 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
│   │ │ ├─2183 /usr/libexec/ibus-portal
│   │ │ ├─2201 /usr/libexec/gnome-shell-calendar-server
│   │ │ ├─2225 /usr/libexec/goa-daemon
│   │ │ ├─2397 /usr/libexec/goa-identity-service
│   │ │ └─2721 /usr/libexec/dconf-service
│   │ ├─evolution-addressbook-factory.service
│   │ │ ├─2727 /usr/libexec/evolution-addressbook-factory
│   │ │ └─2771 /usr/libexec/evolution-addressbook-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.AddressBookx2727x2 --own-path /org/gnome/evo>
│   │ ├─gvfs-mtp-volume-monitor.service
lines 44-86

En utilisant Systemd, plusieurs ressources peuvent être limitées :

  • CPUShares - par défault 1024,
  • MemoryLimit - limite exprimée en Mo ou en Go. Pas de valeur par défaut,
  • BlockIOWeight - valeur entre 10 et 1000. Pas de valeur par défaut,
  • StartupCPUShares - comme CPUShares mais uniquement appliqué pendant le démarrage,
  • StartupBlockIOWeight - comme BlockIOWeight mais uniquement appliqué pendant le démarrage,
  • CPUQuota - utilisé pour limiter le temps CPU, même quand le système ne fait rien.

Important : Consultez le manuel systemd.resource-control(5) pour voir les paramètres CGroup qui peuvent être passés à systemctl.

Limitation de la Mémoire

Commencez par créer le script hello-world.sh qui servira à générer un processus pour travailler avec les CGroups :

[root@centos8 ~]# vi hello-world.sh
[root@centos8 ~]# cat hello-world.sh
#!/bin/bash
while [ 1 ]; do
        echo "hello world"
        sleep 360
done

Rendez le script exécutable et testez-le :

[root@centos8 ~]# chmod u+x hello-world.sh
[root@centos8 ~]# ./hello-world.sh
hello world
^C

Créez maintenant un CGroup dans le sous-système memory appelé helloworld :

[root@centos8 ~]# mkdir /sys/fs/cgroup/memory/helloworld

Par défaut, ce CGroup héritera de l'ensemble de la mémoire disponible. Pour éviter cela, créez maintenant une limite de 40000000 octets pour ce CGroup :

[root@centos8 ~]# echo 40000000 > /sys/fs/cgroup/memory/helloworld/memory.limit_in_bytes
[root@centos8 ~]# cat /sys/fs/cgroup/memory/helloworld/memory.limit_in_bytes
39997440

Important - Notez que les 40 000 000 demandés sont devenus 39 997 440 ce qui correspond à un nombre entier de pages mémoire du noyau de 4Ko. ( 39 997 440 / 4096 = 9 765 ).

Lancez maintenant le script helloworld.sh :

[root@centos8 ~]# ./hello-world.sh &
[1] 35148

[root@centos8 ~]# hello world
[Entrée]

[root@centos8 ~]# ps aux | grep hello-world
root       35148  0.0  0.0  12724  2980 pts/1    S    08:48   0:00 /bin/bash ./hello-world.sh
root       35151  0.0  0.0  12136  1044 pts/1    S+   08:48   0:00 grep --color=auto hello-world

Notez qu'il n'y a pas de limite de la mémoire, ce qui implique l'héritage par défaut :

[root@centos8 ~]# ps -ww -o cgroup 35148
CGROUP
12:memory:/user.slice/user-1000.slice/session-7.scope,7:devices:/user.slice,4:pids:/user.slice/user-1000.slice/session-7.scope,2:blkio:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-7.scope

Insérer le PID de notre script dans le CGroup helloworld :

[root@centos8 ~]# echo 35148 > /sys/fs/cgroup/memory/helloworld/cgroup.procs

Notez maintenant l'héritage de la limitation de la mémoire - 12:memory:/helloworld :

[root@centos8 ~]# ps -ww -o cgroup 35148
CGROUP
12:memory:/helloworld,7:devices:/user.slice,4:pids:/user.slice/user-1000.slice/session-7.scope,2:blkio:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-7.scope

Constatez ensuite l'occupation mémoire réelle :

[root@centos8 ~]# cat /sys/fs/cgroup/memory/helloworld/memory.usage_in_bytes
274432

Tuez le script hello-world.sh :

[root@centos8 ~]# kill 35148
[root@centos8 ~]# ps aux | grep hello-world
root       35307  0.0  0.0  12136  1112 pts/1    S+   08:55   0:00 grep --color=auto hello-world
[1]+  Terminated              ./hello-world.sh

Créez un second CGroup beaucoup plus restrictif :

[root@centos8 ~]# mkdir /sys/fs/cgroup/memory/helloworld1
[root@centos8 ~]# echo 6000 > /sys/fs/cgroup/memory/helloworld1/memory.limit_in_bytes
[root@centos8 ~]# cat /sys/fs/cgroup/memory/helloworld1/memory.limit_in_bytes
4096

Relancez le script hello-world.sh et insérez-le dans le nouveau CGroup :

[root@centos8 ~]# ./hello-world.sh &
[1] 35389

[root@centos8 ~]# hello world
[Entrée]

[root@centos8 ~]# echo 35389 > /sys/fs/cgroup/memory/helloworld1/cgroup.procs

Attendez la prochaine sortie de hello world sur le canal standard puis constatez que le script s'arrête :

[root@centos8 ~]# hello world
[Entrée]
[1]+  Killed                  ./hello-world.sh

La Commande cgcreate

Cette commande permet la création d'un CGroup :

[root@centos8 ~]# cgcreate -g memory:helloworld2
[root@centos8 ~]# ls -l /sys/fs/cgroup/memory/helloworld2/
total 0
-rw-rw-r--. 1 root root 0 Jul 13 10:39 cgroup.clone_children
--w--w----. 1 root root 0 Jul 13 10:39 cgroup.event_control
-rw-rw-r--. 1 root root 0 Jul 13 10:39 cgroup.procs
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.failcnt
--w--w----. 1 root root 0 Jul 13 10:39 memory.force_empty
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.kmem.slabinfo
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.tcp.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.tcp.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.kmem.tcp.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.kmem.tcp.usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.kmem.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.max_usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.memsw.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.memsw.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.memsw.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.memsw.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.move_charge_at_immigrate
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.numa_stat
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.oom_control
----------. 1 root root 0 Jul 13 10:39 memory.pressure_level
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.soft_limit_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.stat
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.swappiness
-r--r--r--. 1 root root 0 Jul 13 10:39 memory.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:39 memory.use_hierarchy
-rw-rw-r--. 1 root root 0 Jul 13 10:39 notify_on_release
-rw-rw-r--. 1 root root 0 Jul 13 10:39 tasks

Il n'existe cependant pas de commande pour affecter une limitation de la mémoire :

[root@centos8 ~]# echo 40000000 > /sys/fs/cgroup/memory/helloworld2/memory.limit_in_bytes
La Commande cgexec

Cette commande permet d'insérer la limitation dans le CGroup et de lancer le script en une seule ligne :

[root@centos8 ~]# cgexec -g memory:helloworld2 ./hello-world.sh &
[1] 37670

[root@centos8 ~]# hello world
[Entrée]

[root@centos8 ~]# 
La Commande cgdelete

Une fois le script terminé, cette commande permet de supprimer le cgroup :

[root@centos8 ~]# ps aux | grep *.sh
root       37670  0.0  0.0  12724  3112 pts/1    S    10:41   0:00 /bin/bash ./hello-world.sh
root       37685  0.0  0.0  12136  1148 pts/1    S+   10:42   0:00 grep --color=auto hello-world.sh

[root@centos8 ~]# kill 37670

root@centos8 ~]# ps aux | grep *.sh
root       37726  0.0  0.0  12136  1156 pts/1    R+   10:43   0:00 grep --color=auto hello-world.sh
[1]+  Terminated              cgexec -g memory:helloworld2 ./hello-world.sh

[root@centos8 ~]# cgdelete memory:helloworld2

[root@centos8 ~]# ls -l /sys/fs/cgroup/memory/helloworld2/
ls: cannot access '/sys/fs/cgroup/memory/helloworld2/': No such file or directory
Le Fichier /etc/cgconfig.conf

Afin de les rendre persistants, il convient d'éditer le fichier /etc/cgconfig.conf :

[root@centos8 ~]# vi /etc/cgconfig.conf
[root@centos8 ~]# cat /etc/cgconfig.conf
#
#  Copyright IBM Corporation. 2007
#
#  Authors:     Balbir Singh <balbir@linux.vnet.ibm.com>
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of version 2.1 of the GNU Lesser General Public License
#  as published by the Free Software Foundation.
#
#  This program is distributed in the hope that it would be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
#
# By default, we expect systemd mounts everything on boot,
# so there is not much to do.
# See man cgconfig.conf for further details, how to create groups
# on system boot using this file.
group helloworld2 {
        cpu {
                cpu.shares = 100;
        }
        memory {
                memory.limit_in_bytes = 40000;
        }
}

Important - Notez la création de deux limitations, une de 40 000 octets de mémoire et l'autre de 100 cpu.shares. Cette dernière est une valeur exprimée sur 1 024, où 1 024 représente 100% du temps CPU. La limite fixée est donc equivalente à 9,77% du temps CPU.

Créez donc les deux CGroups concernés :

[root@centos8 ~]# cgcreate -g memory:helloworld2
[root@centos8 ~]# ls -l /sys/fs/cgroup/memory/helloworld2/
total 0
-rw-rw-r--. 1 root root 0 Jul 13 10:46 cgroup.clone_children
--w--w----. 1 root root 0 Jul 13 10:46 cgroup.event_control
-rw-rw-r--. 1 root root 0 Jul 13 10:46 cgroup.procs
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.failcnt
--w--w----. 1 root root 0 Jul 13 10:46 memory.force_empty
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.kmem.slabinfo
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.tcp.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.tcp.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.kmem.tcp.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.kmem.tcp.usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.kmem.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.max_usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.memsw.failcnt
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.memsw.limit_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.memsw.max_usage_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.memsw.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.move_charge_at_immigrate
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.numa_stat
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.oom_control
----------. 1 root root 0 Jul 13 10:46 memory.pressure_level
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.soft_limit_in_bytes
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.stat
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.swappiness
-r--r--r--. 1 root root 0 Jul 13 10:46 memory.usage_in_bytes
-rw-rw-r--. 1 root root 0 Jul 13 10:46 memory.use_hierarchy
-rw-rw-r--. 1 root root 0 Jul 13 10:46 notify_on_release
-rw-rw-r--. 1 root root 0 Jul 13 10:46 tasks
[root@centos8 ~]# cgcreate -g cpu:helloworld2
[root@centos8 ~]# ls -l /sys/fs/cgroup/cpu/helloworld2/
total 0
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cgroup.clone_children
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cgroup.procs
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.stat
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpuacct.usage
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_all
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_percpu
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_percpu_sys
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_percpu_user
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_sys
-r--r--r--. 1 root root 0 Jul 13 10:47 cpuacct.usage_user
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpu.cfs_period_us
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpu.cfs_quota_us
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpu.rt_period_us
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpu.rt_runtime_us
-rw-rw-r--. 1 root root 0 Jul 13 10:47 cpu.shares
-r--r--r--. 1 root root 0 Jul 13 10:47 cpu.stat
-rw-rw-r--. 1 root root 0 Jul 13 10:47 notify_on_release
-rw-rw-r--. 1 root root 0 Jul 13 10:47 tasks
La Commande cgconfigparser

Appliquez le contenu du fichier /etc/cgconfig.conf grâce à l'utilisation de la commande cgconfigparser :

[root@centos8 ~]# cgconfigparser -l /etc/cgconfig.conf
[root@centos8 ~]# cat /sys/fs/cgroup/memory/helloworld2/memory.limit_in_bytes
36864
[root@centos8 ~]# cat /sys/fs/cgroup/cpu/helloworld2/cpu.shares
100

Copyright © 2024 Hugh Norris.

Menu