久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux上numa架構實例分析

181次閱讀
沒有評論

共計 3579 個字符,預計需要花費 9 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 linux 上 numa 架構實例分析的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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

機器配置:32 CPU,64GB 內存

在 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 上 numa 架構實例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計3579字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 恩施市| 六盘水市| 通化市| 西城区| 阿克陶县| 阳江市| 营口市| 韩城市| 峨边| 沂源县| 奉贤区| 襄汾县| 察隅县| 宜都市| 忻城县| 襄城县| 白银市| 铁岭县| 贵德县| 随州市| 海门市| 澎湖县| 嘉祥县| 东港市| 桦甸市| 贞丰县| 松滋市| 琼结县| 吕梁市| 潜江市| 巍山| 徐水县| 济宁市| 永福县| 梅州市| 芒康县| 通山县| 阳曲县| 湟中县| 隆安县| 东山县|