溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux常用命令-性能命令的用法是什么

發(fā)布時(shí)間:2021-03-15 11:17:49 來源:億速云 閱讀:244 作者:TREX 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Linux常用命令-性能命令的用法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Linux常用命令-性能命令的用法是什么”吧!

本文介紹Linux常用性能統(tǒng)計(jì)分析命令,監(jiān)控進(jìn)程或者系統(tǒng)性能。主要包括CPU(top、mpstat)、內(nèi)存(vmstat、free)、I/O(iostat)、網(wǎng)絡(luò)性能(sar)、系統(tǒng)日志信息(demsg)、查看進(jìn)程狀態(tài)(pidstat)。下面簡要介紹這些命令的使用方法。

mpstat、iostat、pidstat和sr命令需要安裝sysstat軟件包,sysstat包含了系統(tǒng)性能監(jiān)測(cè)工具,安裝方法如下:

yum install sysstat # CentOS
apt-get install sysstat # Ubuntu

負(fù)載

CPU負(fù)載(cpu load)指的是某個(gè)時(shí)間點(diǎn)進(jìn)程對(duì)系統(tǒng)產(chǎn)生的壓力。表示特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù),如果一個(gè)進(jìn)程滿足以下條件則其就會(huì)位于運(yùn)行隊(duì)列中:

  • 它沒有在等待IO操作的結(jié)果

  • 它沒有主動(dòng)進(jìn)入等待狀態(tài)(也就是沒有調(diào)用'wait')

  • 沒有被停止(例如:等待終止)

單CPU滿負(fù)荷運(yùn)行時(shí)cpu_load為1,當(dāng)多個(gè)CPU或多核時(shí),相當(dāng)于大橋有多個(gè)車道,滿負(fù)荷運(yùn)行時(shí)cpu_load值為CPU數(shù)或多核數(shù);CPU負(fù)載的計(jì)算(以單CPU為例),假設(shè)一分鐘內(nèi)執(zhí)行10個(gè)任務(wù)代表滿負(fù)荷,當(dāng)一分鐘給出30個(gè)任務(wù)時(shí),CPU只能處理10個(gè),剩余20個(gè)不能處理,cpu_load=3;

Linux常用命令-性能命令的用法是什么

單核CPU

  • cpu load = 1,滿負(fù)載運(yùn)行

  • cpu load = 0.5,半負(fù)載運(yùn)行

  • cpu load = 1.7,超負(fù)載運(yùn)行

一般來說,每個(gè)CPU內(nèi)核當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3,則系統(tǒng)運(yùn)行表現(xiàn)良好!

如果多核cpu,需要累加4核cpu<12

uptime

uptime命令顯示的平均負(fù)載包括了正在或準(zhǔn)備運(yùn)行在CPU上的進(jìn)程和阻塞在不可中斷睡眠狀態(tài)(uninterruptible) I/O(通常是磁盤I/O)上的進(jìn)程。

[root@server ~]# uptime
 16:54:53 up 29 days, 2:02, 1 user, load average: 0.03, 0.03, 0.00
[root@server ~]# cat /proc/loadavg
0.03 0.03 0.00 3/166 16903
  • 顯示最近1分鐘、5分鐘、15分鐘系統(tǒng)負(fù)載的移動(dòng)平均值,它們共同展現(xiàn)了負(fù)載隨時(shí)間變動(dòng)的情況。

  • 3:正在運(yùn)行的進(jìn)程數(shù),166:總的進(jìn)程數(shù),16903:最近運(yùn)行進(jìn)程的ID。

ps和top命令

ps命令

ps命令是ProcessStatus的縮寫,用于查看系統(tǒng)進(jìn)程信息

  • -e,-A:顯示所有進(jìn)程,包括其他用戶的進(jìn)程

  • -f:顯示完整格式

  • -l:顯示長列表

  • -a:所有進(jìn)程,加上-x參數(shù)會(huì)顯示沒有控制終端的進(jìn)程

  • -u:username,顯示指定用戶的進(jìn)程,例如ps -u root

  • -x:顯示當(dāng)前用戶在所有終端下的進(jìn)程

  • -aux:顯示所有進(jìn)程,包括所有用戶,分組情況

ps常用用法,通常與grep組合使用

1.顯示dhcpd進(jìn)程ps ax | grep dhcpd | grep -v grep 

2.ps-ef
查看全格式的全部進(jìn)程

3.ps-aux
顯示所有進(jìn)程

按照CPU或者內(nèi)存用量來篩選進(jìn)程:

ps -aux --sort -pcpu
# 或
ps -aux --sort -pmem
終止進(jìn)程
# 強(qiáng)制中斷正在執(zhí)行的命令,如,命令長時(shí)間沒有響應(yīng)的情況下
Ctrl+C組合鍵

# kill命令
kill -9 進(jìn)程ID
# killall命令:終止指定名稱的所有進(jìn)程
killall -9 dhclient
top命令

ps命令列出的是當(dāng)前進(jìn)程的快照,top可用于持續(xù)監(jiān)視系統(tǒng)性能,
動(dòng)態(tài)顯示進(jìn)程信息。

  • -n 獲取多次cpu的執(zhí)行情況,top -n 4:只更新4次

  • -d 間隔時(shí)間,top -d 4:每隔4秒更新一次

  • -p 獲取指定端口進(jìn)程的數(shù)據(jù),top -p 22

每隔1秒檢測(cè)指定進(jìn)程的cpu,檢測(cè)20次

top -d 1 -n 20
示例

打印指定pid進(jìn)程的cpu信息,間隔時(shí)間為1s,打印20次

Linux常用命令-性能命令的用法是什么

查看進(jìn)程的pid:

ps -ef | grep systemd

Linux常用命令-性能命令的用法是什么

循環(huán)打印

# 打印一次
top -p 1 -n 1 | grep systemd | awk '{print $10}'
# 循環(huán)打印20次
for i in {1..20};do top -p 1 -n 1 | grep systemd | awk '{print $10}';sleep 1s;done

for((i=0;i<20;i++));do top -p 1 -n 1 | grep systemd | awk '{print $10}';sleep 1s;done
dmesg | tail

默認(rèn)顯示最新的10個(gè)系統(tǒng)信息,可以查看導(dǎo)致性能問題的錯(cuò)誤信息。

1. 顯示最新的20個(gè)系統(tǒng)信息

[root@centos7 ~]# dmesg | tail -20
[ 15.356358] RPC: Registered named UNIX socket transport module.
[ 15.356360] RPC: Registered udp transport module.
[ 15.356361] RPC: Registered tcp transport module.
[ 15.356362] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 15.551529] type=1305 audit(1584428235.986:4): audit_pid=1054 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
[ 19.223990] NET: Registered protocol family 40
[ 23.857606] ip6_tables: (C) 2000-2006 Netfilter Core Team
[ 24.130255] Ebtables v2.0 registered
[ 24.366128] Netfilter messages via NETLINK v0.30.
[ 24.418582] ip_set: protocol 7
[ 24.517273] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[ 24.521156] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[ 24.524658] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[ 24.524669] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
[ 24.528687] IPv6: ADDRCONF(NETDEV_UP): ens34: link is not ready
[ 24.532350] e1000: ens34 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[ 24.535760] IPv6: ADDRCONF(NETDEV_UP): ens34: link is not ready
[ 24.574912] IPv6: ADDRCONF(NETDEV_UP): ens34: link is not ready
[ 25.391535] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 25.525351] IPv6: ADDRCONF(NETDEV_CHANGE): ens34: link becomes ready
[root@centos7 ~]#

2. 顯示開始的20個(gè)系統(tǒng)信息

[root@centos7 ~]# dmesg | head -20
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1062.el7.x86_64 root=UUID=d7dc0c9e-a27d-4239-aba4-7c2e51d9fc93 ro crashkernel=auto spectre_v2=retpoline rhgb quiet LANG=en_US.UTF-8
[ 0.000000] Disabled fast string operations
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007fedffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000007fee0000-0x000000007fefefff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000007feff000-0x000000007fefffff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x000000007ff00000-0x000000007fffffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] SMBIOS 2.7 present.
[root@centos7 ~]#

vmstat 1

全稱 virtual memory stat,逐行輸出虛擬內(nèi)存狀態(tài)統(tǒng)計(jì)信息

[root@centos7 ~]# vmstat
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 1424832 2084 195100 0 0 47 4 45 55 0 0 99 1 0

vmstat 1 :每隔一秒打印一次

[root@centos7 ~]#
[root@centos7 ~]# vmstat 1 #1s打印一個(gè)
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 1424472 2084 195120 0 0 28 2 30 37 0 0 99 1 0
0 0 0 1424456 2084 195120 0 0 0 0 38 53 0 0 100 0 0
0 0 0 1424456 2084

參數(shù)解釋:

  • r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量

  • b: 等待IO的進(jìn)程數(shù)量

  • swpd:使用的虛擬內(nèi)存

  • free:可用內(nèi)存

  • buff:用作緩沖的內(nèi)存大小

  • cache:用作緩存的內(nèi)存大小

  • us:用戶進(jìn)程執(zhí)行時(shí)間(user time)

  • sy:系統(tǒng)進(jìn)程執(zhí)行時(shí)間(system time

  • id:空閑時(shí)間(包括IO等待時(shí)間),中央處理器的空閑時(shí)間

  • wa:等待IO時(shí)間

free -m

查看linux內(nèi)存使用情況

[root@centos7 ~]# free -m
  total used free shared buff/cache available
Mem:  1819  199 1471  9  148 1470
Swap:  4095  0 4095
  • Mem:物理內(nèi)存

  • totel:總的物理內(nèi)存 單位為:M

  • used:用掉的內(nèi)存

  • free:空閑的物理內(nèi)存

  • shared:共享內(nèi)存

  • buff/cache:緩存內(nèi)存

mpstat -P ALL 1

mpstat是Multiprocessor Statistics的縮寫,實(shí)時(shí)監(jiān)控CPU性能。
mpstat -P ALL 1 2:間隔1s打印報(bào)告,共打印2個(gè)

  • -P ALL:監(jiān)控所有CPU

  • 1:間隔時(shí)間1s

  • 2:打印次數(shù)2次

[root@centos7 ~]# mpstat
Linux 3.10.0-1062.el7.x86_64 (centos7) 03/18/2020 _x86_64_ (4 CPU)

04:41:47 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:41:47 AM all 0.66 0.00 1.39 2.65 0.00 0.01 0.00 0.00 0.00 95.28
[root@centos7 ~]#
[root@centos7 ~]# mpstat -P ALL 1
Linux 3.10.0-1062.el7.x86_64 (centos7) 03/18/2020 _x86_64_ (4 CPU)

04:44:11 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:44:11 AM all 0.39 0.00 0.82 1.54 0.00 0.01 0.00 0.00 0.00 97.24
04:44:11 
[root@centos7 ~]#
  • %usr:間隔時(shí)間段內(nèi),用戶態(tài)的CPU時(shí)間(%),不包含 nice值為負(fù)進(jìn)程

  • %nice:nice值為負(fù)進(jìn)程的CPU時(shí)間(%)

  • %sys:核心時(shí)間(%)

  • %iowait:硬盤IO等待時(shí)間(%)

  • %irq:硬中斷時(shí)間(%)

  • %soft:軟中斷時(shí)間(%)

  • %steal:虛擬機(jī)管理器在服務(wù)另一個(gè)虛擬處理器時(shí)虛擬CPU處在非自愿等待下花費(fèi)時(shí)間的百分比

  • %guest:運(yùn)行虛擬處理器時(shí)CPU花費(fèi)時(shí)間的百分比

  • %idle:CPU的空閑時(shí)間(%)

pidstat 1

pidstat用于監(jiān)控全部或指定進(jìn)程的資源占用情況,和top命令類似,但不覆蓋輸出,有利于觀察數(shù)據(jù)隨時(shí)間的變動(dòng)情況,top會(huì)覆蓋之前的輸出

pidstat -p 1 1:-p 指定進(jìn)程號(hào),間隔1s打印pid為1的進(jìn)程

[root@centos7 ~]# pidstat
Linux 3.10.0-1062.el7.x86_64 (centos7) 03/18/2020 _x86_64_ (4 CPU)


04:52:29 AM UID PID %usr %system %guest %CPU CPU Command
04:52:29 AM 0  1 0.05 0.19 0.00 0.24 0 systemd
04:52:29 AM 0  2 0.00 0.00 0.00 0.00 3 kthreadd
04:52:29 AM 0  6 0.00 0.00 0.00 0.00 0 ksoftirqd/0
04:52:29
  • PID:進(jìn)程ID

  • %usr:進(jìn)程在用戶空間占用cpu的百分比

  • %system:進(jìn)程在內(nèi)核空間占用cpu的百分比

  • %guest:進(jìn)程在虛擬機(jī)占用cpu的百分比

  • %CPU:進(jìn)程占用cpu的百分比,各個(gè)CPU上的使用量的總和

  • CPU:處理進(jìn)程的cpu編號(hào)

  • Command:當(dāng)前進(jìn)程對(duì)應(yīng)的命令

iostat 1

iostat用于顯示CPU和塊設(shè)備(磁盤I/O)相關(guān)的統(tǒng)計(jì)信息

[root@centos7 ~]# iostat 1
Linux 3.10.0-1062.el7.x86_64 (centos7) 03/18/2020 _x86_64_ (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
  0.15 0.00 0.34 0.60 0.00 98.92


Device:  tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda  9.46 158.59 15.05 142895 13561
scd0  0.02  1.14  0.00 1028  0

avg-cpu:總體cpu使用情況統(tǒng)計(jì)信息
linux各種設(shè)備文件在/dev目錄下可以看到

  • tps:每秒進(jìn)程向磁盤設(shè)備下發(fā)的IO讀、寫請(qǐng)求數(shù)量

  • kB_read/s:每秒從驅(qū)動(dòng)器讀入的數(shù)據(jù)量

  • kB_wrtn/s:每秒從驅(qū)動(dòng)器寫入的數(shù)據(jù)量

  • kB read:讀入數(shù)據(jù)總量

  • kB wrtn:寫入數(shù)據(jù)總量

sar命令

sar(System ActivityReporter):系統(tǒng)活動(dòng)情況報(bào)告,
是Linux系統(tǒng)性能分析工具??梢杂脕矸治龃疟PI/O、CPU效率、內(nèi)存使用等,下面介紹它的分析網(wǎng)絡(luò)性能用法。

sar -n DEV 1

檢查網(wǎng)絡(luò)流量的工作負(fù)載,可用來檢查網(wǎng)絡(luò)流量是否已經(jīng)達(dá)到限額。

[root@centos7 dev]# sar -n DEV 1
Linux 4.18.0-147.5.1.el8_1.x86_64 (iZ8vb54310gt89j8qct198Z) 12/19/2020 _x86_64_ (1 CPU)

08:08:37 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
08:08:38 PM eth0 4.00 2.00 0.23 0.27 0.00 0.00 0.00 0.00
08:08:38 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:08:38 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sar -n TCP 1

顯示TCP連接情況,可用來描述系統(tǒng)負(fù)載

[root@centos7 dev]# sar -n TCP,ETCP 1
Linux 4.18.0-147.5.1.el8_1.x86_64 (iZ8vb54310gt89j8qct198Z) 12/19/2020 _x86_64_ (1 CPU)

08:15:48 PM active/s passive/s iseg/s oseg/s
08:15:49 PM 0.00 0.00 1.00 1.00

08:15:48 PM atmptf/s estres/s retrans/s isegerr/s orsts/s
08:15:49 PM 0.00 0.00 0.00 0.00 0.00
  • active/s:主動(dòng)連接數(shù),本地每秒創(chuàng)建的TCP連接數(shù)

  • passive/s:被動(dòng)連接數(shù),遠(yuǎn)程每秒創(chuàng)建的TCP連接數(shù)

  • retrans/s:每秒TCP重傳次數(shù)

到此,相信大家對(duì)“Linux常用命令-性能命令的用法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI