1. UC
cat /proc/cpuinfo
# 物理 CPU 个数
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
# 每个 CPU 核心数
cat /proc/cpuinfo | grep 'core id' | sort | uniq | wc -l
# 逻辑 CPU
cat /proc/cpuinfo | grep 'processor' | sort | uniq | wc -l
# mpstat
mpstat
mpstat 2 10
2. Mémoire
cat /proc/meminfo
free -gt
df -hT
du -csh ./*
Mémoire/file d'attente partagée OS IPC :
ipcs #(shmems, queues, semaphores)
Habituellement, nous avons souvent besoin de surveiller l'état d'utilisation de la mémoire. Les commandes couramment utilisées sont free
, vmstat
, top
, dstat -m
etc.
2.1 gratuit
> free -h
total used free shared buffers cached
Mem: 7.7G 6.2G 1.5G 17M 33M 184M
-/+ buffers/cache: 6.0G 1.7G
Swap: 24G 581M 23G
La signification de chaque ligne de données
première ligne Mem
:
total
: mémoire totale7.7G
, taille de la mémoire physique , est la mémoire réelle de la machineused
: Mémoire utilisée6.2G
, cette valeur inclutcached
la mémoire réellement utilisée par l'applicationfree
: mémoire libre1.5G
, taille mémoire inutiliséeshared
: la taille de la mémoire partagée ,17M
buffers
: la taille mémoire occupée par le buffer ,33M
cached
: la taille mémoire occupée par le cache ,184M
Y compris:
total = used + free
La deuxième ligne -/+ buffers/cache
représente la mémoire réellement utilisée par l'application :
- La valeur précédente indique
used - buffers/cached
que la mémoire réellement utilisée par l'application - Cette dernière valeur représente
free + buffers/cached
la mémoire qui peut théoriquement être utilisée
On peut voir que la somme de ces deux valeurs est également
total
La troisième ligne swap
représente l'utilisation de la partition swap : totale, utilisée et inutilisée
cache cache
cache
Représente le cache . Lorsque le système lit un fichier , il lit d'abord les données du disque dur dans la mémoire . Comme le disque dur est beaucoup plus lent que la mémoire, ce processus prendra du temps.
Afin d'améliorer l'efficacité, Linux mettra en cache les fichiers lus en mémoire (principe de localité), même si le programme se termine, le cache ne sera pas libéré automatiquement. Par conséquent, lorsqu'un programme effectue un grand nombre d'opérations de lecture de fichiers, vous constaterez que le taux d'utilisation de la mémoire a augmenté.
Lorsque d'autres programmes ont besoin d'utiliser de la mémoire, Linux libère ces caches inutilisés selon sa propre stratégie de cache (telle que LRU) pour que d'autres programmes les utilisent. Bien sûr, vous pouvez également libérer le cache manuellement :
echo 1 > /proc/sys/vm/drop_caches
tampon tampon
Considérez le scénario d' écriture de fichiers de la mémoire vers le disque dur , car le disque dur est trop lent, si la mémoire doit attendre que les données soient écrites avant de poursuivre les opérations suivantes, l'efficacité sera très faible et il affectent également la vitesse d'exécution du programme, il y a donc un tamponbuffer
.
Lorsque la mémoire doit écrire des données sur le disque dur, elle sera d'abord placée dans le tampon, et la mémoire écrira rapidement les données dans le tampon, et d'autres travaux pourront être poursuivis, tandis que le disque dur pourra lire lentement les données dans le tampon en arrière-plan et enregistrez-le, afin d'améliorer l'efficacité de la lecture et de l'écriture.
Par exemple, lors de la copie d'un fichier de l'ordinateur vers une clé USB, si le fichier est particulièrement volumineux, une telle situation peut parfois se produire : le système indique toujours que la clé USB est en cours d'utilisation même si le fichier a été copié. . C'est la raison du tampon : bien que le programme de copie ait mis les données dans le tampon, il n'a pas écrit toutes les données sur le disque U.
De même, vous pouvez utiliser sync
la commande pour flush buffer
modifier manuellement le contenu :
> sync --help
Usage: sync [OPTION] [FILE]...
Synchronize cached writes to persistent storage
If one or more files are specified, sync only them,
or their containing file systems.
-d, --data sync only file data, no unneeded metadata
-f, --file-system sync the file systems that contain the files
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/sync>
or available locally via: info '(coreutils) sync invocation'
partition d'échange
La partition swapswap
est un concept important dans la mise en œuvre de la mémoire virtuelle. swap
Il s'agit d'utiliser une partie de l'espace sur le disque dur comme mémoire, et le programme en cours d'exécution utilisera la mémoire physique et placera la mémoire inutilisée sur le disque dur, qui s'appelle swap out
. Le fait de replacer la mémoire de la partition d'échange du disque dur dans la mémoire physique s'appelle swap in
.
La partition de swap peut logiquement étendre l'espace mémoire, mais elle ralentira également la vitesse du système, car la vitesse de lecture et d'écriture du disque dur est très lente. Le système Linux place la mémoire rarement utilisée dans la partition de swap.
La différence entre cache et tampon
cache
: En tantpage cache
que mémoire, c'est le cache du système de fichiers , et les données au niveau du fichier seront mises en cachepage cache
dansbuffer
: Commebuffer cache
la mémoire, c'est le cache des blocs du disque , et les données directement exploitées sur le disque seront mises en cache dans le cache tampon
En termes simples : page cache
utilisé pour mettre en cache les données du fichier , buffer cache
utilisé pour mettre en cache les données du disque . Dans le cas d'un système de fichiers, si le fichier est exploité, les données y seront mises en cache page cache
. Si dd
le disque est lu et écrit directement à l'aide d'outils tels que , les données seront mises en cache dans buffer cache
.
2.2 vmstat
vmstat (Virtual Memory Stats, statistiques de la mémoire virtuelle) est une statistique sur la situation globale du système, comprenant des statistiques sur le processus du noyau, la mémoire virtuelle, le disque, les interruptions et l'activité du processeur :
> 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).
> vmstat -SM 1 100 # 1 表示刷新间隔(秒),100 表示打印次数,单位 MB
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 470 188 1154 0 0 0 4 3 0 0 0 99 0 0
0 0 0 470 188 1154 0 0 0 0 112 231 1 1 98 0 0
0 0 0 470 188 1154 0 0 0 0 91 176 0 0 100 0 0
0 0 0 470 188 1154 0 0 0 0 118 229 1 0 99 0 0
0 0 0 470 188 1154 0 0 0 0 78 156 0 0 100 0 0
0 0 0 470 188 1154 0 0 0 64 84 186 0 1 97 2 0
processus
r
Colonne : Indique le nombre de processus en cours d'exécution et en attente de la tranche de temps CPU . Si cette valeur est supérieure au nombre de CPU pendant une longue période, cela signifie que les ressources CPU sont insuffisantes et vous pouvez envisager d'augmenter la CPUb
Colonne : indique le nombre de processus en attente d'une ressource , par exemple en attente d'E/S ou d'échange de mémoire
mémoire
swpn
Colonne : indique la taille de la mémoire commutée sur la partition d'échange . Siswpd
la valeur de n'est pas 0 ou est relativement grande, et que la valeur de et est 0 pendant une longue période, alors cette situation n'affectera pas les performances du système pour le momentsi
êtreso
free
Colonne : la taille actuelle de la mémoire physique librebuff
Colonne : indiquebuffers cache
la taille de la mémoire . Généralement, la lecture et l'écriture du périphérique bloc doivent uniquement être mises en mémoire tampon.cache
Colonne : Indiquepage cache
la taille de la mémoire , qui est généralement utilisée comme cache du système de fichiers , et les fichiers fréquemment consultés seront mis en cache. Si la valeur du cache est relativement grande, cela signifie que le nombre de fichiers mis en cache est important. Si les E/S sontbi
relativement petites à ce moment, cela signifie que le système de fichiers est plus efficace
échanger
si
Colonne : Indiqueswap in
que la mémoire est mise en mémoire physique par la partition swapso
Colonne : Indiqueswap out
que la mémoire inutilisée sera placée dans la partition swap du disque dur
io
bi
Colonne : indique la quantité totale de données lues à partir du périphérique bloc, c'est-à-dire le disque lu, l'unitéKB/s
bo
Colonne : indique la quantité totale de données écrites sur le périphérique bloc, c'est-à-dire écrites sur le disque, l'unitéKB/s
bi+bo
La valeur de référence définie ici1000
, si elle dépasse1000
, et quewa
la valeur est relativement grande, cela signifie que le goulot d'étranglement des performances d'E/S du disque système
système
in
Colonne : Indique le nombre d'interruptions de périphérique par seconde observées pendant un certain intervalle de tempscs
Colonne : Indique le nombre de changements de contexte générés par seconde
Plus les deux valeurs ci-dessus sont grandes, plus le noyau consomme de temps CPU
CPU
us
Colonne : indique le pourcentage de temps pendant lequel le processus utilisateur a consommé le processeur.us
Lorsque la valeur est relativement élevée, cela signifie que le processus utilisateur consomme plus de temps CPU. Si elle est supérieure à 50% pendant une longue période, vous pouvez envisager d'optimiser le programme.sy
Colonne : indique le pourcentage de temps pendant lequel le processus du noyau a consommé le CPU.sy
Lorsque la valeur est relativement élevée, cela signifie que le noyau consomme plus de temps CPU, si elleus+sy
dépasse 80%, cela signifie que les ressources CPU sont insuffisantes.id
Colonne : indique le pourcentage de temps pendant lequel le processeur était inactifwa
Colonne : indique le pourcentage de temps CPU passé par l'attente d'E/S.wa
Plus la valeur est élevée, plus l'attente d'E/S est importante. Siwa
la valeur dépasse 20 %, cela signifie que l'attente d'E/S est sérieusest
Colonne : indique le temps de vol du processeur, pour les machines virtuelles
3. Réseau
3.1 Interface
ifconfig
iftop
ethtool
3.2 Ports
# 端口
netstat -ntlp # TCP
netstat -nulp # UDP
netstat -nxlp # UNIX
netstat -nalp # 不仅展示监听端口,还展示其他阶段的连接
lsof -p <PID> -P
lsof -i :5900
sar -n DEV 1 # 网络流量
ss
ss -s
3.3 tcpdump
sudo tcpdump -i any udp port 20112 and ip[0x1f:02]=0x4e91 -XNnvvv
sudo tcpdump -i any -XNnvvv
sudo tcpdump -i any udp -XNnvvv
sudo tcpdump -i any udp port 20112 -XNnvvv
sudo tcpdump -i any udp port 20112 and ip[0x1f:02]=0x4e91 -XNnvvv
3.4 nethogs
Surveiller le trafic réseau de chaque processus
nethogs
4. Performances d'E/S
iotop
iostat
iostat -kx 2
vmstat -SM
vmstat 2 10
dstat
dstat --top-io --top-bio
5. Processus
top
top -H
htop
ps auxf
ps -eLf # 展示线程
ls /proc/<PID>/task
5.1 haut
Par exemple les commandes les plus couramment utiliséestop
:
Help for Interactive Commands - procps version 3.2.8
Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off.
Z,B Global: 'Z' change color mappings; 'B' disable/enable bold
l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
f,o . Fields/Columns: 'f' add or remove; 'o' change display order
F or O . Select sort field
<,> . Move sort field: '<' next col left; '>' next col right
R,H . Toggle: 'R' normal/reverse sort; 'H' show threads
c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u . Show specific user only
n or # . Set maximum tasks displayed
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W Write configuration file
q Quit
( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
any other key to continue
1
: Afficher l'utilisation de chaque CPUc
: affiche le chemin complet du processusH
: afficher les discussionsP
: Trier - Utilisation CPUM
: tri - utilisation de la mémoireR
: ordre inverseZ
: Modifier les mappages de couleursB
: Désactiver/activer le grasl
: Basculer la charge moyennet
: Basculer les statistiques de tâche/processeurm
: Basculer les infos mémoire
us - Time spent in user space
sy - Time spent in kernel space
ni - Time spent running niced user processes (User defined priority)
id - Time spent in idle operations
wa - Time spent on waiting on IO peripherals (eg. disk)
hi - Time spent handling hardware interrupt routines. (Whenever a peripheral unit want attention form the CPU, it literally pulls a line, to signal the CPU to service it)
来源 | 公众号:网络技术干货圈
si - Time spent handling software interrupt routines. (a piece of code, calls an interrupt routine...)
st - Time spent on involuntary waits by virtual cpu while hypervisor is servicing another processor (stolen from a virtual machine)
5.2 lsof
lsof -P -p 123
6. Tests de performances
stress --cpu 8 \
--io 4 \
--vm 2 \
--vm-bytes 128M \
--timeout 60s
time
Commande
7. Utilisateurs
w
whoami
8. État du système
uptime
htop
vmstat
mpstat
dstat
9. Matériel informatique
lspci
lscpu
lsblk
lsblk -fm # 显示文件系统、权限
lshw -c display
dmidecode
10. Système de fichiers
# 挂载
mount
umount
cat /etc/fstab
# LVM
pvdisplay
pvs
lvdisplay
lvs
vgdisplay
vgs
df -hT
lsof
11. Noyau, interruption
cat /proc/modules
sysctl -a | grep ...
cat /proc/interrupts
12. Journal système, journal du noyau
dmesg
less /var/log/messages
less /var/log/secure
less /var/log/auth
13. tâche chronométrée cron
crontab -l
crontab -l -u nobody
# 查看所有用户的cron
sudo find /var/spool/cron/ | sudo xargs cat
14. Outils de débogage
14.1 performances
14.2 trace
strace
Commande d' impression des appels système, signaux :
strace -p
strace -p 5191 -f
strace -e trace=signal -p 5191
-e trace=open
-e trace=file
-e trace=process
-e trace=network
-e trace=signal
-e trace=ipc
-e trace=desc
-e trace=memory
14,3 ltrace
ltrace
La commande permet d'imprimer l'accès à la bibliothèque de liens dynamiques :
ltrace -p <PID>
ltrace -S # syscall
15. Scénarios
Scénario 1 : Après la connexion au serveur
w # 显示当前登录的用户、登录 IP、正在执行的进程等
last # 看看最近谁登录了服务器、服务器重启时间
uptime # 开机时间、登录用户、平均负载
history # 查看历史命令
Scénario 2 : quelles informations se trouvent dans le répertoire /proc
cat /proc/...
cgroups
cmdline
cpuinfo
crypto
devices
diskstats
filesystems
iomem
ioports
kallsyms
meminfo
modules
partitions
uptime
version
vmstat
Scénario 3 : Exécuter des commandes en arrière-plan
nohup <command> &>[some.log] &
quelques commandes
# 综合
top
htop
glances
dstat & sar
mpstat
# 性能分析
perf
# 进程
ps
pstree -p
pgrep
pkill
pidof
Ctrl+z & jobs & fg
# 网络
ip
ifconfig
dig
ping
traceroute
iftop
pingtop
nload
netstat
vnstat
slurm
scp
tcpdump
# 磁盘 I/O
iotop
iostat
# 虚拟机
virt-top
# 用户
w
whoami
# 运行时间
uptime
# 磁盘
du
df
lsblk
# 权限
chown
chmod
# 服务
systemctl list-unit-files
# 定位
find
locate
# 性能测试
time