1 回答

TA貢獻1830條經(jīng)驗 獲得超9個贊
問:“那么,進程數(shù)應(yīng)該是 8 還是 16?”
因此,如果子進程分布式工作負載群是緩存重用密集型(而不是內(nèi)存 I/O),- SpaceDOMAIN
constraints 規(guī)則,因為可緩存數(shù)據(jù)的大小將在決定是 8 還是 16 時發(fā)揮主要作用.
為什么 ?
因為內(nèi)存 I/O 的成本比緩存中的數(shù)據(jù)高出大約一千倍,按內(nèi)存 I/OTimeDOMAIN
支付。3xx - 4xx [ns]
0.1 ~ 0.4 [ns]
如何做出決定?
在決定生產(chǎn)規(guī)模配置之前,進行小規(guī)模測試。
因此,如果要分布式的工作負載群是網(wǎng)絡(luò) I/O,或其他顯著的(本地非奇異的)延遲源,依賴,則TimeDOMAIN
可能會受益于延遲屏蔽技巧,運行 16、160 或僅1600 個線程(在這種情況下不是進程)。
為什么 ?
因為進行網(wǎng)絡(luò) I/O 的成本提供了如此多的等待時間(一些[ms]
網(wǎng)絡(luò) I/O RTT 延遲時間足以處理1E7 ~ 10.000.000
每個 CPU 核心 uop-s,這是相當很多工作。因此,即使是整個進程的智能交錯,這里也只使用基于延遲屏蔽的線程并發(fā)處理可能適合(因為等待來自網(wǎng)絡(luò) I/O 的遠程“答案”的線程不應(yīng)該為 GIL 鎖而戰(zhàn),因為他們在收到預(yù)期的 I/O 字節(jié)之前沒有什么可計算的,是嗎?)
如何做出決定?
查看代碼以確定游戲中有多少網(wǎng)絡(luò) I/O 提取和緩存足跡大小的讀?。ㄔ?2020/Q2+ L1 緩存增長到大約幾秒[MB]
)。對于這些操作重復(fù)多次的情況,請毫不猶豫地為每個“慢速”網(wǎng)絡(luò) I/O 目標啟動一個線程,因為處理將受益于“長時間”等待的巧合創(chuàng)建的屏蔽 -以廉價(“快速”)和(由于“許多”和“長”等待時間)相當稀疏的線程切換或什至 O/S 驅(qū)動的進程調(diào)度程序?qū)⑼暾淖舆M程映射到一個免費的 CPU 核心。
因此,如果要分配的工作負載群是上述情況的某種混合,除了在實際硬件本地/非本地資源上進行試驗之外別無他法。
為什么 ?
因為沒有經(jīng)驗法則來微調(diào)工作負載處理到實際 CPU 核心資源的映射。
盡管如此,
人們可能很容易發(fā)現(xiàn)付出的代價比以往任何時候都多回報實現(xiàn)減速
的已知陷阱,而不是(只是希望獲得)加速
在所有情況下,遵守修訂后的阿姆達爾定律的開銷嚴格、資源感知和工作負載的原子性確定了一個收益遞減點,之后任何更多的工作人員(CPU 核心)都不會提高希望獲得的加速。Stack Overflow 的帖子中表達了 S << 1 的許多驚喜,因此人們可以閱讀盡可能多的不該做的事情(通過反模式學習)。
添加回答
舉報