久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Linux-CPU之上下文切換-創(chuàng)新互聯(lián)

思考一下

進(jìn)程在競(jìng)爭(zhēng) CPU 的時(shí)候并沒(méi)有真正運(yùn)行,系統(tǒng)的負(fù)載也會(huì)升高。

創(chuàng)新互聯(lián)主營(yíng)禪城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā)公司,禪城h5成都小程序開(kāi)發(fā)搭建,禪城網(wǎng)站營(yíng)銷(xiāo)推廣歡迎禪城等地區(qū)企業(yè)咨詢(xún)
CPU 上下文

Linux 是一個(gè)多任務(wù)操作系統(tǒng),它支持遠(yuǎn)大于 CPU 數(shù)量的任務(wù)同時(shí)運(yùn)行,在每個(gè)任務(wù)運(yùn)行前,CPU 都需要知道任務(wù)從哪里加載、又從哪里開(kāi)始運(yùn)行,也就是說(shuō),需要系統(tǒng)事先幫它設(shè)置好 CPU 寄存器和程序計(jì)數(shù)器(Program Counter,PC)。

CPU 寄存器,是 CPU 內(nèi)置的容量小、但速度極快的內(nèi)存。而程序計(jì)數(shù)器,則是用來(lái)存儲(chǔ) CPU 正在執(zhí)行的指令位置、或者即將執(zhí)行的下一條指令位置。它們都是 CPU 在運(yùn)行任何任務(wù)前,必須的依賴(lài)環(huán)境,因此也被叫做 CPU 上下文。


上下文切換類(lèi)型
  1. 進(jìn)程上下文切換
  2. 線程上下文切換
  3. 中斷上下文切換
進(jìn)程上下文切換

Linux 按照特權(quán)等級(jí),把進(jìn)程的運(yùn)行空間分為內(nèi)核空間和用戶(hù)空間。

內(nèi)核空間(Ring 0)具有最高權(quán)限,可以直接訪問(wèn)所有資源;
用戶(hù)空間(Ring 3)只能訪問(wèn)受限資源,不能直接訪問(wèn)內(nèi)存等硬件設(shè)備,必須通過(guò)系統(tǒng)調(diào)用陷入到內(nèi)核中,才能訪問(wèn)這些特權(quán)資源。

從用戶(hù)態(tài)到內(nèi)核態(tài)的轉(zhuǎn)變,需要通過(guò)系統(tǒng)調(diào)用來(lái)完成。

比如,當(dāng)我們查看文件內(nèi)容時(shí),就需要多次系統(tǒng)調(diào)用來(lái)完成:首先調(diào)用 open() 打開(kāi)文件,然后調(diào)用 read() 讀取文件內(nèi)容,并調(diào)用 write() 將內(nèi)容寫(xiě)到標(biāo)準(zhǔn)輸出,最后再調(diào)用 close() 關(guān)閉文件。

系統(tǒng)調(diào)用的過(guò)程會(huì)涉及到CPU 上下文的切換,CPU 寄存器里原來(lái)用戶(hù)態(tài)的指令位置,需要先保存起來(lái)。接著,為了執(zhí)行內(nèi)核態(tài)代碼,CPU 寄存器需要更新為內(nèi)核態(tài)指令的新位置。最后才是跳轉(zhuǎn)到內(nèi)核態(tài)運(yùn)行內(nèi)核任務(wù),而系統(tǒng)調(diào)用結(jié)束后,CPU 寄存器需要恢復(fù)原來(lái)保存的用戶(hù)態(tài),然后再切換到用戶(hù)空間,繼續(xù)運(yùn)行進(jìn)程。所以,一次系統(tǒng)調(diào)用的過(guò)程,其實(shí)是發(fā)生了兩次 CPU 上下文切換。

進(jìn)程是由內(nèi)核來(lái)管理和調(diào)度的,進(jìn)程的切換只能發(fā)生在內(nèi)核態(tài)。所以,進(jìn)程的上下文不僅包括了虛擬內(nèi)存、棧、全局變量等用戶(hù)空間的資源,還包括了內(nèi)核堆棧、寄存器等內(nèi)核空間的狀態(tài)。

進(jìn)程的上下文切換就比系統(tǒng)調(diào)用時(shí)多了一步:在保存當(dāng)前進(jìn)程的內(nèi)核狀態(tài)和 CPU 寄存器之前,需要先把該進(jìn)程的虛擬內(nèi)存、棧等保存下來(lái);而加載了下一進(jìn)程的內(nèi)核態(tài)后,還需要刷新進(jìn)程的虛擬內(nèi)存和用戶(hù)棧。

上下文切換都需要幾十納秒到數(shù)微秒的 CPU 時(shí)間。

線程上下文切換

線程與進(jìn)程大的區(qū)別在于,線程是調(diào)度的基本單位,而進(jìn)程則是資源擁有的基本單位。內(nèi)核中的任務(wù)調(diào)度,實(shí)際上的調(diào)度對(duì)象是線程。

當(dāng)進(jìn)程只有一個(gè)線程時(shí),可以認(rèn)為進(jìn)程就等于線程。
當(dāng)進(jìn)程擁有多個(gè)線程時(shí),這些線程會(huì)共享相同的虛擬內(nèi)存和全局變量等資源。這些資源在上下文切換時(shí)是不需要修改的。
另外,線程也有自己的私有數(shù)據(jù),比如棧和寄存器等,這些在上下文切換時(shí)也是需要保存的。

線程的上下文切換其實(shí)就可以分為兩種情況:

  1. 前后兩個(gè)線程屬于不同進(jìn)程。此時(shí),因?yàn)橘Y源不共享,所以切換過(guò)程就跟進(jìn)程上下文切換是一樣。
  2. 前后兩個(gè)線程屬于同一個(gè)進(jìn)程。此時(shí),因?yàn)樘摂M內(nèi)存是共享的,所以在切換時(shí),虛擬內(nèi)存這些資源就保持不動(dòng),只需要切換線程的私有數(shù)據(jù)、寄存器等不共享的數(shù)據(jù)。
中斷上下文切換

為了快速響應(yīng)硬件的事件,中斷處理會(huì)打斷進(jìn)程的正常調(diào)度和執(zhí)行,轉(zhuǎn)而調(diào)用中斷處理程序,響應(yīng)設(shè)備事件。而在打斷其他進(jìn)程時(shí),就需要將進(jìn)程當(dāng)前的狀態(tài)保存下來(lái),這樣在中斷結(jié)束后,進(jìn)程仍然可以從原來(lái)的狀態(tài)恢復(fù)運(yùn)行。

中斷上下文切換并不涉及到進(jìn)程的用戶(hù)態(tài),所以,即便中斷過(guò)程打斷了一個(gè)正處在用戶(hù)態(tài)的進(jìn)程,也不需要保存和恢復(fù)這個(gè)進(jìn)程的虛擬內(nèi)存、全局變量等用戶(hù)態(tài)資源。中斷上下文,其實(shí)只包括內(nèi)核態(tài)中斷服務(wù)程序執(zhí)行所必需的狀態(tài),包括 CPU 寄存器、內(nèi)核堆棧、硬件中斷參數(shù)等。

中斷上下文切換也需要消耗 CPU,切換次數(shù)過(guò)多也會(huì)耗費(fèi)大量的 CPU,甚至嚴(yán)重降低系統(tǒng)的整體性能。

進(jìn)程調(diào)度觸發(fā)情況
  • CPU 時(shí)間被劃分為一段段的時(shí)間片。
  • 進(jìn)程在系統(tǒng)資源不足(比如內(nèi)存不足)時(shí),要等到資源滿足后才可以運(yùn)行,這個(gè)時(shí)候進(jìn)程也會(huì)被掛起,并由系統(tǒng)調(diào)度其他進(jìn)程運(yùn)行。
  • 當(dāng)進(jìn)程通過(guò)睡眠函數(shù) sleep 這樣的方法將自己主動(dòng)掛起時(shí),自然也會(huì)重新調(diào)度。
  • 當(dāng)有優(yōu)先級(jí)更高的進(jìn)程運(yùn)行時(shí),為了保證高優(yōu)先級(jí)進(jìn)程的運(yùn)行,當(dāng)前進(jìn)程會(huì)被掛起,由高優(yōu)先級(jí)進(jìn)程來(lái)運(yùn)行。
  • 發(fā)生硬件中斷時(shí),CPU 上的進(jìn)程會(huì)被中斷掛起,轉(zhuǎn)而執(zhí)行內(nèi)核中的中斷服務(wù)程序。

了解系統(tǒng)的上下文切換情況 vmstat

vmstat 是一個(gè)常用的系統(tǒng)性能分析工具,主要用來(lái)分析系統(tǒng)的內(nèi)存使用情況,也常用來(lái)分析 CPU 上下文切換和中斷的次數(shù)。

# 每隔 5 秒輸出 1 組數(shù)據(jù)
$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 7005360  91564 818900    0    0     0     0   25   33  0  0 100  0  0

cs(context switch)是每秒上下文切換的次數(shù)。
in(interrupt)則是每秒中斷的次數(shù)。
r(Running or Runnable)是就緒隊(duì)列的長(zhǎng)度,也就是正在運(yùn)行和等待 CPU 的進(jìn)程數(shù)。
b(Blocked)則是處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)。

pidstat

sysstat 包含了常用的 Linux 性能工具,用來(lái)監(jiān)控和分析系統(tǒng)的性能。

pidstat是其中一個(gè)常用的進(jìn)程性能分析工具,用來(lái)實(shí)時(shí)查看進(jìn)程的 CPU、內(nèi)存、I/O 以及上下文切換等性能指標(biāo)。

vmstat 只給出了系統(tǒng)總體的上下文切換情況,要想查看每個(gè)進(jìn)程的詳細(xì)情況,就需要使用我們上面提到過(guò)的 pidstat 了。給它加上 -w 選項(xiàng),你就可以查看每個(gè)進(jìn)程上下文切換的情況了。

# 每隔 5 秒輸出 1 組數(shù)據(jù)
$ pidstat -w 5
Linux 4.15.0 (ubuntu)  09/23/18  _x86_64_  (2 CPU)
 
08:18:26      UID       PID   cswch/s nvcswch/s  Command
08:18:31        0         1      0.20      0.00  systemd
08:18:31        0         8      5.40      0.00  rcu_sched

# 每隔 1 秒輸出一組數(shù)據(jù)(需要 Ctrl+C 才結(jié)束)
# -wt 參數(shù)表示輸出線程的上下文切換指標(biāo)
$ pidstat -wt 1
08:14:05      UID      TGID       TID   cswch/s nvcswch/s  Command
...
08:14:05        0     10551         -      6.00      0.00  sysbench
08:14:05        0         -     10551      6.00      0.00  |__sysbench
08:14:05        0         -     10552  18911.00 103740.00  |__sysbench
08:14:05        0         -     10553  18915.00 100955.00  |__sysbench
08:14:05        0         -     10554  18827.00 103954.00  |__sysbench

cswch 自愿上下文切換,是指進(jìn)程無(wú)法獲取所需資源,導(dǎo)致的上下文切換。比如說(shuō), I/O、內(nèi)存等系統(tǒng)資源不足時(shí),就會(huì)發(fā)生自愿上下文切換。
nvcswch 非自愿上下文切換,則是指進(jìn)程由于時(shí)間片已到等原因,被系統(tǒng)強(qiáng)制調(diào)度,進(jìn)而發(fā)生的上下文切換。比如說(shuō),大量進(jìn)程都在爭(zhēng)搶 CPU 時(shí),就容易發(fā)生非自愿上下文切換。

判斷中斷上下文切換的原因

/proc 實(shí)際上是 Linux 的一個(gè)虛擬文件系統(tǒng),用于內(nèi)核空間與用戶(hù)空間之間的通信。/proc/interrupts 就是這種通信機(jī)制的一部分,提供了一個(gè)只讀的中斷使用情況。

# -d 參數(shù)表示高亮顯示變化的區(qū)域
$ watch -d cat /proc/interrupts
           CPU0       CPU1
...
RES:    2450431    5279697   Rescheduling interrupts
...

變化速度最快的是重調(diào)度中斷(RES),這個(gè)中斷類(lèi)型表示,喚醒空閑狀態(tài)的 CPU 來(lái)調(diào)度新的任務(wù)運(yùn)行。這是多處理器系統(tǒng)(SMP)中,調(diào)度器用來(lái)分散任務(wù)到不同 CPU 的機(jī)制,通常也被稱(chēng)為處理器間中斷(Inter-Processor Interrupts,IPI)。

但當(dāng)上下文切換次數(shù)超過(guò)一萬(wàn)次,或者切換次數(shù)出現(xiàn)數(shù)量級(jí)的增長(zhǎng)時(shí),就很可能已經(jīng)出現(xiàn)了性能問(wèn)題。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:Linux-CPU之上下文切換-創(chuàng)新互聯(lián)
新聞來(lái)源:http://www.js-pz168.com/article6/cohiog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站關(guān)鍵詞優(yōu)化品牌網(wǎng)站設(shè)計(jì)電子商務(wù)服務(wù)器托管外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
丰满白嫩尤物一区二区| 色999日韩自偷自拍美女| 亚洲精品一卡二卡三卡四卡| 欧美日韩精品欧美日韩精品一| 精品国产精品网麻豆系列 | 五月天婷亚洲天综合网鲁鲁鲁| 欧美性一区二区| 久久久亚洲精品一区二区三区 | 日韩国产美国| 日韩一区二区免费在线电影| 亚洲人成在线观看一区二区| 激情综合网av| 久久国产精品 国产精品| 欧美自拍偷拍午夜视频| 欧美国产1区2区| 久久国产视频网| 国产精品成人一区二区三区| 欧美自拍偷拍午夜视频| 国产精品免费视频观看| 久久精品久久精品| 国产精品日韩欧美一区二区| 欧美在线免费播放| |精品福利一区二区三区| 国产综合成人久久大片91| 国产日韩久久| 91精品综合久久久久久| 亚洲日本护士毛茸茸| 国产不卡高清在线观看视频| 日韩欧美第二区在线观看| 亚洲精品一区二区在线观看| 五月天亚洲精品| 国产精品免费视频一区二区 | 精品av久久707| 偷拍一区二区三区| 成人h视频在线观看| 欧美日韩精品一区视频| 亚洲黄色录像片| 99精品在线免费| 日本乱人伦一区| 中文字幕在线播放不卡一区| 国产精品888| 亚洲国产欧洲综合997久久| 久久精品一区四区| 国产一区二区三区免费观看| 日韩偷拍一区二区| 久久久久久久av麻豆果冻| 久久99精品久久只有精品| 欧美日韩国产不卡在线看| ww亚洲ww在线观看国产| 精品亚洲免费视频| 日本欧美色综合网站免费| 久久网站最新地址| 国产综合成人久久大片91| 亚洲看片网站| 亚洲三级在线观看| 99国内精品久久| 欧美精三区欧美精三区| 无码av免费一区二区三区试看| 国产欧美丝袜| 精品久久久久久亚洲综合网 | 亚洲一区二区在线观看视频| 999视频在线免费观看| 欧美二区三区91| 日韩电影在线观看网站| 久久综合一区二区三区| 欧美激情综合五月色丁香小说| 国产99一区视频免费| 在线观看精品一区| 亚洲成人三级小说| 蜜桃狠狠色伊人亚洲综合网站| 久久久久久夜精品精品免费| 国产999精品久久久久久| 欧美色偷偷大香| 日韩成人一区二区三区在线观看| 欧美12av| 中文字幕一区二区在线观看| 99精品国产高清一区二区| 日韩欧美一区二区在线视频| 美女网站在线免费欧美精品| 亚洲黄色一区二区三区| 亚洲欧美经典视频| 精品国产一区二区三区麻豆小说 | 91在线播放视频| 精品不卡在线视频| 成人一区二区三区视频在线观看| 欧美日韩一区二区在线观看| 视频一区二区国产| 新呦u视频一区二区| 亚洲男人天堂av网| 国内精品二区| 国产精品毛片大码女人| 国产经典一区二区三区| 国产欧美一区二区三区网站| 91免费在线视频观看| 26uuuu精品一区二区| av电影在线观看不卡| 日韩一级精品视频在线观看| 国产精品一区免费视频| 欧美日韩国产欧美日美国产精品| 免费观看久久久4p| 欧美影视一区二区三区| 免费观看30秒视频久久| 欧美性感一类影片在线播放| 麻豆精品一区二区av白丝在线| 欧美伊人精品成人久久综合97| 免费成人av在线| 欧美性高清videossexo| 极品少妇xxxx偷拍精品少妇| 欧美日韩国产成人在线免费| 国模一区二区三区白浆| 欧美日韩大陆一区二区| 国产乱码字幕精品高清av| 欧美军同video69gay| 国产a视频精品免费观看| 精品三级av在线| 99r国产精品| 日本一区二区综合亚洲| 国产一区二区精品免费| 综合久久国产九一剧情麻豆| 免费毛片一区二区三区久久久| 亚洲一线二线三线久久久| 日韩中文字幕av在线| 日产国产欧美视频一区精品 | 精品一区久久| 亚洲综合无码一区二区| 亚洲永久一区二区三区在线| 日本欧美一区二区三区| 精品视频1区2区| 国产v日产∨综合v精品视频| 久久久噜噜噜久噜久久综合| 国产精品中出一区二区三区| 一区二区三区四区在线| 一本一道久久a久久综合精品| 蜜桃免费网站一区二区三区| 欧美精品久久99| 91久久精品www人人做人人爽| 国产精品乱码妇女bbbb| 欧美一区国产一区| 蜜桃视频在线一区| 日韩欧美国产午夜精品| 国产精品一区在线观看| 亚洲国产精品人人做人人爽| 欧美亚洲综合久久| 成人app下载| 中文字幕在线不卡国产视频| 亚洲一区二区三区免费看| 国产一区在线看| 国产亚洲视频系列| 日韩精品国内| 国产麻豆精品在线| 国产欧美一区二区精品秋霞影院| 日本欧美色综合网站免费| 美腿丝袜亚洲综合| 精品国产电影一区二区| 久久精品日韩精品| 麻豆成人久久精品二区三区小说| 日韩一区二区三区精品视频| 国产一区二区三区色淫影院| 五月婷婷综合激情| 日韩精品一区二区三区在线| 狠狠色综合一区二区| 日韩av电影免费观看高清完整版在线观看 | 国产精品一区二区久久不卡 | 精品免费日韩av| 精品国产一区二区三区麻豆小说 | 日本一区二区免费在线| 亚洲精品成人久久久998| 国产成人精品网址| 亚洲欧美自拍偷拍色图| 在线精品视频一区二区三四| bt欧美亚洲午夜电影天堂| 一区二区三区精品| 91精品国产一区二区| 国产综合欧美在线看| 久久不见久久见免费视频7| 久久久久88色偷偷免费| 视频三区二区一区| 成人免费视频视频| 亚洲最大成人网4388xx| 7777精品伊人久久久大香线蕉的 | 久久99精品国产一区二区三区| 美女高潮久久久| 日本一区二区不卡视频| 色94色欧美sute亚洲线路一ni| 91麻豆国产福利精品| 无码av免费一区二区三区试看| 欧美精品一区二区高清在线观看| 小说区图片区图片区另类灬| www.亚洲在线| 午夜精品久久久久久久99樱桃| 精品久久久久一区二区国产| 亚洲韩国在线| 91色porny在线视频| 日日夜夜免费精品视频| 国产亚洲精品资源在线26u| 日本高清成人免费播放| 国产成人免费观看| 国内精品在线播放| 一区二区久久久久| 精品少妇一区二区三区在线视频|