欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

linux中調(diào)度進(jìn)程命令 linux任務(wù)調(diào)度 命令

Linux進(jìn)程的調(diào)度

上回書說到 Linux進(jìn)程的由來 和 Linux進(jìn)程的創(chuàng)建 ,其實(shí)在同一時刻只能支持有限個進(jìn)程或線程同時運(yùn)行(這取決于CPU核數(shù)量,基本上一個進(jìn)程對應(yīng)一個CPU),在一個運(yùn)行的操作系統(tǒng)上可能運(yùn)行著很多進(jìn)程,如果運(yùn)行的進(jìn)程占據(jù)CPU的時間很長,就有可能導(dǎo)致其他進(jìn)程餓死。為了解決這種問題,操作系統(tǒng)引入了 進(jìn)程調(diào)度器 來進(jìn)行進(jìn)程的切換,輪流讓各個進(jìn)程使用CPU資源。

創(chuàng)新互聯(lián)服務(wù)項目包括榕城網(wǎng)站建設(shè)、榕城網(wǎng)站制作、榕城網(wǎng)頁制作以及榕城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,榕城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到榕城省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1)rq: 進(jìn)程的運(yùn)行隊列( runqueue), 每個CPU對應(yīng)一個 ,包含自旋鎖(spinlock)、進(jìn)程數(shù)量、用于公平調(diào)度的CFS信息結(jié)構(gòu)、當(dāng)前運(yùn)行的進(jìn)程描述符等。實(shí)際的進(jìn)程隊列用紅黑樹來維護(hù)(通過CFS信息結(jié)構(gòu)來訪問)。

2)cfs_rq: cfs調(diào)度的進(jìn)程運(yùn)行隊列信息 ,包含紅黑樹的根結(jié)點(diǎn)、正在運(yùn)行的進(jìn)程指針、用于負(fù)載均衡的葉子隊列等。

3)sched_entity: 把需要調(diào)度的東西抽象成調(diào)度實(shí)體 ,調(diào)度實(shí)體可以是進(jìn)程、進(jìn)程組、用戶等。這里包含負(fù)載權(quán)重值、對應(yīng)紅黑樹結(jié)點(diǎn)、 虛擬運(yùn)行時vruntime 等。

4)sched_class:把 調(diào)度策略(算法)抽象成調(diào)度類 ,包含一組通用的調(diào)度操作接口。接口和實(shí)現(xiàn)是分離,可以根據(jù)調(diào)度接口去實(shí)現(xiàn)不同的調(diào)度算法,使一個Linux調(diào)度程序可以有多個不同的調(diào)度策略。

1) 關(guān)閉內(nèi)核搶占 ,初始化部分變量。獲取當(dāng)前CPU的ID號,并賦值給局部變量CPU, 使rq指向CPU對應(yīng)的運(yùn)行隊列 。 標(biāo)識當(dāng)前CPU發(fā)生任務(wù)切換 ,通知RCU更新狀態(tài),如果當(dāng)前CPU處于rcu_read_lock狀態(tài),當(dāng)前進(jìn)程將會放入rnp- blkd_tasks阻塞隊列,并呈現(xiàn)在rnp- gp_tasks鏈表中。 關(guān)閉本地中斷 ,獲取所要保護(hù)的運(yùn)行隊列的自旋鎖, 為查找可運(yùn)行進(jìn)程做準(zhǔn)備 。

2) 檢查prev的狀態(tài),更新運(yùn)行隊列 。如果不是可運(yùn)行狀態(tài),而且在內(nèi)核態(tài)沒被搶占,應(yīng)該從運(yùn)行隊列中 刪除prev進(jìn)程 。如果是非阻塞掛起信號,而且狀態(tài)為TASK_INTER-RUPTIBLE,就把該進(jìn)程的狀態(tài)設(shè)置為TASK_RUNNING,并將它 插入到運(yùn)行隊列 。

3)task_on_rq_queued(prev) 將pre進(jìn)程插入到運(yùn)行隊列的隊尾。

4)pick_next_task 選取將要執(zhí)行的next進(jìn)程。

5)context_switch(rq, prev, next)進(jìn)行 進(jìn)程上下文切換 。

1) 該進(jìn)程分配的CPU時間片用完。

2) 該進(jìn)程主動放棄CPU(例如IO操作)。

3) 某一進(jìn)程搶占CPU獲得執(zhí)行機(jī)會。

Linux并沒有使用x86 CPU自帶的任務(wù)切換機(jī)制,需要通過手工的方式實(shí)現(xiàn)了切換。

進(jìn)程創(chuàng)建后在內(nèi)核的數(shù)據(jù)結(jié)構(gòu)為task_struct , 該結(jié)構(gòu)中有掩碼屬性cpus_allowed,4個核的CPU可以有4位掩碼,如果CPU開啟超線程,有一個8位掩碼,進(jìn)程可以運(yùn)行在掩碼位設(shè)置為1的CPU上。

Linux內(nèi)核API提供了兩個系統(tǒng)調(diào)用 ,讓用戶可以修改和查看當(dāng)前的掩碼:

1) sched_setaffinity():用來修改位掩碼。

2) sched_getaffinity():用來查看當(dāng)前的位掩碼。

在下次task被喚醒時,select_task_rq_fair根據(jù)cpu_allowed里的掩碼來確定將其置于哪個CPU的運(yùn)行隊列,一個進(jìn)程在某一時刻只能存在于一個CPU的運(yùn)行隊列里。

在Nginx中,使用了CPU親和度來完成某些場景的工作:

worker_processes? ? ? 4;

worker_cpu_affinity 0001001001001000;

上面這個配置說明了4個工作進(jìn)程中的每一個和一個CPU核掛鉤。如果這個內(nèi)容寫入Nginx的配置文件中,然后Nginx啟動或者重新加載配置的時候,若worker_process是4,就會啟用4個worker,然后把worker_cpu_affinity后面的4個值當(dāng)作4個cpu affinity mask,分別調(diào)用ngx_setaffinity,然后就把4個worker進(jìn)程分別綁定到CPU0~3上。

worker_processes? ? ? 2;

worker_cpu_affinity 01011010;

上面這個配置則說明了兩個工作進(jìn)程中的每一個和2個核掛鉤。

Linux中如何啟動進(jìn)程?進(jìn)程調(diào)度命令有哪些?

Linux技術(shù)的發(fā)展引起了很多企業(yè)和個人的關(guān)注。市場對Linux運(yùn)維的需求逐漸增加,學(xué)習(xí)Linux技術(shù)的人越來越多。在Linux運(yùn)維中,進(jìn)程是必須學(xué)習(xí)掌握的技能。那么Linux中如何啟動進(jìn)程?常用的進(jìn)程調(diào)度命令有哪些?

執(zhí)行中的程序稱作進(jìn)程。當(dāng)程序的可執(zhí)行文件存儲在存儲器中并運(yùn)行時,每個進(jìn)程將被動態(tài)分配系統(tǒng)資源、內(nèi)存、安全屬性和相關(guān)狀態(tài)。多個進(jìn)程可以與同一個程序相關(guān)聯(lián),并在同一時間執(zhí)行,而不會相互干擾。操作系統(tǒng)將有效地管理和跟蹤所有正在運(yùn)行的進(jìn)程。

Linux中如何啟動進(jìn)程?啟動進(jìn)程的方法是什么?

手工啟動。用戶在輸入端發(fā)出命令,直接啟動進(jìn)程。分為前臺啟動和后臺啟動。前臺啟動:直接在SHELL中輸入命令進(jìn)行啟動。后臺啟動:啟動一個目前并不緊急的進(jìn)程。

調(diào)度啟動。系統(tǒng)管理員根據(jù)系統(tǒng)資源和進(jìn)程占用資源的情況,事先進(jìn)行調(diào)度安排,指定任務(wù)運(yùn)行的時間和場合,到時候系統(tǒng)會自動完成該任務(wù)。

常用的進(jìn)程調(diào)度命令有哪些?

常用的進(jìn)程調(diào)度命令有:at、batch、crontab。

以上便是關(guān)于“如何啟動或終止進(jìn)程?常用的進(jìn)程調(diào)度命令有哪些?”的相關(guān)介紹。想要成為一名優(yōu)秀的Linux運(yùn)維工程師,需要掌握更多的Linux知識。

Linux 進(jìn)程調(diào)度

Linux的調(diào)度策略區(qū)分實(shí)時進(jìn)程和普通進(jìn)程,實(shí)時進(jìn)程的調(diào)度策略是SCHED_FIFO和SCHED_RR,普通的,非實(shí)時進(jìn)程的調(diào)度策略是SCHED_NORMAL(SCHED_OTHER)。

實(shí)時調(diào)度策略被實(shí)時調(diào)度器管理,普通調(diào)度策略被完全公平調(diào)度器來管理。實(shí)時進(jìn)程的優(yōu)先級要高于普通進(jìn)程(nice越小優(yōu)先級越高)。

SCHED_FIFO實(shí)現(xiàn)了一種簡單的先入先出的調(diào)度算法,它不使用時間片,但支持搶占,只有優(yōu)先級更高的SCHED_FIFO或者SCHED_RR進(jìn)程才能搶占它,否則它會一直執(zhí)行下去,低優(yōu)先級的進(jìn)程不能搶占它,直到它受阻塞或自己主動釋放處理器。

SCHED_RR是帶有時間片的一種實(shí)時輪流調(diào)度算法,當(dāng)SCHED_RR進(jìn)程耗盡它的時間片時,同一優(yōu)先級的其它實(shí)時進(jìn)程被輪流調(diào)度,時間片只用來重新調(diào)用同一優(yōu)先級的進(jìn)程,低優(yōu)先級的進(jìn)程決不能搶占SCHED_RR任務(wù),即使它的時間片耗盡。SCHED_RR是帶時間片的SCHED_FIFO。

Linux的實(shí)時調(diào)度算法提供了一種軟實(shí)時工作方式,軟實(shí)時的含義是盡力調(diào)度進(jìn)程,盡力使進(jìn)程在它的限定時間到來前運(yùn)行,但內(nèi)核不保證總能滿足這些進(jìn)程的要求,相反,硬實(shí)時系統(tǒng)保證在一定的條件下,可以滿足任何調(diào)度的要求。

SCHED_NORMAL使用完全公平調(diào)度算法(CFS),之前的算法直接將nice值對應(yīng)時間片的長度,而在CFS中,nice值只作為進(jìn)程獲取處理器運(yùn)行比的權(quán)重,每個進(jìn)程都有一個權(quán)重,nice優(yōu)先級越高,權(quán)重越大,表示應(yīng)該運(yùn)行更長的時間。Linux的實(shí)現(xiàn)中,每個進(jìn)程都有一個vruntime字段,vruntime是經(jīng)過量化的進(jìn)程運(yùn)行時間,也就是實(shí)際運(yùn)行時間除以權(quán)重,所以每個量化后的vruntime應(yīng)該相等,這就體現(xiàn)了公平性。

CFS當(dāng)然也支持搶占,但與實(shí)時調(diào)度算法不同,實(shí)時調(diào)度算法是根據(jù)優(yōu)先級進(jìn)行搶占,CFS是根據(jù)vruntime進(jìn)行搶占,vruntime小就擁有優(yōu)先被運(yùn)行的權(quán)利。

為了計算時間片,CFS算法需要為完美多任務(wù)中的無限小調(diào)度周期設(shè)定近似值,這個近似值也稱作目標(biāo)延遲,指每個可運(yùn)行進(jìn)程在目標(biāo)延遲內(nèi)都會調(diào)度一次,如果進(jìn)程數(shù)量太多,則時間粒度太小,所以約定時間片的默認(rèn)最小粒度是1ms。

進(jìn)程可以分為I/O消耗型和處理器消耗型,這兩種進(jìn)程的調(diào)度策略應(yīng)該不同,I/O消耗型應(yīng)該更加實(shí)時,給對端的感覺是響應(yīng)很快,同時它一般又不會消耗太多的處理器,因而I/O消耗型需要調(diào)度頻繁。相對來說,處理器消耗型不需要特別實(shí)時,應(yīng)該盡量降低它的調(diào)度頻度,延長其運(yùn)行時間。

參考: linux內(nèi)核分析——CFS(完全公平調(diào)度算法) - 一路向北你好 - 博客園

Linux - 進(jìn)程調(diào)度

進(jìn)程調(diào)度算法也稱 CPU 調(diào)度算法,畢竟進(jìn)程是由 CPU 調(diào)度的。

當(dāng) CPU 空閑時,操作系統(tǒng)就選擇內(nèi)存中的某個「就緒狀態(tài)」的進(jìn)程,并給其分配 CPU。

什么時候會發(fā)生 CPU 調(diào)度呢?通常有以下情況:

其中發(fā)生在 1 和 4 兩種情況下的調(diào)度稱為「非搶占式調(diào)度」,2 和 3 兩種情況下發(fā)生的調(diào)度稱為「搶占式調(diào)度」。

非搶占式的意思就是,當(dāng)進(jìn)程正在運(yùn)行時,它就會一直運(yùn)行,直到該進(jìn)程完成或發(fā)生某個事件而被阻塞時,才會把 CPU 讓給其他進(jìn)程。

而搶占式調(diào)度,顧名思義就是進(jìn)程正在運(yùn)行的時候,可以被打斷,使其把 CPU 讓給其他進(jìn)程。那搶占的原則一般有三種,分別是時間片原則、優(yōu)先權(quán)原則、短作業(yè)優(yōu)先原則。

你可能會好奇為什么第 3 種情況也會發(fā)生 CPU 調(diào)度呢?假設(shè)有一個進(jìn)程是處于等待狀態(tài)的,但是它的優(yōu)先級比較高,如果該進(jìn)程等待的事件發(fā)生了,它就會轉(zhuǎn)到就緒狀態(tài),一旦它轉(zhuǎn)到就緒狀態(tài),如果我們的調(diào)度算法是以優(yōu)先級來進(jìn)行調(diào)度的,那么它就會立馬搶占正在運(yùn)行的進(jìn)程,所以這個時候就會發(fā)生 CPU 調(diào)度。

那第 2 種狀態(tài)通常是時間片到的情況,因?yàn)闀r間片到了就會發(fā)生中斷,于是就會搶占正在運(yùn)行的進(jìn)程,從而占用 CPU。

調(diào)度算法影響的是等待時間(進(jìn)程在就緒隊列中等待調(diào)度的時間總和),而不能影響進(jìn)程真在使用 CPU 的時間和 I/O 時間。

最簡單的一個調(diào)度算法,就是非搶占式的先來先服務(wù)(First Come First Severd, FCFS)算法了。

顧名思義,先來后到,每次從就緒隊列選擇最先進(jìn)入隊列的進(jìn)程,然后一直運(yùn)行,直到進(jìn)程退出或被阻塞,才會繼續(xù)從隊列中選擇第一個進(jìn)程接著運(yùn)行。

這似乎很公平,但是當(dāng)一個長作業(yè)先運(yùn)行了,那么后面的短作業(yè)等待的時間就會很長,不利于短作業(yè)。

FCFS 對長作業(yè)有利,適用于 CPU 繁忙型作業(yè)的系統(tǒng),而不適用于 I/O 繁忙型作業(yè)的系統(tǒng)。

最短作業(yè)優(yōu)先(Shortest Job First, SJF)調(diào)度算法同樣也是顧名思義,它會優(yōu)先選擇運(yùn)行時間最短的進(jìn)程來運(yùn)行,這有助于提高系統(tǒng)的吞吐量。

這顯然對長作業(yè)不利,很容易造成一種極端現(xiàn)象。

比如,一個長作業(yè)在就緒隊列等待運(yùn)行,而這個就緒隊列有非常多的短作業(yè),那么就會使得長作業(yè)不斷的往后推,周轉(zhuǎn)時間變長,致使長作業(yè)長期不會被運(yùn)行。

前面的「先來先服務(wù)調(diào)度算法」和「最短作業(yè)優(yōu)先調(diào)度算法」都沒有很好的權(quán)衡短作業(yè)和長作業(yè)。

那么,高響應(yīng)比優(yōu)先 (Highest Response Ratio Next, HRRN)調(diào)度算法主要是權(quán)衡了短作業(yè)和長作業(yè)。

每次進(jìn)行進(jìn)程調(diào)度時,先計算「響應(yīng)比優(yōu)先級」,然后把「響應(yīng)比優(yōu)先級」最高的進(jìn)程投入運(yùn)行,「響應(yīng)比優(yōu)先級」的計算公式:

從上面的公式,可以發(fā)現(xiàn):

最古老、最簡單、最公平且使用最廣的算法就是時間片輪轉(zhuǎn)(Round Robin, RR)調(diào)度算法。

每個進(jìn)程被分配一個時間段,稱為時間片(Quantum),即允許該進(jìn)程在該時間段中運(yùn)行。

另外,時間片的長度就是一個很關(guān)鍵的點(diǎn):

通常時間片設(shè)為 20ms~50ms 通常是一個比較合理的折中值。

前面的「時間片輪轉(zhuǎn)算法」做了個假設(shè),即讓所有的進(jìn)程同等重要,也不偏袒誰,大家的運(yùn)行時間都一樣。

但是,對于多用戶計算機(jī)系統(tǒng)就有不同的看法了,它們希望調(diào)度是有優(yōu)先級的,即希望調(diào)度程序能從就緒隊列中選擇最高優(yōu)先級的進(jìn)程進(jìn)行運(yùn)行,這稱為最高優(yōu)先級(Highest Priority First,HPF)調(diào)度算法。

進(jìn)程的優(yōu)先級可以分為,靜態(tài)優(yōu)先級或動態(tài)優(yōu)先級:

該算法也有兩種處理優(yōu)先級高的方法,非搶占式和搶占式:

但是依然有缺點(diǎn),可能會導(dǎo)致低優(yōu)先級的進(jìn)程永遠(yuǎn)不會運(yùn)行。

多級反饋隊列(Multilevel Feedback Queue)調(diào)度算法是「時間片輪轉(zhuǎn)算法」和「最高優(yōu)先級算法」的綜合和發(fā)展。

顧名思義:

工作原理:

設(shè)置了多個隊列,賦予每個隊列不同的優(yōu)先級,每個隊列優(yōu)先級從高到低,同時優(yōu)先級越高時間片越短;

新的進(jìn)程會被放入到第一級隊列的末尾,按先來先服務(wù)的原則排隊等待被調(diào)度,如果在第一級隊列規(guī)定的時間片沒運(yùn)行完成,則將其轉(zhuǎn)入到第二級隊列的末尾,以此類推,直至完成;

當(dāng)較高優(yōu)先級的隊列為空,才調(diào)度較低優(yōu)先級的隊列中的進(jìn)程運(yùn)行。如果進(jìn)程運(yùn)行時,有新進(jìn)程進(jìn)入較高優(yōu)先級的隊列,則停止當(dāng)前運(yùn)行的進(jìn)程并將其移入到原隊列末尾,接著讓較高優(yōu)先級的進(jìn)程運(yùn)行;

可以發(fā)現(xiàn),對于短作業(yè)可能可以在第一級隊列很快被處理完。對于長作業(yè),如果在第一級隊列處理不完,可以移入下次隊列等待被執(zhí)行,雖然等待的時間變長了,但是運(yùn)行時間也會更長了,所以該算法很好的兼顧了長短作業(yè),同時有較好的響應(yīng)時間。

整體架構(gòu)如下,即調(diào)度策略是模塊化設(shè)計的,調(diào)度器根據(jù)不同的進(jìn)程依次遍歷不同的調(diào)度策略,找到進(jìn)程對應(yīng)的調(diào)度策略,調(diào)度的結(jié)果即為選出一個可運(yùn)行的進(jìn)程指針,并將其加入到進(jìn)程可運(yùn)行隊列中。

以一棵紅黑樹管理所有需要調(diào)度的進(jìn)程,

紅黑樹,左邊節(jié)點(diǎn)小于右邊節(jié)點(diǎn)的值,運(yùn)行到目前為止vruntime最小的進(jìn)程,同時考慮了CPU/IO和nice,總是找vruntime最小的線程調(diào)度。

vruntime = pruntime/weight × 1024;

vruntime是虛擬運(yùn)行時間,pruntime是物理運(yùn)行時間,weight權(quán)重由nice值決定(nice越低權(quán)重越高),則運(yùn)行時間少、nice值低的的線程vruntime小,將得到優(yōu)先調(diào)度。這是一個隨運(yùn)行而動態(tài)變化的過程。

當(dāng)前文章:linux中調(diào)度進(jìn)程命令 linux任務(wù)調(diào)度 命令
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article6/docppog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、微信公眾號、電子商務(wù)、云服務(wù)器做網(wǎng)站

廣告

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

成都定制網(wǎng)站建設(shè)
天天日夜夜操人人干人人插| 中文字幕韩国三级电影| 亚洲大尺码在线视频香蕉| 粉嫩av北条麻妃电影| 午夜香蕉av一区二区三区| 国产看片色网站亚洲av| 亚洲av乱码一区二区三| 色男人天堂网在线视频| 99人妻一区二区三区在线| 人妻大乳一区二区三区| 亚洲成人福利免费网站| 久国产精品一区国产精品| 亚洲欧美日韩在线第三页| 日本和亚洲的香蕉视频| 日韩电影一区二区在线观看中文字幕 | 欧美色视频综合在线观看| 日韩av在线黄色免费大全| 欧美曰韩国内精品中文| 亚洲最大成人综合福利网| 久久精品亚洲欧美激情| 人妻系列日本在线播放| 久久精品久久黄色片看看| 色噜噜噜av天堂九区| 乱码人妻精品一区二区三区| 亚洲午夜天堂精品福利天堂| 欧美日韩免费r在线视频| 成人午夜欧美熟妇小视频| 日本亚洲精品一区二区三| 久久久精品在线免费视频| 日本免费一区二区三区的电影啊| 亚洲美女香蕉视频在线| 久久久久久久精品久久| 亚洲国产精品一区二区av不卡| 欧美老熟妇一区二区三区| 亚洲精品高清一区二区| 五月天久久开心激情网| 国产无遮挡又黄又爽网站 | 香蕉久草官网视频观看| 久久精品国产亚洲av高清一区 | 成人在线午夜免费视频| 欧洲亚洲国产一区二区|