溫度感知的調(diào)度算法研究與實(shí)現(xiàn)
發(fā)布時(shí)間:2020-09-22 20:03
隨著目前處理器功耗的增大,芯片的性能遇到了瓶頸。過(guò)高的溫度降低了處理器的性能、可靠性和壽命,F(xiàn)代處理器用調(diào)節(jié)電壓和降低頻率作為緩解功耗與溫度問(wèn)題的首選措施。但是這些措施有著開銷大、不靈活等缺點(diǎn)。從軟件的觀點(diǎn)看,操作系統(tǒng)的調(diào)度策略能夠更有效地降低處理器的功耗。 國(guó)際上對(duì)于溫度感知的軟件調(diào)度的研究方法歸結(jié)起來(lái)有基于硬件性能計(jì)數(shù)器的和基于傳感器的。前者通過(guò)采集CPU內(nèi)部的性能計(jì)數(shù)器來(lái)推算出處理器當(dāng)前的功耗以及溫度,進(jìn)而決定如何調(diào)度。后者則直接從傳感器讀取溫度來(lái)作出調(diào)度的決策。兩種方法可以互相結(jié)合起來(lái)使用。 本文提出了溫度感知的多核處理器調(diào)度算法,主要利用了讀取傳感器的方法。包括輪轉(zhuǎn)調(diào)度算法和基于門限溫度的調(diào)度算法。這兩個(gè)調(diào)度算法都在Linux內(nèi)核中進(jìn)行了實(shí)現(xiàn)。輪轉(zhuǎn)調(diào)度算法均勻地讓多個(gè)任務(wù)在兩個(gè)核上輪流執(zhí)行,以達(dá)到平衡多核處理器的溫度,降低極端溫度的效果;陂T限溫度的調(diào)度算法把熱的進(jìn)程從一個(gè)超過(guò)門限的處理器核上遷移到相對(duì)較冷的處理器核上去,達(dá)到降低極端溫度的效果。實(shí)驗(yàn)表明,新開發(fā)的調(diào)度算法有效地降低了處理器的溫度,彌補(bǔ)了Linux原有的調(diào)度程序在溫度管理方面的不足。新的調(diào)度算法在延遲和吞吐量的損失上并不明顯。
【學(xué)位單位】:上海交通大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位年份】:2009
【中圖分類】:TP332
【部分圖文】:
圖 3 優(yōu)先級(jí)數(shù)組結(jié)構(gòu)Fig.3 Structure of Priority Arra序器的主要函數(shù)。他的任務(wù)是從運(yùn)行隊(duì)分配給這個(gè)進(jìn)程。schedule()中,當(dāng)前被調(diào)度上來(lái)的進(jìn)程表示為 next。列有沒(méi)有就緒的進(jìn)程。如果沒(méi)有,同一個(gè)調(diào)度域中的其他運(yùn)行隊(duì)列上然沒(méi)有就緒進(jìn)程在當(dāng)前運(yùn)行隊(duì)列上進(jìn)行進(jìn)程切換(直接跳到步驟 5)。組上有無(wú)進(jìn)程。如果沒(méi)有,就將兩個(gè)
則可使得該處理器的溫度有所下降。下面將先提出內(nèi)核中少量進(jìn)程的遷移算法,然后具體闡述新設(shè)計(jì)的兩個(gè)調(diào)度算法。5.1 少量進(jìn)程的遷移算法5.1.1 單進(jìn)程的遷移設(shè)計(jì)與實(shí)現(xiàn)在 Linux 的負(fù)載平衡程序中,進(jìn)程的遷移可以通過(guò) pull_task()函數(shù)來(lái)實(shí)現(xiàn)。該函數(shù)把進(jìn)程從給定優(yōu)先級(jí)數(shù)組中刪除,然后重新插入到另一個(gè)目的優(yōu)先級(jí)數(shù)組中。但是如果需要遷移的進(jìn)程正在執(zhí)行,則不能簡(jiǎn)單調(diào)用 pull_task()函數(shù)。需要先把該進(jìn)程從 CPU 上切換下來(lái),然后實(shí)施進(jìn)程的遷移。假設(shè)在系統(tǒng)上除了后臺(tái)系統(tǒng)進(jìn)程之外,只運(yùn)行有一個(gè)進(jìn)程。那么可以把單進(jìn)程的遷移設(shè)計(jì)為:當(dāng)兩個(gè)核的溫度不同時(shí),把進(jìn)程從溫度較高的核遷移到溫度較低的核上。那么遷移一個(gè)熱的進(jìn)程 (比如將其命名為 hot task)需要三個(gè)步驟,如圖 6 所示。
可以避免進(jìn)程在雙核處理器上的頻繁的來(lái)回遷移。最后需要把 swap_state 重新置為 0,表示遷移完畢。(7) 由于 issue_migration()函數(shù)訪問(wèn)了運(yùn)行隊(duì)列等全局的數(shù)據(jù)結(jié)構(gòu),為了防止并發(fā)訪問(wèn),必須加上兩個(gè)運(yùn)行隊(duì)列的鎖。這可以通過(guò)調(diào)用如下代碼來(lái)實(shí)現(xiàn)。double_rq_lock(rq0, rq1); /*對(duì)兩個(gè)隊(duì)列加鎖*/issue_migration();double_rq_unlock(rq0, rq1); /*釋放兩個(gè)隊(duì)列的鎖*/5.1.2 雙進(jìn)程的互換設(shè)計(jì)與實(shí)現(xiàn)和單進(jìn)程的遷移設(shè)計(jì)一樣,雙進(jìn)程的互換設(shè)計(jì)也是建立在把當(dāng)前進(jìn)程切換下來(lái),然后再實(shí)施進(jìn)程遷移的基礎(chǔ)上。假設(shè)系統(tǒng)上除了后臺(tái)進(jìn)程,只有兩個(gè)進(jìn)程在運(yùn)行。兩個(gè)進(jìn)程運(yùn)行過(guò)程中釋放的熱量不一樣,分別設(shè)定為 hot 進(jìn)程和 cool 進(jìn)程。和單個(gè)進(jìn)程一樣,兩個(gè)進(jìn)程的互換也需要三個(gè)步驟,如圖 7 所示。
本文編號(hào):2824857
【學(xué)位單位】:上海交通大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位年份】:2009
【中圖分類】:TP332
【部分圖文】:
圖 3 優(yōu)先級(jí)數(shù)組結(jié)構(gòu)Fig.3 Structure of Priority Arra序器的主要函數(shù)。他的任務(wù)是從運(yùn)行隊(duì)分配給這個(gè)進(jìn)程。schedule()中,當(dāng)前被調(diào)度上來(lái)的進(jìn)程表示為 next。列有沒(méi)有就緒的進(jìn)程。如果沒(méi)有,同一個(gè)調(diào)度域中的其他運(yùn)行隊(duì)列上然沒(méi)有就緒進(jìn)程在當(dāng)前運(yùn)行隊(duì)列上進(jìn)行進(jìn)程切換(直接跳到步驟 5)。組上有無(wú)進(jìn)程。如果沒(méi)有,就將兩個(gè)
則可使得該處理器的溫度有所下降。下面將先提出內(nèi)核中少量進(jìn)程的遷移算法,然后具體闡述新設(shè)計(jì)的兩個(gè)調(diào)度算法。5.1 少量進(jìn)程的遷移算法5.1.1 單進(jìn)程的遷移設(shè)計(jì)與實(shí)現(xiàn)在 Linux 的負(fù)載平衡程序中,進(jìn)程的遷移可以通過(guò) pull_task()函數(shù)來(lái)實(shí)現(xiàn)。該函數(shù)把進(jìn)程從給定優(yōu)先級(jí)數(shù)組中刪除,然后重新插入到另一個(gè)目的優(yōu)先級(jí)數(shù)組中。但是如果需要遷移的進(jìn)程正在執(zhí)行,則不能簡(jiǎn)單調(diào)用 pull_task()函數(shù)。需要先把該進(jìn)程從 CPU 上切換下來(lái),然后實(shí)施進(jìn)程的遷移。假設(shè)在系統(tǒng)上除了后臺(tái)系統(tǒng)進(jìn)程之外,只運(yùn)行有一個(gè)進(jìn)程。那么可以把單進(jìn)程的遷移設(shè)計(jì)為:當(dāng)兩個(gè)核的溫度不同時(shí),把進(jìn)程從溫度較高的核遷移到溫度較低的核上。那么遷移一個(gè)熱的進(jìn)程 (比如將其命名為 hot task)需要三個(gè)步驟,如圖 6 所示。
可以避免進(jìn)程在雙核處理器上的頻繁的來(lái)回遷移。最后需要把 swap_state 重新置為 0,表示遷移完畢。(7) 由于 issue_migration()函數(shù)訪問(wèn)了運(yùn)行隊(duì)列等全局的數(shù)據(jù)結(jié)構(gòu),為了防止并發(fā)訪問(wèn),必須加上兩個(gè)運(yùn)行隊(duì)列的鎖。這可以通過(guò)調(diào)用如下代碼來(lái)實(shí)現(xiàn)。double_rq_lock(rq0, rq1); /*對(duì)兩個(gè)隊(duì)列加鎖*/issue_migration();double_rq_unlock(rq0, rq1); /*釋放兩個(gè)隊(duì)列的鎖*/5.1.2 雙進(jìn)程的互換設(shè)計(jì)與實(shí)現(xiàn)和單進(jìn)程的遷移設(shè)計(jì)一樣,雙進(jìn)程的互換設(shè)計(jì)也是建立在把當(dāng)前進(jìn)程切換下來(lái),然后再實(shí)施進(jìn)程遷移的基礎(chǔ)上。假設(shè)系統(tǒng)上除了后臺(tái)進(jìn)程,只有兩個(gè)進(jìn)程在運(yùn)行。兩個(gè)進(jìn)程運(yùn)行過(guò)程中釋放的熱量不一樣,分別設(shè)定為 hot 進(jìn)程和 cool 進(jìn)程。和單個(gè)進(jìn)程一樣,兩個(gè)進(jìn)程的互換也需要三個(gè)步驟,如圖 7 所示。
【引證文獻(xiàn)】
相關(guān)碩士學(xué)位論文 前2條
1 尹曉靜;面向眾核溫度感知的Linux調(diào)度器的研究與實(shí)現(xiàn)[D];上海交通大學(xué);2011年
2 葉經(jīng)緯;基于多核溫度感知的Linux進(jìn)程調(diào)度器研究與實(shí)現(xiàn)[D];上海交通大學(xué);2010年
本文編號(hào):2824857
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2824857.html
最近更新
教材專著