激战的后厨2观看完整版,強姦亂倫強姦在线观看,国产无套内射普通话对白,老头呻吟喘息硕大撞击,他扒开我小泬添我三男一女视频

廈門服務器租用>BGP服務器>Centos系統(tong)上下(xia)文(wen)切(qie)換(huan)的檢查思路

Centos系統上下文切換的檢查思路

發布時間:2023/6/9 10:56:39

Centos系統上下文切換的檢查思路

1.什么是上(shang)下文切換(Context Switch)?

上(shang)下文切(qie)換,有(you)時也稱做進程切(qie)換或(huo)(huo)任務切(qie)換,是指CPU從一(yi)個進程或(huo)(huo)線(xian)程切(qie)換到另一(yi)個進程或(huo)(huo)線(xian)程。

操作系(xi)統可以同(tong)時運行多個進(jin)程, 然(ran)(ran)而一(yi)顆CPU同(tong)時只(zhi)能執(zhi)行一(yi)項任(ren)(ren)務(wu)(wu)(wu)(wu),操作系(xi)統利用時間(jian)片輪(lun)轉的(de)方式(shi),讓用戶感覺這些(xie)任(ren)(ren)務(wu)(wu)(wu)(wu)正在同(tong)時進(jin)行。 CPU給每個任(ren)(ren)務(wu)(wu)(wu)(wu)都服(fu)務(wu)(wu)(wu)(wu)一(yi)定的(de)時間(jian), 然(ran)(ran)后把當前任(ren)(ren)務(wu)(wu)(wu)(wu)的(de)狀(zhuang)態保存下(xia)來, 在加載下(xia)一(yi)任(ren)(ren)務(wu)(wu)(wu)(wu)的(de)狀(zhuang)態后, 繼續服(fu)務(wu)(wu)(wu)(wu)下(xia)一(yi)任(ren)(ren)務(wu)(wu)(wu)(wu)。任(ren)(ren)務(wu)(wu)(wu)(wu)的(de)狀(zhuang)態保存及(ji)再加載, 這段過程就叫做(zuo)上下(xia)文切換(huan)。

當(dang)(dang)一個(ge)進(jin)(jin)(jin)程(cheng)(cheng)在(zai)執(zhi)行(xing)(xing)時(shi)(shi),CPU的(de)(de)所(suo)有寄存(cun)器中(zhong)(zhong)(zhong)(zhong)的(de)(de)值、進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de)狀態(tai)以及堆棧中(zhong)(zhong)(zhong)(zhong)的(de)(de)內(nei)容被(bei)稱 為該進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de)上下(xia)文。當(dang)(dang)內(nei)核需(xu)要(yao)切(qie)換到(dao)另一個(ge)進(jin)(jin)(jin)程(cheng)(cheng)時(shi)(shi),它需(xu)要(yao)保(bao)存(cun)當(dang)(dang)前進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de) 所(suo)有狀態(tai),即(ji)保(bao)存(cun)當(dang)(dang)前進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de)上下(xia)文,以便在(zai)再(zai)次執(zhi)行(xing)(xing)該進(jin)(jin)(jin)程(cheng)(cheng)時(shi)(shi),能夠必得到(dao)切(qie)換時(shi)(shi)的(de)(de)狀態(tai)執(zhi)行(xing)(xing)下(xia)去。在(zai)LINUX中(zhong)(zhong)(zhong)(zhong),當(dang)(dang)前進(jin)(jin)(jin)程(cheng)(cheng)上下(xia)文均(jun)保(bao)存(cun)在(zai)進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de)任務(wu)(wu)(wu)數據結 構中(zhong)(zhong)(zhong)(zhong)。在(zai)發生中(zhong)(zhong)(zhong)(zhong)斷(duan)(duan)時(shi)(shi),內(nei)核就在(zai)被(bei)中(zhong)(zhong)(zhong)(zhong)斷(duan)(duan)進(jin)(jin)(jin)程(cheng)(cheng)的(de)(de)上下(xia)文中(zhong)(zhong)(zhong)(zhong),在(zai)內(nei)核態(tai)下(xia)執(zhi)行(xing)(xing)中(zhong)(zhong)(zhong)(zhong)斷(duan)(duan)服務(wu)(wu)(wu)例程(cheng)(cheng)。但同(tong)時(shi)(shi)會保(bao)留所(suo)有需(xu)要(yao)用到(dao)的(de)(de)資(zi)源(yuan),以便中(zhong)(zhong)(zhong)(zhong)繼(ji)服務(wu)(wu)(wu)結束時(shi)(shi)能恢(hui)復被(bei)中(zhong)(zhong)(zhong)(zhong)斷(duan)(duan)進(jin)(jin)(jin)程(cheng)(cheng) 的(de)(de)執(zhi)行(xing)(xing)。

2.上下文切換的消耗?

直(zhi)接消耗包括(kuo): CPU寄存器(qi)需(xu)要(yao)保存和加載,系(xi)統調度(du)器(qi)的(de)代(dai)碼需(xu)要(yao)執行,TLB實(shi)例需(xu)要(yao)重新加載,CPU 的(de)pipeline需(xu)要(yao)刷掉。

間接(jie)消(xiao)耗:多核的cache之間得共(gong)享(xiang)數據(ju)(ju),間接(jie)消(xiao)耗對于程序的影響要(yao)看(kan)線程工作區操作數據(ju)(ju)的大小。

上下文(wen)切(qie)換(huan)(huan)(huan)通(tong)常(chang)是(shi)計算密(mi)集型(xing)的(de)。也就是(shi)說,它需要相當可(ke)觀的(de)處理器(qi)時(shi)(shi)間,在每秒幾(ji)十(shi)上百次(ci)的(de)切(qie)換(huan)(huan)(huan)中(zhong)(zhong),每次(ci)切(qie)換(huan)(huan)(huan)都需要納秒量級的(de)時(shi)(shi)間。所以,上下文(wen)切(qie)換(huan)(huan)(huan)對系統來說意(yi)味(wei)著消耗(hao)(hao)大量的(de) CPU 時(shi)(shi)間,事實(shi)上,可(ke)能是(shi)操作系統中(zhong)(zhong)時(shi)(shi)間消耗(hao)(hao)最大的(de)操作。

3.如何檢查(cha)上下文切換是否頻繁?

(1)確認CPU使用率

Centos系統上下文切換的檢查思路-3180

CPU是否處于空(kong)閑(xian)狀態。

(2)vmstat 1

Centos系統上下文切換的檢查思路-3181

從vmstat的(de)輸出(chu)可以看(kan)到,io項的(de)block_in和block_out是否頻(pin)繁,system項的(de)每秒(miao)中(zhong)斷數(in)和每秒(miao)的(de)上下文(wen)切(qie)換(cs)是否頻(pin)繁。

(3)

pidstat -w 1

Centos系統上下文切換的檢查思路-3182

從pidstat上(shang)可以看(kan)到,每(mei)個(ge)進程對(dui)應(ying)的cswch(自(zi)愿(yuan)上(shang)下文切(qie)換)和nvcswch(非自(zi)愿(yuan)上(shang)下文切(qie)換)是否頻繁(fan)。

cswch/s: 每秒任(ren)(ren)務主動(dong)(自愿的)切換上(shang)下(xia)文的次數,當某(mou)一任(ren)(ren)務處于阻塞等待時,將主動(dong)讓出(chu)自己(ji)的CPU資源。

nvcswch/s: 每(mei)秒任務(wu)被(bei)動(不自愿的)切換上下文(wen)的次數,CPU分配給某一任務(wu)的時間片已經用(yong)完,因此將強迫該進程讓出CPU的執行權(quan)。

(4)/proc/stat

/proc/stat包(bao)含(han)了CPU的活動(dong)信息(xi),上下(xia)文切換就是其中一項,以ctxt開頭,它表示系(xi)統開機到目前為(wei)止(zhi)的上下(xia)文切換總數。

cat /proc/stat | grep ctxt &&; sleep 30 && cat /proc/stat | grep ctxt

通過上面的(de)命(ming)令,可以計(ji)算出每秒(miao)上下文切(qie)換(huan)次數(shu)=兩者差值/30

通過以(yi)上命(ming)令即可以(yi)定位那個(ge)進(jin)程上下文切換頻繁。

4.造成上下文切換頻(pin)繁的原因?

當前執行任務的時間片用(yong)完之后(hou), 系統(tong)CPU正常調度下一(yi)個(ge)任務

當前(qian)執(zhi)行任(ren)務碰(peng)到IO阻(zu)塞, 調(diao)度器將(jiang)掛(gua)起此任(ren)務, 繼續下一(yi)任(ren)務

多(duo)個任(ren)務搶(qiang)占鎖資源, 當前任(ren)務沒有搶(qiang)到,被調度器掛起, 繼續下一任(ren)務

用(yong)戶代(dai)碼掛起當前(qian)任務, 讓出CPU時(shi)間

硬件中斷


在線客服
微信公眾號
免費撥打400-1886560
免費撥打0592-5580190 免費撥打 400-1886560 或 0592-5580190
返回頂部
返回頭部 返回頂(ding)部(bu)