日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 程序喵大人
[導(dǎo)讀]在《一文讀懂|進程怎么綁定CPU》這篇文章中介紹過,在Linux內(nèi)核中會為每個CPU創(chuàng)建一個可運行進程隊列,由于每個CPU都擁有一個可運行進程隊列,那么就有可能會出現(xiàn)每個可運行進程隊列之間的進程數(shù)不一樣的問題,這就是所謂的?負(fù)載不均衡?問題,如下圖所示:(圖1)最極端的情況是,一...

在《一文讀懂 | 進程怎么綁定 CPU》這篇文章中介紹過,在 Linux 內(nèi)核中會為每個 CPU 創(chuàng)建一個可運行進程隊列,由于每個 CPU 都擁有一個可運行進程隊列,那么就有可能會出現(xiàn)每個可運行進程隊列之間的進程數(shù)不一樣的問題,這就是所謂的?負(fù)載不均衡?問題,如下圖所示:

(圖1)

最極端的情況是,一個 CPU 的可運行進程隊列擁有非常多的進程,而其他 CPU 的可運行進程隊列為空,這就是著名的?一核有難,多核圍觀,如下圖:

(圖2)

為了避免這個問題的出現(xiàn),Linux 內(nèi)核實現(xiàn)了 CPU 可運行進程隊列之間的負(fù)載均衡。接下來,我們將會介紹 CPU 間的負(fù)載均衡的實現(xiàn)原理。

本文使用的內(nèi)核版本為:Linux-2.6.23

CPU 間負(fù)載均衡原理

CPU 間負(fù)載不均衡的根本原因就是,CPU 的可運行進程隊列中的進程數(shù)量不均衡導(dǎo)致的。所以,要解決 CPU 間負(fù)載不均衡的方法就是:將最繁忙的 CPU 可運行進程隊列的一些進程遷移到其他比較空閑的 CPU 中,從而達到 CPU 間負(fù)載均衡的目的。

當(dāng)然,在 2.6.0 版本的內(nèi)核的確是這樣實現(xiàn)的,我們可以看看其實現(xiàn)代碼:

static?void?
load_balance(runqueue_t?*this_rq,?int?idle,?cpumask_t?cpumask)
{
????int?imbalance,?idx,?this_cpu?=?smp_processor_id();
????runqueue_t?*busiest;
????prio_array_t?*array;
????struct?list_head?*head,?*curr;
????task_t?*tmp;

????//?1.?找到最繁忙的?CPU?運行隊列
????busiest?=?find_busiest_queue(this_rq,?this_cpu,?idle,?
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉