好男人好资源在线观看免费视频,国产又爽又黄又不遮挡视频,国产亚洲欧美另类精品久久久,国产精品99久久久久久猫咪,国产综合久久久久久鬼色

廣告

Centos系統(tǒng)上下文切換的檢查思路

2023-11-22

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

上下文切換,有時也稱做進程切換或任務切換,是指CPU從一個進程或線程切換到另一個進程或線程。

操作系統(tǒng)可以同時運行多個進程, 然而一顆CPU同時只能執(zhí)行一項任務,操作系統(tǒng)利用時間片輪轉(zhuǎn)的方式,讓用戶感覺這些任務正在同時進行。 CPU給每個任務都服務一定的時間, 然后把當前任務的狀態(tài)保存下來, 在加載下一任務的狀態(tài)后, 繼續(xù)服務下一任務。任務的狀態(tài)保存及再加載, 這段過程就叫做上下文切換。

當一個進程在執(zhí)行時,CPU的所有寄存器中的值、進程的狀態(tài)以及堆棧中的內(nèi)容被稱 為該進程的上下文。當內(nèi)核需要切換到另一個進程時,它需要保存當前進程的 所有狀態(tài),即保存當前進程的上下文,以便在再次執(zhí)行該進程時,能夠必得到切換時的狀態(tài)執(zhí)行下去。在LINUX中,當前進程上下文均保存在進程的任務數(shù)據(jù)結(jié) 構(gòu)中。在發(fā)生中斷時,內(nèi)核就在被中斷進程的上下文中,在內(nèi)核態(tài)下執(zhí)行中斷服務例程。但同時會保留所有需要用到的資源,以便中繼服務結(jié)束時能恢復被中斷進程 的執(zhí)行。

 

2.上下文切換的消耗?

直接消耗包括: CPU寄存器需要保存和加載,系統(tǒng)調(diào)度器的代碼需要執(zhí)行,TLB實例需要重新加載,CPU 的pipeline需要刷掉。

間接消耗:多核的cache之間得共享數(shù)據(jù),間接消耗對于程序的影響要看線程工作區(qū)操作數(shù)據(jù)的大小。

上下文切換通常是計算密集型的。也就是說,它需要相當可觀的處理器時間,在每秒幾十上百次的切換中,每次切換都需要納秒量級的時間。所以,上下文切換對系統(tǒng)來說意味著消耗大量的 CPU 時間,事實上,可能是操作系統(tǒng)中時間消耗最大的操作。

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

(1)確認CPU使用率

確認CPU使用率

CPU是否處于空閑狀態(tài)。

(2)vmstat 1

CPU是否處于空閑狀態(tài)。

從vmstat的輸出可以看到,io項的block_in和block_out是否頻繁,system項的每秒中斷數(shù)(in)和每秒的上下文切換(cs)是否頻繁。

(3)

pidstat -w 1

每個進程對應的cswch(自愿上下文切換)和nvcswch(非自愿上下文切換)是否頻繁


從pidstat上可以看到,每個進程對應的cswch(自愿上下文切換)和nvcswch(非自愿上下文切換)是否頻繁。

cswch/s: 每秒任務主動(自愿的)切換上下文的次數(shù),當某一任務處于阻塞等待時,將主動讓出自己的CPU資源。
nvcswch/s: 每秒任務被動(不自愿的)切換上下文的次數(shù),CPU分配給某一任務的時間片已經(jīng)用完,因此將強迫該進程讓出CPU的執(zhí)行權(quán)。

(4)/proc/stat

/proc/stat包含了CPU的活動信息,上下文切換就是其中一項,以ctxt開頭,它表示系統(tǒng)開機到目前為止的上下文切換總數(shù)。

cat /proc/stat | grep ctxt && sleep 30 && cat /proc/stat | grep ctxt
通過上面的命令,可以計算出每秒上下文切換次數(shù)=兩者差值/30

通過以上命令即可以定位那個進程上下文切換頻繁。

 

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

當前執(zhí)行任務的時間片用完之后, 系統(tǒng)CPU正常調(diào)度下一個任務

當前執(zhí)行任務碰到IO阻塞, 調(diào)度器將掛起此任務, 繼續(xù)下一任務

多個任務搶占鎖資源, 當前任務沒有搶到,被調(diào)度器掛起, 繼續(xù)下一任務

用戶代碼掛起當前任務, 讓出CPU時間

硬件中斷

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處!

上一篇:Windows 2003系統(tǒng)如何取消登入時按Ctrl Alt Del

下一篇:如何解決windows10系統(tǒng)右鍵沒有新建文本文檔的問題

這條幫助是否解決了您的問題?已解決未解決

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!很抱歉未能解決您的疑問。我們已收到您的反饋意見,同時會及時作出反饋處理!

立即注冊91VPS賬號,免費體驗多款產(chǎn)品
立即注冊
聯(lián)系我們
全國咨詢熱線:
0712-5319406
QQ客服:
800193021
91VPS微信客服

掃碼聯(lián)系微信客服