NUMA 簡單原理介紹
NUMA 的概念簡單化的說明,就是不讓 VM 跨 socket 去讀取不同的 CPU 的 L2 cache 或是 RAM,一般來說雙路的伺服器比較少碰到,而4路的伺服器就非常明顯。假設我有一台 VM 開了 DB 給它 16 Core 結果 KVM 很好心的平均分佈 CPU 1~4 各 4 Core 的話 我的 DB 會跟烏龜爬的一樣 ←oracle db 自找的。
一般來說最怕是 CPU 1 Core 的記憶體使用到 CPU 2 的 RAM,這樣的話效率就會非常的差。
假設 VM 是 4 vCPU 而已,但是 Host 是 4 socket 的話你都有機會被系統 4個 vCPU 被拆到不同的 Host CPU socket這個時候,等於 CPU L1 L2 Cache 被閹割,VM的馬上效能從 Xeon 變成無 Cache 的 Celeron CPU。
如果遇到最差的情況的話。 CPU 1 到它的 Ram slot 是很快的,但是如果 CPU 1 運算的數據在 CPU 2 的 Ram address 上面,這個時候效能再給你比 Celeron 再更慘,所以 NUMA 在 4 Way 非常重要,而 2 way 當然也有影響但是 Chance 機率小很多。
阅读剩余
THE END