在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux核心修補(bǔ)程序讓第五代樹莓派增速18%

            Linux核心修補(bǔ)程序讓第五代樹莓派增速18%

            作者: 時間:2024-08-13 來源:CTIMES 收藏

            操作系統(tǒng)的核心(kernel)是不斷迭代精進(jìn)的,包含正式改版或若干程度的修補(bǔ)(patch,對岸稱為補(bǔ)?。┑龋谡降皶扔腥颂峤?,提交后需要再評估確認(rèn),有些會舍棄,有些會納入后續(xù)正式的迭代。
            最近64位Arm架構(gòu)的核心程序,有一家自由軟件顧問公司Igalia嘗試在樹莓派上模擬NUMA(Non-Uniform Memory Access,翻譯成非統(tǒng)一內(nèi)存存取,但使用不普遍),如此可以讓(RPi 5)增速6%~18%,這作法已經(jīng)在核心清單的相關(guān)討論中,由賬號Tvrtko Ursulin所提出。

            本文引用地址:http://www.biyoush.com/article/202408/461965.htm

            圖片.png
            圖一 : 單板計(jì)算機(jī)(圖片來源:Amazon)


            NUMA簡述
            在這里要先說明一下何謂NUMA,這其實(shí)是一種計(jì)算機(jī)硬件架構(gòu),1990年代UNIX高階服務(wù)器飛速發(fā)展時,系統(tǒng)內(nèi)CPU數(shù)目的增加、RAM容量的增加,但要讓多顆CPU跟過往一樣,都存取同一塊RAM內(nèi)存空間,這一段存取變成了效能瓶頸,故系統(tǒng)商開始提倡NUMA。
            NUMA把內(nèi)存分切、配發(fā)給CPU,CPU平常多數(shù)時間只存取自己所屬的內(nèi)存,必要時才與其他內(nèi)存快進(jìn)行數(shù)據(jù)同步或交換,另外NUMA也可能將內(nèi)存分層,分成CPU專屬層、一個群中的共享層、整體系統(tǒng)的共享等等。
            雖然有這些空間切分、數(shù)據(jù)同步機(jī)制,但這些都以硬件方式實(shí)現(xiàn),是在背地里無形中運(yùn)作,軟件執(zhí)行上感受不到差異,運(yùn)作上仍然以為是一個整體連續(xù)的內(nèi)存空間。Linux核心在2.5版后也支持NUMA。


            效能提升6%~18%
            雖然Linux核心支持NUMA,但如果系統(tǒng)硬件設(shè)計(jì)上本身就沒有NUMA,Linux核心的NUMA功能一樣無法發(fā)揮,RPi 5即是如此,主要是RPi 5的主控芯片BMC2712沒有。
            不過,前述的Igalia公司提出一個,讓樹莓派系統(tǒng)跑一個NUMA仿真軟件(Emulator),以軟件方式實(shí)現(xiàn)NUMA(可能搭配運(yùn)用上BMC2712內(nèi)的GPU),這個修補(bǔ)程序其實(shí)才約100行,主要的C語言程序代碼也不到60行。

            圖片.png
             
            圖二 : Igalia公司官網(wǎng)強(qiáng)調(diào)該公司擅長的多項(xiàng)技術(shù)中,Linux核心效能提升也是其一(圖片來源:Igalia)

            #include
            #include "numa_emulation.h"
            static unsigned int emu_nodes;
            int __init numa_emu_cmdline(char *str)
            {
            int ret;
            ret = kstrtouint(str, 10, &emu_nodes);
            if (ret)
            return ret;
            if (emu_nodes > MAX_NUMNODES) {
            pr_notice("numa=fake=%u too large, reducing to %un",
            emu_nodes, MAX_NUMNODES);
            emu_nodes = MAX_NUMNODES;
            }
            return 0;
            }
            int __init numa_emu_init(void)
            {
            phys_addr_t start, end;
            unsigned long size;
            unsigned int i;
            int ret;
            if (!emu_nodes)
            return -EINVAL;
            start = memblock_start_of_DRAM();
            end = memblock_end_of_DRAM() - 1;
            size = DIV_ROUND_DOWN_ULL(end - start + 1, emu_nodes);
            size = PAGE_ALIGN_DOWN(size);
            for (i = 0; i < emu_nodes; i++) {
            u64 s, e;
            s = start + i * size;
            e = s + size - 1;
            if (i == (emu_nodes - 1) && e != end)
            e = end;
            pr_info("Faking a node at [mem %pap-%pap]n", &s, &e);
            ret = numa_add_memblk(i, s, e + 1);
            if (ret) {
            pr_err("Failed to add fake NUMA node %d!n", i);
            break;
            }
            }
            return ret;


            修補(bǔ)程序相關(guān)的C語言程序代碼,一起頭即放入Linux內(nèi)存區(qū)塊的含括檔memblock.h及NUMA模擬的含括檔numa_emulation.h(數(shù)據(jù)源:CNX Software)

            相關(guān)配套修改也包含在操作系統(tǒng)上要使用一個NUMA_EMULATION的新Kconfig選項(xiàng),核心啟動參數(shù)要加入numa=fake=,然后搭配命令行numactl –interleave=all COMMAND等,如此可以改變BMC2712內(nèi)存儲器控制器的存取方式,另外也要透過systemd命令來重新配置系統(tǒng)范圍政策(system-wide policy)。
            既然NUMA是為了讓整體系統(tǒng)更具效能的,那就需要測試看看NUMA仿真軟件是否真的有效果,對此用效能基準(zhǔn)程序Geekbench 6來測試,發(fā)現(xiàn)有無安裝修補(bǔ)程序確實(shí)有效能差異。
            測試的結(jié)果顯示,安裝修補(bǔ)程序后的單核效能提升約6%,多核(RPi 5有4個核心)則提升到18%,這樣的提升形同把2.4GHz的RPi 5超頻到2.83GHz。


            仍待觀望
            雖然測試結(jié)果不錯,但目前還有兩個問題,一是真的在一般運(yùn)用上能得到加速感受嗎?有時基準(zhǔn)檢驗(yàn)的跑分不錯,實(shí)際上沒有幫助,類似紙上成績不錯,實(shí)際表現(xiàn)不佳,因此信息業(yè)界有時也會強(qiáng)調(diào)所謂的real application performance,而不是看benchmark。
            另一個問題是:這個修補(bǔ)程序提交出去了,但是否能正式列入成Linux核心修補(bǔ)還需要一段時間,且估計(jì)時間冗長。目前提交上的相關(guān)討論似乎有不樂意的聲音出現(xiàn),認(rèn)為這有點(diǎn)變通取巧不正規(guī),不應(yīng)該正式列入,一旦正式列入就需要后續(xù)一連串的相關(guān)維護(hù)等。


            結(jié)語
            最后筆者覺得,無論提交能否納入正式核心修補(bǔ),這一嘗試肯定是正向的,過往的樹莓派其實(shí)在I/O方面已經(jīng)出現(xiàn)瓶頸(芯片內(nèi)的Interconnect帶寬不足),硬件規(guī)格數(shù)字雖已與過往PC相仿,效能卻仍有落差,估計(jì)這是新一代樹莓派要額外提出RP1附屬搭配芯片的原因。

            既然有人提出NUMA仿真軟件,這表示開始有人嘗試提升樹莓派的內(nèi)存存取效率,會引起各方關(guān)注此一環(huán)節(jié)的效能提升,是真的起用仿真軟件來零成本提升效能,還是考慮在下一代的樹莓派主控芯片上改善此一環(huán)節(jié)的硬件設(shè)計(jì),對用戶而言都是好消息。



            評論


            相關(guān)推薦

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

            關(guān)閉