Numa 將一臺計算機劃分為多個節點(nodes)。 每個節點內部都有多個CPU怎么看物理內存,節點內部使用一個通用的內存控制器。 通過互連模塊連接節點和交換信息。
本節點的所有顯存對于本節點的所有CPU都是相同的,而對于其他節點的所有CPU都是不同的。因此,每個CPU都可以訪問整個系統內存,訪問本地節點的內存速度
最快(不帶互聯模塊),非本地節點訪問顯存速度慢(需要通過互聯模塊),即CPU訪問顯存的速度與距離遠近有關節點,距離變為節點。
查看當前numa節點狀態:
--
節點(Node)之間的距離表示從節點1訪問節點0上的顯存需要付出的代價。
Numa內存分配策略有四種:
默認值:始終在本地節點(當前進程運行的節點)上分配。
bind bind:強制分配到指定節點。
交叉:在所有節點或指定節點上交叉分配顯存。
優先級:在指定節點上分配,失敗則在其他節點上分配。
查看當前系統numa策略:
- 展示
由于numa默認的顯存分配策略是先在進程所在CPU的本地顯存中分配,會造成CPU節點間顯存分配不均衡。
當一個CPU節點顯存不足時,會導致swap ,而不是從遠程節點分配顯存。 這就是交換現象。
為什么MySQL服務器需要關閉numa?
MySQL是一個單進程多線程架構的數據庫。 當numa采用默認的顯存分配策略時,mysql進程將且只分配給numa的一個節點。
假設本節點本地顯存為10GB,MySQL配置顯存為20GB。 如果超出節點本地顯存的部分(20GB-10GB)Linux將使用swap代替其他節點的math顯存。
在這些情況下,可以觀察到即使系統的可用顯存總量還沒有用完,MySQL 進程已經開始使用 swap。
如果單機只運行一個MySQL實例,可以選擇關閉numa。 有兩種方法可以關閉 nuam:
1、硬件層,在BIOS中設置為關閉;
2. 操作系統內核,啟動時設置numa=off。
更改 /etc/grub.conf 文件并將 numa=off 添加到該行;
[root@~]#vim /boot/grub/grub.conf
標題(2.6.32-358.el6.)
根(HD0,0)
/-2.6.32-358.el6.=UUID=-28a5-4dbd-b04a-LANG=en_US.UTF-8=-sun16=auto=pc==off
保存后重啟服務器,再次查看numa中只剩下一個節點就成功了:
[root@~]#--
:1個節點(0)
:0
node0大小:
:
節點:
節點0
0:10
輸入輸出調度
不同場景選擇不同的IO調度器:
在完全隨機接入的環境下,因為CFQ可能會減少small IO相應的延遲怎么看物理內存,所以應該設置為 ,這樣更穩定。
對于 SSD 設備,使用 NOOP 或比默認調度器更好的性能也可以獲得。
查看當前系統支持的IO調度算法:
[root@]#dmesg|grep -i
離子環
IO
IO
iocfq()
查看當前設備(/dev/sda)使用的IO調度算法:
[root@]#cat/sys/block/sda/queue/
noop[cfq]
修改當前塊設備(/dev/sda)使用的IO調度算法,修改IO調度算法后立即生效:
echo "">>/sys/block/sda/queue/
要永久更改 IO 調度算法,可以通過更改內核引導參數來減少 = 調度算法:
vim/啟動/grub/menu.lst
/boot/root=標簽=/=
[root@]#vim /etc/grub.conf
標題(2.6.32-358.el6.)
根(HD0,0)
/-2.6.32-358.el6.=UUID=-f49d-49ae-9e63-LANG=en_US.UTF-8=-sun16=auto=pc==off=
交換分區
它是 Linux 的內核參數。 用戶控制用于交換頁面交換的Linux化學顯存的相對權重,將系統的頁面緩存從顯存中移除的情況降到最低。 取值范圍為0~100。 vm.的值越低,Linux內核會盡量不進行交換頁操作。 vm. 的值越高,Linux 使用的交換空間就越多。 Linux系統默認值為60,當系統需要顯存時,有60%的機會使用swap。 對于大多數桌面系統,設置為100可以提高系統的整體性能; 對于數據庫應用服務器,設置為0可以提高數學顯存的利用率,從而提高數據庫服務的響應性能。
[root@~]#vim /etc/.conf
vm.=0
-p 生效
[root@~]#-a|
vm.=0