<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2024-08-13 來(lái)源:CTIMES 收藏

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

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

圖片.png
圖一 : 單板計算機(圖片來(lái)源:Amazon)


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


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

圖片.png
 
圖二 : Igalia公司官網(wǎng)強調該公司擅長(cháng)的多項技術(shù)中,Linux核心效能提升也是其一(圖片來(lái)源: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;


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

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


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


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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>