日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux性能优化2.1 CPU性能统计信息

發(fā)布時(shí)間:2023/12/4 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux性能优化2.1 CPU性能统计信息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要

性能工具:系統(tǒng)CPU

本章概述了系統(tǒng)級(jí)的Linux性能工具。這些工具是你追蹤性能問題時(shí)的第一道防線。它們能展示整個(gè)系統(tǒng)的性能情況和哪些部分表現(xiàn)不好。本章將討論這些工具可以測(cè)量的統(tǒng)計(jì)信息,以及如何使用各種工具收集這些統(tǒng)計(jì)結(jié)果。閱讀本章后,你將能夠:

理解系統(tǒng)級(jí)性能的基本指標(biāo),包括CPU的使用情況。

明白哪些工具可以檢索這些系統(tǒng)級(jí)性能指標(biāo)。


2.1 CPU性能統(tǒng)計(jì)信息


每一種系統(tǒng)級(jí)Linux性能工具都提供了不同的方式來提取相似的統(tǒng)計(jì)結(jié)果。雖然沒有工具能顯示全部的信息,但是有些工具顯示的是相同的統(tǒng)計(jì)信息。為了不多次(每種工具一次)解釋統(tǒng)計(jì)信息的含義,我們?cè)诿枋鏊泄ぞ咧皩?duì)這些信息進(jìn)行一次性說明。

2.1.1 運(yùn)行隊(duì)列統(tǒng)計(jì)

在Linux中,一個(gè)進(jìn)程要么是可運(yùn)行的,要么是阻塞的(正在等待一個(gè)事件的完成)。阻塞進(jìn)程可能在等待的是從I/O設(shè)備來的數(shù)據(jù),或者是系統(tǒng)調(diào)用的結(jié)果。如果進(jìn)程是可運(yùn)行的,那就意味著它要和其他也是可運(yùn)行的進(jìn)程競(jìng)爭(zhēng)CPU時(shí)間。一個(gè)可運(yùn)行的進(jìn)程不一定會(huì)使用CPU,但是當(dāng)Linux調(diào)度器決定下一個(gè)要運(yùn)行的進(jìn)程時(shí),它會(huì)從可運(yùn)行進(jìn)程隊(duì)列中挑選。如果進(jìn)程是可運(yùn)行的,同時(shí)又在等待使用處理器,這些進(jìn)程就構(gòu)成了運(yùn)行隊(duì)列。運(yùn)行隊(duì)列越長(zhǎng),處于等待狀態(tài)的進(jìn)程就越多。

性能工具通常會(huì)給出可運(yùn)行的進(jìn)程個(gè)數(shù)和等待I/O的阻塞進(jìn)程個(gè)數(shù)。另一種常見的系統(tǒng)統(tǒng)計(jì)是平均負(fù)載。系統(tǒng)的負(fù)載是指正在運(yùn)行和可運(yùn)行的進(jìn)程總數(shù)。比如,如果正在運(yùn)行的進(jìn)程為兩個(gè),而可運(yùn)行的進(jìn)程為三個(gè),那么系統(tǒng)負(fù)載就是5。平均負(fù)載是給定時(shí)間內(nèi)的負(fù)載量。一般情況下,取平均負(fù)載的時(shí)間為1分鐘、5分鐘和15分鐘。這能讓你觀察到負(fù)載是如何隨時(shí)間變化的。

2.1.2 上下文切換

大部分現(xiàn)代處理器一次只能運(yùn)行一個(gè)進(jìn)程或線程。雖然有些處理器(比如超線程處理器)實(shí)際上可以同時(shí)運(yùn)行多個(gè)進(jìn)程,但是Linux會(huì)把它們看作多個(gè)單線程處理器。如果要制造出給定單處理器同時(shí)運(yùn)行多個(gè)任務(wù)的假象,Linux內(nèi)核就要不斷地在不同的進(jìn)程間切換。這種不同進(jìn)程間的切換稱為上下文切換,因?yàn)楫?dāng)其發(fā)生時(shí),CPU要保存舊進(jìn)程的所有上下文信息,并取出新進(jìn)程的所有上下文信息。上下文中包含了Linux跟蹤新進(jìn)程的大量信息,其中包括:進(jìn)程正在執(zhí)行的指令,分配給進(jìn)程的內(nèi)存,進(jìn)程打開的文件等。這些上下文切換涉及大量信息的移動(dòng),因此,上下文切換的開銷可以是相當(dāng)大的。盡量減少上下文切換的次數(shù)是個(gè)好主意。

要避免上下文切換,重要的一點(diǎn)是了解它們是如何發(fā)生的。首先,上下文切換可以是內(nèi)核調(diào)度的結(jié)果。為了保證公平地給每個(gè)進(jìn)程分配處理器時(shí)間,內(nèi)核周期性地中斷正在運(yùn)行的進(jìn)程,在適當(dāng)?shù)那闆r下,內(nèi)核調(diào)度器會(huì)決定開始另一個(gè)進(jìn)程,而不是讓當(dāng)前進(jìn)程繼續(xù)執(zhí)行。每次這種周期性中斷或定時(shí)發(fā)生時(shí),你的系統(tǒng)都可能進(jìn)行上下文切換。每秒定時(shí)中斷的次數(shù)與架構(gòu)和內(nèi)核版本有關(guān)。一個(gè)檢查中斷頻率的簡(jiǎn)單方法是用/proc/interrupts文件,它可以確定已知時(shí)長(zhǎng)內(nèi)發(fā)生的中斷次數(shù)。如清單2.1所示。

清單2.1

?

在清單2.1中,我們要求內(nèi)核給出定時(shí)器啟動(dòng)的次數(shù),等待10秒后,再次請(qǐng)求。這就是說,在這臺(tái)機(jī)器上定時(shí)器啟動(dòng)頻率為(24 070 093-24 060 043)中斷/(10秒)或者約1000次中斷/秒。如果你的上下文切換明顯多于定時(shí)器中斷,那么這些切換極有可能是由I/O請(qǐng)求或其他長(zhǎng)時(shí)間運(yùn)行的系統(tǒng)調(diào)用(如休眠)造成的。當(dāng)應(yīng)用請(qǐng)求的操作不能立即完成時(shí),內(nèi)核啟動(dòng)該操作,保存請(qǐng)求進(jìn)程,并嘗試切換到另一個(gè)已就緒進(jìn)程。這能讓處理器盡量保持忙狀態(tài)。

2.1.3 中斷

此外,處理器還周期性地從硬件設(shè)備接收中斷。當(dāng)設(shè)備有事件需要內(nèi)核處理時(shí),它通常就會(huì)觸發(fā)這些中斷。比如,如果磁盤控制器剛剛完成從驅(qū)動(dòng)器取數(shù)據(jù)塊的操作,并準(zhǔn)備好提供給內(nèi)核,那么磁盤控制器就會(huì)觸發(fā)一個(gè)中斷。對(duì)內(nèi)核收到的每個(gè)中斷,如果已經(jīng)有相應(yīng)的已注冊(cè)的中斷處理程序,就運(yùn)行該程序,否則將忽略這個(gè)中斷。這些中斷處理程序在系統(tǒng)中具有很高的運(yùn)行優(yōu)先級(jí),并且通常執(zhí)行速度也很快。有時(shí),中斷處理程序有工作要做,但是又不需要高優(yōu)先級(jí),因此它可以啟動(dòng)“下半部”(bottom half),也就是所謂的軟中斷處理程序。如果有很多中斷,內(nèi)核會(huì)花大量的時(shí)間服務(wù)這些中斷。查看/proc/interrupts文件可以顯示出哪些CPU上觸發(fā)了哪些中斷。

2.1.4 CPU使用率

CPU使用率是個(gè)簡(jiǎn)單的概念。在任何給定的時(shí)間,CPU可以執(zhí)行以下七件事情中的一個(gè):

(1)CPU可以是空閑的,這意味著處理器實(shí)際上沒有做任何工作,并且等待有任務(wù)可以執(zhí)行。

(2)CPU可以運(yùn)行用戶代碼,即指定的“用戶”時(shí)間。

(3)CPU可以執(zhí)行Linux內(nèi)核中的應(yīng)用程序代碼,這就是“系統(tǒng)”時(shí)間。

(4)CPU可以執(zhí)行“比較友好”的或者優(yōu)先級(jí)被設(shè)置為低于一般進(jìn)程的用戶代碼。

(5)CPU可以處于iowait狀態(tài),即系統(tǒng)正在等待I/O(如磁盤或網(wǎng)絡(luò))完成。

(6)CPU可以處于irq狀態(tài),即它正在用高優(yōu)先級(jí)代碼處理硬件中斷。

(7)CPU可以處于softirq模式,即系統(tǒng)正在執(zhí)行同樣由中斷觸發(fā)的內(nèi)核代碼,只不過其運(yùn)行于較低優(yōu)先級(jí)(下半部代碼)。

此情景出現(xiàn)的條件為:發(fā)生設(shè)備中斷時(shí),而內(nèi)核在將其移交給用戶空間之前必須對(duì)其進(jìn)行一些處理(比如,處理網(wǎng)絡(luò)包)。

大多數(shù)性能工具將這些數(shù)值表示為占CPU總時(shí)間的百分比。這些時(shí)間的范圍從0%到100%,但全部三項(xiàng)加起來等于100%。一個(gè)具有高“系統(tǒng)”百分比的系統(tǒng)表明其大部分時(shí)間都消耗在了內(nèi)核上。像oprofile一樣的工具可以幫助確定時(shí)間都消耗在了哪里。具有高“用戶”時(shí)間的系統(tǒng)則將其大部分時(shí)間都用來運(yùn)行應(yīng)用程序。下一章展示在上述情況下,如何用性能工具追蹤問題。如果系統(tǒng)在應(yīng)該工作的時(shí)候花費(fèi)了大量的時(shí)間處于iowait狀態(tài),那它很可能在等待來自設(shè)備的I/O。導(dǎo)致速度變慢的原因可能是磁盤、網(wǎng)卡或其他設(shè)備。

總結(jié)

以上是生活随笔為你收集整理的Linux性能优化2.1 CPU性能统计信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。