目錄
在NUMA中儲存層次的概念:
numactl的使用
首頁 運維 linux運維 一起聊聊linux上numa架構(圖文詳解)

一起聊聊linux上numa架構(圖文詳解)

Mar 03, 2022 am 06:00 AM
linux

這篇文章帶給大家啦linux中numa架構介紹的相關知識,希望對大家有幫助。

一起聊聊linux上numa架構(圖文詳解)

以下案例是基於 Ubuntu 16.04,同樣適用於其他的 Linux 系統。我使用的案例環境如下:

機器配置:32 CPU,64GB 記憶體

在NUMA中儲存層次的概念:

一起聊聊linux上numa架構(圖文詳解)

一起聊聊linux上numa架構(圖文詳解)

一起聊聊linux上numa架構(圖文詳解)

1)處理器層:單一物理核,稱為處理器層。 2)本地節點層:對於某個節點中的所有處理器,此節點稱為本地節點。 3)home節點層:與本機節點相鄰的節點稱為home節點。 4)遠端節點層:非本地節點或鄰居節點的節點,稱為遠端節點。 CPU存取不同類型節點記憶體的速度是不相同的,訪問本地節點的速度最快,訪問遠端節點的速度最慢,即訪問速度與節點的距離有關,距離越遠訪問速度越慢,此距離稱作Node Distance。應用程式要盡量的減少不同CPU模組之間的交互,如果應用程式能有方法固定在一個CPU模組裡,那麼應用的效能將會有很大的提升。

**以鯕鵬920處理器講一下cpu晶片的構成:**鯤鵬920處理器片上系統的每個超級核心集群包含6個核心集群、2個I/O集群和4個DDR控制器。每個超級核心集群封裝成一個CPU晶片。每個晶片上整合了4個72位元(64位元資料加8位元ECC)、資料傳輸率最高為3200MT/s的高速DDR4通道,單一晶片可支援最多512GB×4的DDR儲存空間。 L3 Cache在物理上被分成兩個部分:L3 Cache TAG和L3 Cache DATA。 L3 Cache TAG整合在每個核心叢集中,以降低監聽延遲。 L3 Cache DATA則直接連接片上匯流排。 Hydra根代理(Hydra Home Agent,HHA)是處理多晶片系統Cache一致性協定的模組。 POE_ICL是系統配置的硬體加速器,一般可以用作分組順序整理器、訊息佇列、訊息分發或實現某個處理器核心的特定任務等。此外,每個超級核心叢集在實體上也配置了通用中斷控制器分發器(GICD)模組,相容於ARM的GICv4規格。當單晶片或多晶片系統中有多個超級核心集群時,只有一個GICD對系統軟體可見。

numactl的使用

Linux提供了一個手工調優的命令numactl(預設不安裝),在Ubuntu上的安裝命令如下:

sudo apt install numactl -y
登入後複製
###首先你可以透過man numactl或numactl --h來了解參數的功能與輸出的內容。檢視系統的numa狀態:###
numactl --hardware
登入後複製
###運行得到如下的結果:###
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16047 MB
node 0 free: 3937 MB
node 1 cpus: 8 9 10 11 12 13 14 15
node 1 size: 16126 MB
node 1 free: 4554 MB
node 2 cpus: 16 17 18 19 20 21 22 23
node 2 size: 16126 MB
node 2 free: 8403 MB
node 3 cpus: 24 25 26 27 28 29 30 31
node 3 size: 16126 MB
node 3 free: 7774 MB
node distances:
node   0   1   2   3
  0:  10  20  20  20
  1:  20  10  20  20
  2:  20  20  10  20
  3:  20  20  20  10
登入後複製
############根據這個圖與指令得到的結果,可以看到,此系統共有4個node,各領取8個CPU和16G記憶體。 這裡還要注意的就是CPU共享的L3 cache也是會自己領取對應的空間。透過numastat指令可以查看numa狀態,回傳值內容:######numa_hit:是打算在該節點上分配內存,最後從這個節點分配的次數;######numa_miss:是打算在該節點分配內存,最後卻從其他節點分配的次數;######numa_foreign:是打算在其他節點分配內存,最後卻從這個節點分配的次數;######interleave_hit :採用interleave策略最後從本節點分配的次數######local_node:該節點上的程序在該節點上分配的次數######other_node:是其他節點程序在該節點上分配的次數#######注意:如果發現 numa_miss 數值比較高時,表示需要調整分配策略。例如將指定進程關聯綁定到指定的CPU上,從而提高記憶體命中率。 ###
root@ubuntu:~# numastat
                           node0           node1           node2           node3
numa_hit             19480355292     11164752760     12401311900     12980472384
numa_miss                5122680       122652623        88449951            7058
numa_foreign           122652643        88449935            7055         5122679
interleave_hit             12619           13942           14010           13924
local_node           19480308881     11164721296     12401264089     12980411641
other_node               5169091       122684087        88497762           67801
登入後複製
###NUMA的記憶體分配策略######--localalloc或-l:規定進程從本地節點上請求分配記憶體。 --membind=nodes或-m nodes:規定進程只能從指定的nodes上請求分配記憶體。 --preferred=node:指定一個建議的node來取得內存,如果取得失敗,則嘗試別的node。 --interleave=nodes或-i nodes:規定進程從指定的nodes上,以round robin演算法交織地請求記憶體分配。 ###
 numactl --interleave=all mongod -f /etc/mongod.conf
登入後複製

因为NUMA默认的内存分配策略是优先在进程所在CPU的本地内存中分配,会导致CPU节点之间内存分配不均衡,当开启了swap,某个CPU节点的内存不足时,会导致swap产生,而不是从远程节点分配内存。这就是所谓的swap insanity 现象。或导致性能急剧下降。所以在运维层面,我们也需要关注NUMA架构下的内存使用情况(多个内存节点使用可能不均衡),并合理配置系统参数(内存回收策略/Swap使用倾向),尽量去避免使用到Swap。

Node->Socket->Core->Processor

随着多核技术的发展,将多个CPU封装在一起,这个封装被称为插槽Socket;Core是socket上独立的硬件单元;通过intel的超线程HT技术进一步提升CPU的处理能力,OS看到的逻辑上的核Processor数量。

Socket = Node

Socket是物理概念,指的是主板上CPU插槽;Node是逻辑概念,对应于Socket。

Core = 物理CPU

Core是物理概念,一个独立的硬件执行单元,对应于物理CPU;

Thread = 逻辑CPU = Processor

Thread是逻辑CPU,也就是Processo

lscpu的使用

显示格式:

  • Architecture:架构

  • CPU(s):逻辑cpu颗数

  • Thread(s) per core:每个核心线程,也就是指超线程

  • Core(s) per socket:每个cpu插槽核数/每颗物理cpu核数

  • CPU socket(s):cpu插槽数

  • L1d cache:级缓存(google了下,这具体表示表示cpu的L1数据缓存)

  • L1i cache:一级缓存(具体为L1指令缓存)

  • L2 cache:二级缓存

  • L3 cache:三级缓存

  • NUMA node0 CPU(s) :CPU上的逻辑核,也就是超线程

执行lscpu,结果部分如下:

root@ubuntu:~# lscpu
Architecture:          x86_64
CPU(s):                32
Thread(s) per core:    1
Core(s) per socket:    8
Socket(s):             4
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7
NUMA node1 CPU(s):     8-15
NUMA node2 CPU(s):     16-23
NUMA node3 CPU(s):     24-31
登入後複製

相关推荐:《Linux视频教程

以上是一起聊聊linux上numa架構(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

centos和ubuntu的區別 centos和ubuntu的區別 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

centos如何安裝 centos如何安裝 Apr 14, 2025 pm 09:03 PM

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

Centos停止維護後的選擇 Centos停止維護後的選擇 Apr 14, 2025 pm 08:51 PM

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

docker desktop怎麼用 docker desktop怎麼用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

centos停止維護後怎麼辦 centos停止維護後怎麼辦 Apr 14, 2025 pm 08:48 PM

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

怎麼看docker進程 怎麼看docker進程 Apr 15, 2025 am 11:48 AM

Docker 進程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目錄(Linux)。

docker鏡像失敗怎麼辦 docker鏡像失敗怎麼辦 Apr 15, 2025 am 11:21 AM

Docker鏡像構建失敗的故障排除步驟:檢查Dockerfile語法和依賴項版本。檢查構建上下文中是否包含所需源代碼和依賴項。查看構建日誌以獲取錯誤詳細信息。使用--target選項構建分層階段以識別失敗點。確保使用最新版本的Docker引擎。使用--t [image-name]:debug模式構建鏡像以調試問題。檢查磁盤空間並確保足夠。禁用SELinux以防止干擾構建過程。向社區平台尋求幫助,提供Dockerfile和構建日誌描述以獲得更具體的建議。

See all articles