В Linux команда dstat
используется для получения информации или статистики о компонентах системы: сетевые подключения, устройства ввода-вывода, ЦП и т. п.
С помощью этого инструмента можно также увидеть пропускную способность для блочных устройств, составляющих одну файловую систему или систему хранения.
Содержание
- Функции
- Установка
- Использование команды dstat в Linux
- Статистика основных компонентов ОС
- Информация, отображаемая инструментом vmstat
- Статистика процесса, использующего большую часть ЦП
- Статистика процесса, использующего большую часть памяти
- Список всех плагинов
- Принудительный вывод значений с плавающей запятой
- Принудительный вывод значения битов
- Вся статистика процессов
- Вывод справки
- Заключение
Функции
Утилита обладает следующими возможностями:
- объединяет информацию
vmstat
,iostat
,ifstat
,netstat
; - показывает статистику точно в том же таймфрейме;
- имеет модульную конструкцию;
- легко расширяется для решения поставленных задач;
- позволяет добавлять собственные счётчики;
- может суммировать сгруппированные блочные/сетевые устройства и указывать их общее количество;
- может отображать прерывания для каждого устройства;
- имеет очень точные таймфреймы и в загруженной системе нет никаких сдвигов во времени;
- показывает точные единицы и ограничивает ошибки преобразования;
- обозначает разные единицы измерения разными цветами;
- показывает промежуточные результаты при задержке > 1;
- позволяет осуществлять экспорт в CSV, из которого можно импортировать в Gnumeric и Excel для создания графиков.
Установка
В Ubuntu:
$ sudo apt install dstat
В Arch Linux:
$ yay -S dstat
Использование команды dstat в Linux
Статистика основных компонентов ОС
oleg@mobile:~:$ dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
13 2 42 44 0| 69k 76k| 0 0 | 247B 734B| 551 1144
6 3 46 46 0| 0 0 | 0 0 | 0 0 | 658 1459
12 4 42 41 0| 44k 0 | 341k 6363B| 0 0 |1473 4607
6 2 47 45 0| 0 0 | 0 0 | 0 0 | 685 1470
7 3 45 45 0| 0 60k| 132B 168B| 0 0 | 703 1317
6 2 47 45 0| 0 192k| 0 0 | 0 0 | 681 1450
6 3 46 45 0| 0 24k| 0 0 | 0 0 | 749 1488
15 5 41 39 0| 0 0 | 360k 6882B| 0 0 |1706 4805
6 1 47 46 0| 0 0 | 60B 60B| 0 0 | 738 1341
...
oleg@mobile:~:$
Была отображена статистика процессора, диска, сети, пейджинга и системы.
Информация, отображаемая инструментом vmstat
oleg@mobile:~:$ dstat --vmstat
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used free buff cach| in out | read writ| int csw |usr sys idl wai stl
0 1.0 6.6|1279M 158M 15.4M 405M| 244B 723B| 68k 76k| 558 1164 | 13 2 42 44 0
0 1.0 0|1279M 158M 15.4M 408M| 0 0 | 0 0 | 653 1275 | 7 1 47 45 0
1.0 1.0 13|1280M 157M 15.5M 408M| 0 0 | 0 40k| 708 1489 | 6 2 47 45 0
0 1.0 0|1281M 156M 15.5M 408M| 0 0 | 0 0 |1103 2588 | 8 2 45 45 0
0 1.0 13|1282M 155M 15.5M 408M| 0 0 | 0 224k| 691 1421 | 6 4 46 45 0
0 1.0 0|1286M 150M 15.5M 408M| 0 0 | 0 0 | 676 1317 | 6 2 47 46 0
...
oleg@mobile:~:$
Приведённая выше команда отобразила статистику процесса и памяти.
Статистика процесса, использующего большую часть ЦП
oleg@mobile:~:$ dstat -c --top-cpu
/usr/bin/dstat:2616: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
import imp
--total-cpu-usage-- -most-expensive-
usr sys idl wai stl| cpu process
13 2 41 44 0|chromium 5.8
11 2 44 43 0|chromium 4.0
11 3 37 49 0|chromium 6.5
9 2 44 45 0|chromium 5.0
14 5 41 40 0|chromium 7.5
8 2 46 44 0|chromium 3.0
27 2 35 36 0|chromium 23
11 3 40 47 0|chromium 5.5
8 1 46 44 0|chromium 3.5
10 2 42 46 0|chromium 6.0
...
oleg@mobile:~:$
Команда вывела статистику процесса, потребляющего большую часть ЦП
Статистика процесса, использующего большую часть памяти
oleg@mobile:~:$ dstat -d --top-mem
/usr/bin/dstat:2616: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
import imp
-dsk/total- --most-expensive-
read writ| memory process
68k 76k|chromium 358M
0 160k|chromium 358M
0 8192B|chromium 358M
0 0 |chromium 358M
0 304k|chromium 358M
0 0 |chromium 358M
0 52k|chromium 360M
0 24k|chromium 359M
0 216k|chromium 359M
0 0 |chromium 354M
...
oleg@mobile:~:$
Была отображена статистики процесса, потребляющего большую часть памяти.
Список всех плагинов
oleg@mobile:~:$ dstat --list
internal:
aio,cpu,cpu-adv,cpu-use,cpu24,disk,disk24,disk24-old,epoch,fs,int,int24,io,ipc,load,lock,mem,mem-adv,net,
page,page24,proc,raw,socket,swap,swap-old,sys,tcp,time,udp,unix,vm,vm-adv,zones
/usr/share/dstat:
battery,battery-remain,condor-queue,cpufreq,dbus,disk-avgqu,disk-avgrq,disk-svctm,disk-tps,disk-util,disk-wait,
dstat,dstat-cpu,dstat-ctxt,dstat-mem,fan,freespace,fuse,gpfs,gpfs-ops,helloworld,ib,innodb-buffer,innodb-io,
innodb-ops,jvm-full,jvm-vm,lustre,md-status,memcache-hits,mongodb-conn,mongodb-mem,mongodb-opcount,mongodb-queue,
mongodb-stats,mysql-io,mysql-keys,mysql5-cmds,mysql5-conn,mysql5-innodb,mysql5-innodb-basic,mysql5-innodb-extra,
mysql5-io,mysql5-keys,net-packets,nfs3,nfs3-ops,nfsd3,nfsd3-ops,nfsd4-ops,nfsstat4,ntp,postfix,power,proc-count,
qmail,redis,rpc,rpcd,sendmail,snmp-cpu,snmp-load,snmp-mem,snmp-net,snmp-net-err,snmp-sys,snooze,squid,test,
thermal,top-bio,top-bio-adv,top-childwait,top-cpu,top-cpu-adv,top-cputime,top-cputime-avg,top-int,top-io,top-io-adv,
top-latency,top-latency-avg,top-mem,top-oom,utmp,vm-cpu,vm-mem,vm-mem-adv,vmk-hba,vmk-int,vmk-nic,vz-cpu,vz-io,
vz-ubc,wifi,zfs-arc,zfs-l2arc,zfs-zil
oleg@mobile:~:$
Плагины — опции, помогающие отображать статистику. Приведённая выше команда вывела список всех таких плагинов.
Принудительный вывод значений с плавающей запятой
oleg@mobile:~:$ dstat --float
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
13 1.8 41 44 0|66.6k 75.9k| 0 0 | 297B 823B| 584 1238
12 3.5 43 42 0| 0 36.0k| 128k 8207B| 0 0 |1154 3006
5.6 0.5 46 47 0| 0 0 | 0 0 | 0 0 | 575 1290
9.6 1.5 41 48 0| 0 24.0k| 0 0 | 0 0 | 663 1441
5.5 2.0 48 45 0| 0 16.0k| 217B 0 | 0 0 | 658 1292
8.2 2.6 44 45 0| 0 0 | 306B 1323B| 0 0 | 748 1606
9.1 1.0 45 45 0| 0 0 |79.5k 2450B| 0 0 | 909 2280
...
oleg@mobile:~:$
Команда вывела значения с плавающей запятой, которые были скрыты ранее.
Принудительный вывод значения битов
oleg@mobile:~:$ dstat --bits
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
13 2 41 44 0| 544k 633k| 0 0 | 295B 938B| 586 1245
6 2 47 45 0| 0 0 | 0 0 | 0 0 | 656 1450
8 1 48 44 0| 0 459k| 0 0 | 0 0 | 622 1265
7 1 45 47 0| 0 0 | 0 0 | 0 0 | 598 1409
15 3 42 41 0| 0 0 |2406k 120k| 0 0 |1599 4438
26 2 36 36 0| 0 0 | 56k 27k| 0 0 |1050 1513
9 1 44 46 0| 0 131k| 0 0 | 0 0 | 614 1241
11 2 36 52 0| 0 885k| 209k 12k| 0 0 | 845 1875
9 2 46 43 0| 0 0 |1029k 14k| 0 0 | 965 2425
...
oleg@mobile:~:$
Команда вывела все значения в битах, ранее использовавшихся для печати в байтах.
Вся статистика процессов
oleg@mobile:~:$ dstat -a
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
13 2 41 44 0| 66k 77k| 0 0 | 293B 931B| 589 1253
8 2 46 43 0| 0 0 | 235B 168B| 0 0 | 734 1459
9 3 44 44 0| 0 352k| 192k 4735B| 0 0 |1265 3228
7 3 46 44 0| 0 0 | 0 0 | 0 0 | 632 1388
8 1 47 45 0| 0 584k| 0 0 | 0 0 | 668 1311
6 2 46 46 0| 0 4096B| 66B 123B| 0 0 | 661 1463
6 2 45 47 0| 0 0 | 0 0 | 0 0 | 603 1263
7 2 43 49 0| 44k 16k| 237B 480B| 0 0 | 733 1479
9 2 46 44 0| 0 0 | 168k 4566B| 0 0 |1172 2884
8 2 45 45 0| 0 0 | 341B 396B| 0 0 | 697 1500
7 1 46 46 0| 0 44k| 0 228B| 0 0 | 641 1305
...
oleg@mobile:~:$
Команда отобразила всю статистику процессов.
Вывод справки
oleg@mobile:~:$ dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics)
Dstat options:
-c, --cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, --disk enable disk stats
-D total,hda include hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, --load enable load stats
-m, --mem enable memory stats
-n, --net enable network stats
-N eth1,total include eth1 and total
-p, --proc enable process stats
-r, --io enable io stats (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-y, --sys enable system stats
--aio enable aio stats
--fs, --filesystem enable fs stats
--ipc enable ipc stats
--lock enable lock stats
--raw enable raw stats
--socket enable socket stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--vm enable vm stats
--vm-adv enable advanced vm stats
--zones enable zoneinfo stats
--list list all available plugins
--<plugin-name> enable external plugin by name (see --list)
-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total
--bits force bits for values expressed in bytes
--float force float values on screen
--integer force integer values on screen
--bw, --black-on-white change colors for white background terminal
--color force colors
--nocolor disable colors
--noheaders disable repetitive headers
--noupdate disable intermediate updates
--output file write CSV output to file
--profile show profiling statistics when exiting dstat
delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
oleg@mobile:~:$
Команда вывела раздел справки dstat
.
Заключение
Данные, отображаемые в Linux командой dstat
, очень информативны. Приёмы работы с этой утилитой необходимо знать даже начинающим системным администраторам.