亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

linux如何關(guān)閉numa

 更新時(shí)間:2024年05月23日 09:44:59   作者:宇宙超級(jí)無(wú)敵天下第一爆龍戰(zhàn)士  
這篇文章主要介紹了linux如何關(guān)閉numa問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

linux關(guān)閉numa

以下內(nèi)容在Centos8操作系統(tǒng)演示

1、編輯/etc/default/grub

2、在 GRUB_CMDLINE_LINUX里添加 numa=off

3、輸入命令 grub2-mkconfig -o /boot/grub2/grub.cfg 用更改的文件重新生成 /boot/grub2/grub.cfg

重啟生效

4、重啟后查看

cat /proc/cmdline 再次確認(rèn)

linux numa技術(shù)說(shuō)明

隨著科學(xué)計(jì)算、事務(wù)處理對(duì)計(jì)算機(jī)性能要求的不斷提高,SMP(對(duì)稱(chēng)多處理器)系統(tǒng)的應(yīng)用越來(lái)越廣泛,規(guī)模也越來(lái)越大,但由于傳統(tǒng)的SMP系統(tǒng)中,所有處理器都共享系統(tǒng)總線(xiàn),因此當(dāng)處理器的數(shù)目增大時(shí),系統(tǒng)總線(xiàn)的競(jìng)爭(zhēng)沖突加大,系統(tǒng)總線(xiàn)將成為瓶頸,可擴(kuò)展能力受到極大限制。

NUMA(Non-Uniform Memory Access Architecture)技術(shù)有效結(jié)合了SMP系統(tǒng)易編程性和MPP(大規(guī)模并行)系統(tǒng)易擴(kuò)展性的特點(diǎn),較好解決了SMP系統(tǒng)的可擴(kuò)展性問(wèn)題。

現(xiàn)在的機(jī)器上都是有多個(gè)CPU和多個(gè)內(nèi)存塊。以前都是將內(nèi)存塊看成是一大塊內(nèi)存,所有CPU到這個(gè)共享內(nèi)存的訪(fǎng)問(wèn)消息是一樣的。這就是之前普遍使用的SMP模型。但是隨著處理器的增加,共享內(nèi)存可能會(huì)導(dǎo)致內(nèi)存訪(fǎng)問(wèn)沖突越來(lái)越厲害,且如果內(nèi)存訪(fǎng)問(wèn)達(dá)到瓶頸的時(shí)候,性能就不能隨之增加。

NUMA就是這樣的環(huán)境下引入的一個(gè)模型。比如一臺(tái)機(jī)器是有2個(gè)處理器,有4個(gè)內(nèi)存塊。將1個(gè)處理器和兩個(gè)內(nèi)存塊合起來(lái),稱(chēng)為一個(gè)NUMA node,這樣這個(gè)機(jī)器就會(huì)有兩個(gè)NUMA node。在物理分布上,NUMA node的處理器和內(nèi)存塊的物理距離更小,因此訪(fǎng)問(wèn)也更快。

比如這臺(tái)機(jī)器會(huì)分左右兩個(gè)處理器(cpu1, cpu2),在每個(gè)處理器兩邊放兩個(gè)內(nèi)存塊(memory1.1, memory1.2, memory2.1,memory2.2),這樣NUMA node1的cpu1訪(fǎng)問(wèn)memory1.1和memory1.2就比訪(fǎng)問(wèn)memory2.1和memory2.2更快。所以使用NUMA的模式如果能盡量保證本node內(nèi)的CPU只訪(fǎng)問(wèn)本node內(nèi)的內(nèi)存塊,那這樣的效率就是最高的。

在運(yùn)行程序的時(shí)候使用numactl -membind和-physcpubind就能制定將這個(gè)程序運(yùn)行在哪個(gè)cpu和哪個(gè)memory中。當(dāng)程序只使用一個(gè)node資源所需要的時(shí)間遠(yuǎn)小于使用多個(gè)node資源。所以限定程序在numa node中運(yùn)行是有實(shí)際意義的。

但是呢,指定numa也就其弊端,當(dāng)服務(wù)器還有內(nèi)存的時(shí)候,發(fā)現(xiàn)它已經(jīng)在開(kāi)始使用swap了,甚至已經(jīng)導(dǎo)致機(jī)器出現(xiàn)停滯的現(xiàn)象。這個(gè)就有可能是由于numa的限制,如果一個(gè)進(jìn)程限制它只能使用自己的numa節(jié)點(diǎn)的內(nèi)存,那么當(dāng)自身numa node內(nèi)存使用光之后,就不會(huì)去使用其他numa node的內(nèi)存了,會(huì)開(kāi)始使用swap,甚至更糟的情況,機(jī)器沒(méi)有設(shè)置swap的時(shí)候,可能會(huì)直接死機(jī)。

使用如下命令查看NUMA的信息

<span style="color:#333333">[root@web8 ~]# numastat
                           node0           node1
numa_hit               735166632       261638764
numa_miss                  12766         1411671
numa_foreign             1411671           12766
interleave_hit             11097           11138
local_node             735166389       261590090
other_node                 13009         1460345
[root@web8 ~]#
 
 
[root@web8 ~]# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7
cpubind: 0 1
nodebind: 0 1
membind: 0 1
 
[root@web8 ~]# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3
node 0 size: 8113 MB
node 0 free: 5567 MB
node 1 cpus: 4 5 6 7
node 1 size: 8192 MB
node 1 free: 5871 MB
node distances:
node   0   1
  0:  10  21
  1:  21  10
 
[root@web8 ~]# numactl
usage: numactl [--interleave=nodes] [--preferred=node]
               [--physcpubind=cpus] [--cpunodebind=nodes]
               [--membind=nodes] [--localalloc] command args ...
       numactl [--show]
       numactl [--hardware]
       numactl [--length length] [--offset offset] [--shmmode shmmode]
               [--strict]
               [--shmid id] --shm shmkeyfile | --file tmpfsfile
               [--huge] [--touch]
               memory policy | --dump | --dump-nodes
 
memory policy is --interleave, --preferred, --membind, --localalloc
nodes is a comma delimited list of node numbers or A-B ranges or all.
cpus is a comma delimited list of cpu numbers or A-B ranges or all
all ranges can be inverted with !
all numbers and ranges can be made cpuset-relative with +
the old --cpubind argument is deprecated.
use --cpunodebind or --physcpubind instead
length can have g (GB), m (MB) or k (KB) suffixes
[root@web8 ~]#</span>

綜上所述得出的結(jié)論就是,根據(jù)具體業(yè)務(wù)決定NUMA的使用。

1)如果你的程序是會(huì)占用大規(guī)模內(nèi)存的,建議關(guān)閉numa node的限制,可以使用numactl --interleave=all來(lái)取消numa node的限制。否則會(huì)導(dǎo)致swap的使用,影響性能。

2)如果你的程序并不占用大內(nèi)存,而是要求更快的程序運(yùn)行時(shí)間。建議選擇限制只訪(fǎng)問(wèn)本numa node的方法來(lái)進(jìn)行處理。

操作系統(tǒng)層面關(guān)閉NUMA

有如下方法:

1)BIOS中關(guān)閉NUMA設(shè)置

2)在操作系統(tǒng)中關(guān)閉,

在RHEL 4, RHEL 5, RHEL 6 中,在/boot/grub/grub.conf文件中添加numa=off,如下所示:

  title Red Hat Enterprise Linux AS (2.6.9-55.EL)
            root (hd0,0)
            kernel /vmlinuz-2.6.9-55.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet numa=off
            initrd /initrd-2.6.9-55.EL.img

在RHEL 7 中,需要修改/etc/default/grub文件,添加numa=off,并且需要重建grub,然后重啟OS:

[root@18cRac1 software]# cat  /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet transparent_hugepage=never numa=off"
GRUB_DISABLE_RECOVERY="true"
[root@18cRac1 software]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-4c7b16d0887748f883ee1a722ec96352
Found initrd image: /boot/initramfs-0-rescue-4c7b16d0887748f883ee1a722ec96352.img
done
[root@18cRac1 software]#

數(shù)據(jù)庫(kù)層面

1)Oracle數(shù)據(jù)庫(kù)層面關(guān)閉:

_enable_NUMA_optimization=false  (11g中參數(shù)為_(kāi)enable_NUMA_support)

2)啟動(dòng)MySQL的時(shí)候,關(guān)閉NUMA特性:

numactl --interleave=all mysqld

當(dāng)然,最好的方式是在BIOS中關(guān)閉。

vm.swappiness是操作系統(tǒng)控制物理內(nèi)存交換出去的策略。它允許的值是一個(gè)百分比的值,最小為0,最大運(yùn)行100,該值默認(rèn)為60。vm.swappiness設(shè)置為0表示盡量少swap,100表示盡量將inactive的內(nèi)存頁(yè)交換出去。

具體的說(shuō):當(dāng)內(nèi)存基本用滿(mǎn)的時(shí)候,系統(tǒng)會(huì)根據(jù)這個(gè)參數(shù)來(lái)判斷是把內(nèi)存中很少用到的inactive 內(nèi)存交換出去,還是釋放數(shù)據(jù)的cache。cache中緩存著從磁盤(pán)讀出來(lái)的數(shù)據(jù),根據(jù)程序的局部性原理,這些數(shù)據(jù)有可能在接下來(lái)又要被讀 取;inactive 內(nèi)存顧名思義,就是那些被應(yīng)用程序映射著,但是 長(zhǎng)時(shí)間 不用的內(nèi)存。

一般來(lái)說(shuō),MySQL,特別是InnoDB管理內(nèi)存緩存,它占用的內(nèi)存比較多,不經(jīng)常訪(fǎng)問(wèn)的內(nèi)存也會(huì)不少,這些內(nèi)存如果被Linux錯(cuò)誤的交換出去了,將浪費(fèi)很多CPU和IO資源。 InnoDB自己管理緩存,cache的文件數(shù)據(jù)來(lái)說(shuō)占用了內(nèi)存,對(duì)InnoDB幾乎沒(méi)有任何好處。

所以,在MySQL的服務(wù)器上最好設(shè)置vm.swappiness=0。

我們可以通過(guò)在sysctl.conf中添加一行:

echo vm.swappiness = 0 /etc/sysctl.conf

并使用sysctl -p來(lái)使得該參數(shù)生效。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論