什么是NUMA?
NUMA是一種在多處理器架構(gòu)中使用的技術(shù)。它允許不同的處理器核心(或物理處理器)以低延遲的方式訪問共享的物理內(nèi)存。通常,互連技術(shù)(如快速數(shù)據(jù)互連或Infiniband)用于將內(nèi)存和處理器連接在一起。
為什么會建議關(guān)閉NUMA?
如果您使用MySQL和NUMA架構(gòu),可能有些驚人的事情發(fā)生。在某些情況下,啟用NUMA可能會導(dǎo)致MySQL性能下降或崩潰。這是由NUMA處理器在訪問相同的內(nèi)存地址時產(chǎn)生的內(nèi)存競爭的結(jié)果。
如何關(guān)閉NUMA?
在Linux上,您可以通過設(shè)置numa=off
來關(guān)閉NUMA。在應(yīng)用程序(例如MySQL)啟動之前,可以在操作系統(tǒng)啟動參數(shù)中添加numa=off
。
例如,在Ubuntu系統(tǒng)上,可以將選項(xiàng)添加到/etc/default/grub
文件中的GRUB_CMDLINE_LINUX_DEFAULT
行中,然后重新生成引導(dǎo)程序配置:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash numa=off"
sudo update-grub
重啟系統(tǒng)后,NUMA將禁用并且不會影響MySQL性能。
為什么關(guān)閉NUMA對MySQL性能有所改善?
當(dāng)NUMA啟用時,內(nèi)存被分成不同的區(qū)域,并且每個區(qū)域?qū)椴煌幚砥骱诵念l繁訪問。在這種情況下,由于NUMA處理器的內(nèi)存訪問方式,可能會導(dǎo)致處理器核心之間的內(nèi)存競爭,最終會導(dǎo)致MySQL性能下降。因此,關(guān)閉NUMA可以防止這種內(nèi)存競爭,從而提高M(jìn)ySQL的性能。
結(jié)論
雖然NUMA技術(shù)在多處理器系統(tǒng)中非常有用,但在某些情況下,它可能會產(chǎn)生相反的效果。MySQL被證明可能受到NUMA內(nèi)存競爭的負(fù)面影響。因此,建議關(guān)閉NUMA并防止有害的內(nèi)存競爭。此外,關(guān)閉NUMA還可以提高M(jìn)ySQL的性能并確保更高的可靠性。