目錄
前言
top命令
htop命令
ps命令
free命令
vmstat命令
iosat命令
netstat命令
df命令
du命令
前言
一般來說,Linux性能調(diào)優(yōu)涉及CPU、內(nèi)存和 IO,包括進程、線程、程序堆棧、內(nèi)存、Swap、CPU調(diào)度、內(nèi)存調(diào)度、網(wǎng)絡(luò)連接和IO讀寫等。
本文介紹了Linux查看資源使用情況和性能調(diào)優(yōu)常用的命令,包括top
、htop
、ps
、free
、vmstat
、iostat
、netstat
、df
和du
命令。
top命令
top
命令用來監(jiān)控系統(tǒng)的資源使用情況,包括CPU、內(nèi)存、Swap、進程和線程等。
命令:
#?運行top
top
#?顯示進程的完整命令
top?-c
推薦使用下面的htop命令來代替top命令。
htop命令
htop
命令用來監(jiān)控系統(tǒng)的資源使用情況,包括CPU、內(nèi)存、Swap、進程和線程等。相比top
命令,htop
命令更能更強大,顯示也更加直觀。
命令:
#?運行htop
htop
概要信息說明:
-
CPU使用率:數(shù)字1、2、...表示CPU有幾個核,后面的進度條用不同顏色來表示不同維度的CPU使用率,最后是CPU使用率; -
內(nèi)存使用率:Mem后面的進度條用不同顏色來表示不同維度的內(nèi)存使用率(綠色:used,藍色:buffers,橙色:cache),最后是內(nèi)存使用率(used / total); -
Swap使用率:Swap后面的進度條顯示已用的Swap,最后是Swap使用率(used / total),如果系統(tǒng)關(guān)閉了Swap,則進度條為空,Swap使用率為0K/0K; -
進程和線程統(tǒng)計:Tasks:進程數(shù),thr:線程數(shù),running:正在運行的進程數(shù); -
系統(tǒng)平均負載統(tǒng)計:Load average:前1分鐘平均負載、前5分鐘平均負載和前15分鐘平均負載;負載越低說明CPU越空閑,負載越高說明CPU越忙: -
負載低于0.7 * CPU核數(shù):CPU使用率正常;(道路通暢) -
負載高于0.7 * CPU核數(shù):CPU使用率較高,需要關(guān)注;(道路堵車,需要交警到場疏導(dǎo)交通) -
負載高于1 * CPU核數(shù):CPU使用率過高,需要關(guān)注;(道路嚴重堵車,可能發(fā)生了交通事故,需要交警馬上到現(xiàn)場處理) -
負載高于5 * CPU核數(shù):系統(tǒng)超負荷運轉(zhuǎn),無法正常響應(yīng);(交通癱瘓,可能道路已經(jīng)被水淹無法通行,需要投入搶險力量恢復(fù)交通) -
系統(tǒng)已連續(xù)運行時間:Uptime后面為系統(tǒng)從上次啟動后,已連續(xù)運行時間,可以倒推系統(tǒng)上次啟動時間;
詳細信息說明:
-
PID:進程ID; -
USER:進程所有者; -
PRI:進程優(yōu)先級; -
NI:nice值,負值表示高優(yōu)先級,正值表示低優(yōu)先級; -
VIRT:進程使用的虛擬內(nèi)存(virtual memory); -
RES:進程使用的物理內(nèi)存(physical memory); -
SHR:進程使用的共享內(nèi)存(shared memory); -
S:進程狀態(tài),R(Running)正在運行的進程、S(Sleeping)休眠的進程、T/S(Traced/Stopped) 已停止或中止的進程 或 Z(Zommbie)僵尸進程; -
CPU%:進程使用的CPU時間百分比; -
MEM%:進程使用的內(nèi)存百分比; -
TIME+:進程已連續(xù)運行時間; -
Command:進程的執(zhí)行命令;
常用快捷鍵:
-
上下箭頭:上下滾動查看進程; -
u
:顯示指定用戶的進程; -
P
:按照進程使用的CPU時間百分比排序; -
M
:按照進程使用的內(nèi)存百分比排序; -
T
:按照進程已連續(xù)運行時間排序;
參考:
-
https://linuxtogether.org/htop-command-explanation/ -
https://www.softprayog.in/tutorials/htop-command-in-linux -
https://scoutapm.com/blog/understanding-load-averages -
htop官網(wǎng)
ps命令
#?查看java進程
#?e(every)?所有進程
#?f(full?format)?完整輸出格式
ps?-ef?|?grep?nginx
#?不顯示grep本身
ps?-ef?|?grep?nginx?|?grep?-v?grep
#?獲取指定進程的PID
ps?-ef?|?grep?java?|?grep?jenkins?|?grep?-v?grep?|?awk?'{print?$2}'
#?根據(jù)進程的PID中止進程
ps?-ef?|?grep?java?|?grep?jenkins?|?grep?-v?grep?|?awk?'{print?$2}'?|?xargs?kill?-9
#?查看進程堆棧
#?p(path)?顯示完整路徑
pmap??-p
#?查看9091端口是哪個容器進程
docker?ps?|?grep?9091
ps -ef
格式:
-
UID:進程的UID(用戶) -
PID:進程ID -
PPID:父進程ID -
C:CPU使用時間百分比 -
STIME -
TTY -
TIME -
CMD:啟動進程的命令
free命令
free
命令用來查看內(nèi)存和Swap的使用情況。
命令:
#?以適合閱讀的形式輸出(h:?human)
free?-h
#?以MB格式輸出(m:?MB)
free?-m
#?合計Mem和Swap(t:?total)
free?-h?-t
#?統(tǒng)計3次,每秒1次(c:?count)
free?-h?-c?3
#?統(tǒng)計5次,每2秒統(tǒng)計1次(s:?second)
free?-h?-t?-c?5?-s?2
說明:
-
Total: The amount of RAM installed in your system. -
Used: Equal to? Total
-(Free
+Buffers
+Cache
). -
Free: The amount of memory completely unused by anything. -
Shared: Memory taken by the? tmpfs
?file systems. -
Buffer: The data structures that are maintained to provide an index for everything stored in? Cache
. -
Cache: Data read from the hard drive, modified data waiting to be written back to the hard drive, and other computed values. -
Available: What’s really free. An estimate of the memory in? Free
,?Buffer
, and?Cache
?that could be used to satisfy a memory request.
簡單來說,total是系統(tǒng)總內(nèi)存,used就是系統(tǒng)已用內(nèi)存,total - used 就是系統(tǒng)可用內(nèi)存。
參考:
-
https://www.howtogeek.com/456943/how-to-use-the-free-command-on-linux/
vmstat命令
vmstat
命令用來統(tǒng)計進程、內(nèi)存、Swap、IO和CPU等信息。
命令:
#?運行vmstat
vmstat
#?每5秒統(tǒng)計1次
vmstat?5
#?每5秒統(tǒng)計1次,共統(tǒng)計4次
vmstat?5?4
#?以MB格式輸出內(nèi)存使用情況
vmstat?5?4?-S?M
#?顯示統(tǒng)計概要信息
vmstat?-s
說明:
Proc
-
r: The number of runnable processes. These are processes that have been launched and are either running or are waiting for their next time-sliced burst of CPU cycles. -
b: The number of processes in uninterruptible sleep. The process isn’t sleeping, it is performing a blocking system call, and it cannot be interrupted until it has completed its current action. Typically the process is a device driver waiting for some resource to come free. Any queued interrupts for that process are handled when the process resumes its usual activity.
Memory
-
swpd: the amount of virtual memory used. In other words, how much memory has been swapped out., -
free: the amount of idle (currently unused) memory. -
buff: the amount of memory used as buffers. -
cache: the amount of memory used as cache.
Swap
-
si: Amount of virtual memory swapped? in?from swap space. -
so: Amount of virtual memory swapped? out?to swap space.
IO
-
bi: Blocks received from a block device. The number of data blocks used to swap virtual memory back into RAM. -
bo: Blocks sent to a block device. The number of data blocks used to swap virtual memory out of RAM and into swap space.
System
-
in: The number of interrupts per second, including the clock. -
cs: The number of context switches per second. A context switch is when the kernel swaps from system mode processing into user mode processing.
CPU
These values are all percentages of the total CPU time.
-
us: Time spent running non-kernel code. That is, how much time is spent in user time processing and in nice time processing. -
sy: Time spent running kernel code. -
id: Time spent idle. -
wa: Time spent waiting for input or output. -
st: Time stolen from a virtual machine. This is the time a virtual machine has to wait for the hypervisor to finish servicing other virtual machines before it can come back and attend to this virtual machine.
參考:
-
https://www.howtogeek.com/424334/how-to-use-the-vmstat-command-on-linux/ -
https://www.tecmint.com/linux-performance-monitoring-with-vmstat-and-iostat-commands/
iosat命令
iostat
命令用來統(tǒng)計磁盤IO和CPU等信息。
命令:
#?運行iostat
iostat
#?以MB格式輸出
iostat?-m
#?查看指定磁盤(分區(qū))
iostat?-m?-p?vda
#?每2秒統(tǒng)計一次,共統(tǒng)計3次
iostat?-m?2?3
說明:
CPU信息:
-
%user :?It shows the percentage of CPU being utilization that while executing at the user level. -
%nice :?It shows the percentage of CPU utilization that occurred while executing at the user level with a nice priority. -
%system :?It shows the percentage of CPU utilization that occurred while executing at the system (kernel) level. -
%iowait :?It shows the percentage of the time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request. -
%steal :?It shows the percentage of time being spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing by another virtual processor. -
%idle :?It shows the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request.
磁盤信息:
-
Device :?The device/partition name is listed in? /dev?directory. -
tps :?The number of transfers per second that were issued to the device. Higher tps means the processor is busier. -
Blk_read/s :?It shows the amount of data read from the device expressed in a number of blocks (kilobytes, megabytes) per second. -
Blk_wrtn/s :?The amount of data written to the device expressed in a number of blocks (kilobytes, megabytes) per second. -
Blk_read :?It shows the total number of blocks read. -
Blk_wrtn :?It shows the total number of blocks written.
參考:
-
https://www.geeksforgeeks.org/iostat-command-in-linux-with-examples/ -
https://www.techrepublic.com/article/how-to-use-the-linux-iostat-command-to-check-on-your-storage-subsystem/
netstat命令
netstat
命令用來統(tǒng)計網(wǎng)絡(luò)連接和端口等信息。
命令:
#?顯示在偵聽的TCP/UDP網(wǎng)絡(luò)連接,包括程序和端口信息
#?u(UDP)
#?t(TCP)
#?n(port)
#?l(listen)
#?p(program)
netstat?-utnlp
#?只顯示在偵聽的TCP網(wǎng)絡(luò)連接,包括程序和端口信息
netstat?-tnlp
#?查看某個端口被哪個進程使用
#?a(all)
netstat?-anp?|?grep?6379
#?查看某個進程在哪個端口
netstat?-anp?|?grep?redis
#?查看docker啟動的進程在哪個端口
docker?ps?|?grep?jenkins
df命令
df
命令用來統(tǒng)計磁盤使用情況。
命令:
#?查看全部文件系統(tǒng)的磁盤使用情況
df?-h
#?查看指定目錄所在的文件系統(tǒng)的磁盤使用情況
df?-h?~
#?不顯示docker文件系統(tǒng)
df?-h?|?grep?-v?docker
du命令
du
命令用來統(tǒng)計指定目錄的大小。
命令:
#?統(tǒng)計某個目錄大小
du?-sh?~
#?統(tǒng)計目錄下各個子目錄和文件的大小
du?-h?~
#?統(tǒng)計目錄下各個子目錄和文件的大小,并顯示合計大小
du?-ch?~
#?只統(tǒng)計下一級目錄大小
du?-h?--max-depth?1
#?只統(tǒng)計下一級目錄大小,單位為MB,從大到小排序
du?-m?--max-depth?1?|?sort?-rn
#?只統(tǒng)計下一級目錄大小,單位為MB,從大到小排序,返回最大的10個文件(目錄)
du?-m?--max-depth?1?|?sort?-rn?|?head?-11
-END-
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請聯(lián)系刪除?|
【1】超長干貨為你解析:從串口驅(qū)動到Linux驅(qū)動模型,嵌入式必會!
【2】超全!嵌入式必懂的CAN總線一文講通了
【3】干貨:嵌入式系統(tǒng)設(shè)計開發(fā)大全?。ㄈf字總結(jié))
【4】嵌入式系統(tǒng)求職回憶錄:廣嵌、邁瑞、華為、智光……
【5】嵌入式行業(yè)真的沒有前途嗎?
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!