日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

CPU利用率和CPU負載的區別是什么

提到CPU利用率,就必須理解時間片。什么是CPU時間片?我們現在所使用的windows、linux、mac OS都是“多任務操作系統”,就是說他們可以“同時”運行多個程序,比如一邊打開Chrome瀏覽器瀏覽網頁還能一邊聽音樂。

但是,實際上一個CPU內核在同一時刻只能干一件事,那操作系統是如何實現“多任務”的呢?大概的方法是讓多個進程輪流使用CPU一小段時間,由于這個“一小段時間”很短(在linux上為5ms-800ms之間),用戶感覺不到,就好像是幾個程序同時在運行了。上面提到的“一小段時間”就是我們所說的CPU時間片,CPU的現代分時多任務操作系統對CPU都是分時間片使用的。

CPU使用率,就是程序對CPU時間片的占用情況,即CPU使用率 = CPU時間片被程序使用的時間 / 總時間。比如A進程占用10ms,然后B進程占用30ms,然后空閑60ms,再又是A進程占10ms,B進程占30ms,空閑60ms,如果在一段時間內都是如此,那么這段時間內的CPU占用率為40%。CPU利用率顯示的是程序在運行期間實時占用的CPU百分比。

大多數操作系統的CPU占用率分為用戶態CPU使用率和系統態CPU使用率。用戶態CPU使用率是指執行應用程序代碼的時間占總CPU時間的百分比。相比而言,系統態CPU使用率是指應用執行操作系統調用的時間占總CPU時間的百分比。系統態的CPU使用率高意味著共享資源有競爭或者I/O設備之間有大量的交互。

而CPU負載顯示的是一段時間內正在使用和等待使用CPU的平均任務數。

簡單理解,一個是CPU的實時使用情況,一個是CPU的當前以及未來一段時間的使用情況。舉例來說:如果我有一個程序它需要一直使用CPU的運算功能,那么此時CPU的使用率可能達到100%,但是CPU的工作負載則是趨近于“1”,因為CPU僅負責一個工作嘛!如果同時執行這樣的程序兩個呢?CPU的使用率還是100%,但是工作負載則變成2了。所以也就是說,CPU的工作負載越大,代表CPU必須要在不同的工作之間進行頻繁的工作切換。無論CPU的利用率是高是低,跟后面有多少任務在排隊(CPU負載)沒有必然關系。

如果單核CPU的話,負載達到1就代表CPU已經達到滿負荷的狀態了,超過1,后面的進行就需要排隊等待處理了。如果是是多核多CPU,假設現在服務器是2個CPU,每個CPU有2個核,那么總負載不超過4都沒什么問題。

可以通過uptime、w命令查看CPU平均負載,使用top命令還能看到CPU負載總體使用率以及各個進程占用CPU的比例。

Linux面試最高頻的5個基本問題

 

查看物理CPU個數

cat /proc/cpuinfo| grep “physical id”| sort | uniq| wc -l

查看每個物理CPU中core的個數(即核數)

cat /proc/cpuinfo| grep “cpu cores” | uniq

查看邏輯CPU的個數

cat /proc/cpuinfo| grep “processor”| wc -l

如果CPU負載很高,利用率卻很低該怎么辦

CPU負載很高,利用率卻很低,說明處于等待狀態的任務很多,負載越高,代表可能很多僵死的進程。通常這種情況是IO密集型的任務,大量任務在請求相同的IO,導致任務隊列堆積。

生產環境造成CPU利用率低負載高的具體場景常見的有如下幾種。

場景一:磁盤讀寫請求過多就會導致大量I/O等待

進程在cpu上面運行需要訪問磁盤文件,這個時候cpu會向內核發起調用文件的請求,讓內核去磁盤取文件,這個時候cpu會切換到其他進程或者空閑,這個任務就會轉換為不可中斷睡眠狀態。當這種讀寫請求過多就會導致不可中斷睡眠狀態的進程過多,從而導致負載高,cpu低的情況。

場景二:MySQL中存在沒有索引的語句或存在死鎖等情況

我們都知道MySQL的數據是存儲在硬盤中,如果需要進行sql查詢,需要先把數據從磁盤加載到內存中。當在數據特別大的時候,如果執行的sql語句沒有索引,就會造成掃描表的行數過大導致I/O阻塞,或者是語句中存在死鎖,也會造成I/O阻塞,從而導致不可中斷睡眠進程過多,導致負載過大。

同樣,可以先通過top命令觀察,假設發現現在確實是高負載低使用率。

Linux面試最高頻的5個基本問題

 

然后,再通過命令ps -aux查看是否存在狀態為D的進程,這個狀態指的就是不可中斷的睡眠狀態的進程。處于這個狀態的進程無法終止,也無法自行退出,只能通過恢復其依賴的資源或者重啟系統來解決。以下圖中沒有D狀態的進程。

Linux面試最高頻的5個基本問題

 

Linux上進程的五種狀態

  • R (TASK_RUNNING):可執行狀態,只有在該狀態的進程才可能在CPU上運行。而同一時刻可能有多個進程處于可執行狀態。
  • S (TASK_INTERRUPTIBLE):可中斷的睡眠狀態,處于這個狀態的進程因為等待某某事件的發生(比如等待socket連接、等待信號量),而被掛起。
  • D (TASK_UNINTERRUPTIBLE):不可中斷的睡眠狀態,進程處于睡眠狀態,但是此刻進程是不可中斷的。TASK_UNINTERRUPTIBLE狀態存在的意義就在于,內核的某些處理流程是不能被打斷的。
  • T (TASK_STOPPED or TASK_TRACED):暫停狀態或跟蹤狀態。
  • Z (TASK_DEAD - EXIT_ZOMBIE):退出狀態,進程成為僵尸進程。進程已終止,但進程描述還在,直到父進程調用wait4()系統調用后釋放。

如果CPU負載很低,利用率卻很高該怎么辦

這表示CPU的任務并不多,但是任務執行的時間很長,大概率就是你寫的代碼本身有問題,通常是計算密集型任務,生成了大量耗時短的計算任務。

怎么排查?直接top命令找到CPU使用率最高的進程,定位到去看看就行了。如果代碼沒有問題,那么過段時間CPU使用率就會下降的。往期面試題匯總:250期面試資料

CPU利用率達到100%怎么排查問題

1、通過top找到CPU占用率高的進程

Linux面試最高頻的5個基本問題

 

2、通過top -Hp pid命令查看CPU占比靠前的線程ID

Linux面試最高頻的5個基本問題

 

3、再把線程ID轉化為16進制,printf “0x%xn” 74317,得到0x1224d

Linux面試最高頻的5個基本問題

 

4、通過命令jstack 72700 | grep ‘0x1224d’ -C5 --color找到有問題的代碼

注意:jstack的對象是JAVA進程的PID,而不是java線程的PID。

說幾個常見的Linux命令

常用的文件/目錄命令

ls:用戶查看目錄下的文件,ls -a可以用來查看隱藏文件,ls -l可以用于查看文件的詳細信息,包括權限、大小、所有者等信息。

Linux面試最高頻的5個基本問題

 

touch:用于創建文件。如果文件不存在,則創建一個新的文件,如果文件已存在,則會修改文件的時間戳。

cat:cat是英文concatenate的縮寫,用于查看文件內容。使用cat查看文件的話,不管文件的內容有多少,都會一次性顯示,所以他不適合查看太大的文件。

more:more和cat有點區別,more用于分屏顯示文件內容。可以用空格鍵向下翻頁,b鍵向上翻頁

less:和more類似,less用于分行顯示

tail:可能是平時用的最多的命令了,查看日志文件基本靠它。tail -fn 100 xx.log查看最后的100行內容

常用的權限命令

chmod:修改權限命令。一般用+號添加權限,-號刪除權限,x代表執行權限,r代表讀取權限,w代表寫入權限,常見寫法比如chmod +x 文件名添加執行權限。

還有另外一種寫法,使用數字來授權,因為r=4,w=2,x=1,平時執行命令chmod 777 文件名這就是最高權限了。

第一個數字7=4+2+1代表著所有者的權限,第二個數字7代表所屬組的權限,第三個數字代表其他人的權限。常見的權限數字還有644,所有者有讀寫權限,其他人只有只讀權限,755代表其他人有只讀和執行權限。

chown:用于修改文件和目錄的所有者和所屬組。一般用法chown user 文件名用于修改文件所有者,chown user:user 文件名修改文件所有者和組,冒號前面是所有者,后面是組。往期面試題匯總:250期面試資料

常用的壓縮命令

zip:壓縮zip文件命令,比如zip test.zip 文件名可以把文件壓縮成zip文件,如果壓縮目錄的話則需添加 -r 選項。

unzip:與zip對應,解壓zip文件命令。unzip xxx.zip直接解壓,還可以通過 -d 選項指定解壓目錄。

Linux面試最高頻的5個基本問題

 

gzip:用于壓縮帶.gz后綴的文件,gzip命令不能打包目錄。需要注意的是直接使用gzip 文件名這個命令會導致源文件會消失,如果要保留源文件,可以使用gzip -c 文件名 > xx.gz,解壓縮直接使用gzip -d xx.gz

tar:tar命令可以為linux的文件和目錄創建檔案。利用tar,可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar常用幾個選項,-x 解打包,-c 打包,-f 指定壓縮包文件名,-v 顯示打包文件過程,一般常用tar -cvf xx.tar 文件名來打包,解壓則使用tar -xvf xx.tar

首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。為什么要區分這兩個概念呢?這源于Linux中很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然后再用壓縮程序進行壓縮(gzip等命令)。

Linux的打包和壓縮是分開的操作,如果要打包并且壓縮的話,按照前面的做法必須先用tar打包,然后再用gzip壓縮。當然,還有更好的做法就是-z命令,打包并且壓縮。

使用命令tar -zcvf xx.tar.gz 文件名來打包壓縮,使用命令tar -zxvf xx.tar.gz來解壓縮。

感謝閱讀,希望對你有所幫助 :)

來源:blog.csdn.net/fuzhongmin05/article/details/114088146

分享到:
標簽:面試 Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定