博客專欄

        EEPW首頁 > 博客 > iTOP4412開發(fā)板Linux下多核處理器相關(guān)知識

        iTOP4412開發(fā)板Linux下多核處理器相關(guān)知識

        發(fā)布人:daybydayi 時間:2020-06-23 來源:工程師 發(fā)布文章
        多核處理器是指在一枚處理器中集成兩個或多個完整的計算引擎(內(nèi)核)。多核技術(shù)的
        開發(fā)源于工程師們認識到,僅僅提高單核芯片的速度會產(chǎn)生過多熱量且無法帶來相應(yīng)的性能改善,先前的處理器產(chǎn)品就是如此。他們認識到,在先前產(chǎn)品中以那種速率,處理器產(chǎn)生的熱量很快會超過太陽表面。即便是沒有熱量問題,其性價比也令人難以接受,速度稍快的處理器價格要高很多。
        基于以上事實,工程師們開發(fā)了多核芯片,使之滿足‘橫向擴展’(而非‘縱向擴
        ’)的方法,從而提高性能。
        1. Linux 下,如何確認是多核或多 CPU:
        #cat /proc/cpuinfo
        如果有多個類似以下的項目,則為多核或多 CPU:
        processor : 0
        ......
        processor : 1
        2. Linux 下,如何看每個 CPU 的使用率:
        #top -d 1
        之后按下 1. 則顯示多個 CPU
        Cpu0 : 1.0%us3.0%sy0.0%ni96.0%id0.0%wa0.0%hi
        0.0%si0.0%st
        Cpu1 : 0.0%us0.0%sy0.0%ni100.0%id0.0%wa0.0%hi0.0%si
        0.0%st
        3. 如何察看某個進程在哪個 CPU 上運行:
        #top -d 1
        之后按下 f.進入 top Current Fields 設(shè)置頁面:
        選中:j: P = Last used cpu (SMP)
        則多了一項:P 顯示此進程使用哪個 CPU
        Sam 經(jīng)過試驗發(fā)現(xiàn):同一個進程,在不同時刻,會使用不同 CPU Core.這應(yīng)該是 Linux
        Kernel SMP 處理的。
        4. 配置 Linux Kernel 使之支持多 Core
        內(nèi)核配置期間必須啟用 CONFIG_SMP 選項,以使內(nèi)核感知 SMP
        Processor type and features ---> Symmetric multi-processing support
        察看當(dāng)前 Linux Kernel 是否支持(或者使用)SMP
        #uname -a
        5. Kernel 2.6 SMP 負載平衡:
        SMP 系統(tǒng)中創(chuàng)建任務(wù)時,這些任務(wù)都被放到一個給定的 CPU 運行隊列中。通常來
        說,我們無法知道一個任務(wù)何時是短期存在的,何時需要長期運行。因此,最初任務(wù)到 CPU
        的分配可能并不理想。
        為了在 CPU 之間維護任務(wù)負載的均衡,任務(wù)可以重新進行分發(fā):將任務(wù)從負載重的
        CPU 上移動到負載輕的 CPU 上。Linux 2.6 版本的調(diào)度器使用負載均衡(load
        balancing) 提供了這種功能。每隔 200ms,處理器都會檢查 CPU 的負載是否不均衡;如
        果不均衡,處理器就會在 CPU 之間進行一次任務(wù)均衡操作。
        這個過程的一點負面影響是新 CPU 的緩存對于遷移過來的任務(wù)來說是冷的(需要將數(shù)據(jù)
        讀入緩存中)。
        記住 CPU 緩存是一個本地(片上)內(nèi)存,提供了比系統(tǒng)內(nèi)存更快的訪問能力。如果一個
        任務(wù)是在某個 CPU 上執(zhí)行的,與這個任務(wù)有關(guān)的數(shù)據(jù)都會被放到這個 CPU 的本地緩存中,
        這就稱為熱的。如果對于某個任務(wù)來說,CPU 的本地緩存中沒有任何數(shù)據(jù),那么這個緩存就稱為冷的。
        不幸的是,保持 CPU 繁忙會出現(xiàn) CPU 緩存對于遷移過來的任務(wù)為冷的情況。
        6. 應(yīng)用程序如何利用多 Core :
        開發(fā)人員可將可并行的代碼寫入線程,而這些線程會被 SMP 操作系統(tǒng)安排并發(fā)運行。

        另外,Sam 設(shè)想,對于必須順序執(zhí)行的代碼。可以將其分為多個節(jié)點,每個節(jié)點為一個
        thread.并在節(jié)點間放置 channel.節(jié)點間形如流水線。這樣也可以大大增強 CPU 利用率。
        更多內(nèi)容關(guān)注公眾號迅為電子:


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞:

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 黄陵县| 湘阴县| 分宜县| 蒲城县| 南和县| 南宫市| 华坪县| 阿鲁科尔沁旗| 江山市| 江津市| 会东县| 尼木县| 沐川县| 织金县| 涪陵区| 洛阳市| 四平市| 寿阳县| 逊克县| 于田县| 松潘县| 平遥县| 通海县| 兴山县| 汾阳市| 乡城县| 南通市| 南部县| 杂多县| 武陟县| 察隅县| 镇沅| 桐乡市| 衡南县| 天柱县| 玉树县| 徐水县| 陈巴尔虎旗| 常山县| 池州市| 浙江省|