国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

【知乎】主流CPU性能摸底(Intel/AMD/鯤鵬/海光/飛騰)

2023-07-15 16:58 作者:失傳技術電磁所  | 我要投稿

主流CPU性能摸底(Intel/AMD/鯤鵬/海光/飛騰)

PolarDB-X

已認證賬號

作者:蟄劍

前言

本文在Sysbench、TPCC等實踐場景下對多款CPU的性能進行對比,同時分析各款CPU的硬件指標,最后分析不同場景下的實際性能和核心參數(shù)的關系。最終會展示Intel和AMD到底誰厲害、ARM離X86還有多大的距離、國產CPU性能到底怎么樣了。

本文的姊妹篇:十年后數(shù)據庫還是不敢擁抱NUMA? 主要講述的是 同一塊CPU的不同NUMA結構配置帶來的幾倍性能差異,這些性能差異原因也可以從本文最后時延測試數(shù)據得到印證,一起閱讀效果更好。

這幾款CPU的核心參數(shù)如下表:

CPU型號Hygon 7280AMD EPYC 7H12Intel 8163鯤鵬920飛騰2500物理核數(shù)3232244864超線程222路22222NUMA Node822416L1d32K32K32K64K32KL2512K512K1024K512K2048K

性能定義

同一個平臺下(X86、ARM是兩個平臺)編譯好的程序可以認為他們的 指令 數(shù)是一樣的,那么執(zhí)行效率就是每個時鐘周期所能執(zhí)行的指令數(shù)量了。

執(zhí)行指令數(shù)量第一取決的就是CPU主頻了,但是目前主流CPU都是2.5G左右,另外就是單核下的并行度(多發(fā)射)以及多核,再就是分支預測等,這些基本歸結到了訪問內存的延時。

X86和ARM這兩不同平臺首先指令就不一樣了,然后還有上面所說的主頻、內存時延的差異

IPC的說明:

IPC: insns per cycle ?insn/cycles ?也就是每個時鐘周期能執(zhí)行的指令數(shù)量,越大程序跑的越快
程序的執(zhí)行時間 = 指令數(shù)/(主頻*IPC) //單核下,多核的話再除以核數(shù)

參與比較的幾款CPU參數(shù)

先來看看測試所用到的幾款CPU的主要指標,大家關注下主頻、各級cache大小、NUMA結構

Hygon 7280

Hygon 7280 就是AMD Zen架構,最大IPC能到5.

架構: ? ? ? ? ? ? ? ? ? ? ? ? ? x86_64 CPU 運行模式: ? ? ? ? ? ? ? ? ? 32-bit, 64-bit 字節(jié)序: ? ? ? ? ? ? ? ? ? ? ? ? Little Endian Address sizes: ? ? ? ? ? ? ? ? ?43 bits physical, 48 bits virtual CPU: ? ? ? ? ? ? ? ? ? ? ? ? ? ?128 在線 CPU 列表: ? ? ? ? ? ? ? ? ? 0-127 每個核的線程數(shù): ? ? ? ? ? ? ? ? ? 2 每個座的核數(shù): ? ? ? ? ? ? ? ? ? ?32 座: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 NUMA 節(jié)點: ? ? ? ? ? ? ? ? ? ? ?8 廠商 ID: ? ? ? ? ? ? ? ? ? ? ? ?HygonGenuine CPU 系列: ? ? ? ? ? ? ? ? ? ? ? 24 型號: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 型號名稱: ? ? ? ? ? ? ? ? ? ? ? ?Hygon C86 7280 32-core Processor 步進: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 CPU MHz: ? ? ? ? ? ? ? ? ? ? ? 2194.586 BogoMIPS: ? ? ? ? ? ? ? ? ? ? ?3999.63 虛擬化: ? ? ? ? ? ? ? ? ? ? ? ? AMD-V L1d 緩存: ? ? ? ? ? ? ? ? ? ? ? 2 MiB ? L1i 緩存: ? ? ? ? ? ? ? ? ? ? ? 4 MiB L2 緩存: ? ? ? ? ? ? ? ? ? ? ? ?32 MiB L3 緩存: ? ? ? ? ? ? ? ? ? ? ? ?128 MiB NUMA 節(jié)點0 CPU: ? ? ? ? ? ? ? ? 0-7,64-71 NUMA 節(jié)點1 CPU: ? ? ? ? ? ? ? ? 8-15,72-79 NUMA 節(jié)點2 CPU: ? ? ? ? ? ? ? ? 16-23,80-87 NUMA 節(jié)點3 CPU: ? ? ? ? ? ? ? ? 24-31,88-95 NUMA 節(jié)點4 CPU: ? ? ? ? ? ? ? ? 32-39,96-103 NUMA 節(jié)點5 CPU: ? ? ? ? ? ? ? ? 40-47,104-111 NUMA 節(jié)點6 CPU: ? ? ? ? ? ? ? ? 48-55,112-119 NUMA 節(jié)點7 CPU: ? ? ? ? ? ? ? ? 56-63,120-127

注意L1d顯示為2MiB,實際是不可能有這么大的,L1、L2是每個core獨享,從測試看到時延在32K有個跳躍,所以這里的L1d實際為32K。這里應該是OS展示考慮不周導致的,實際我們來看下:

[root@hygon3 15:56 /sys] #cat ./devices/system/cpu/cpu0/cache/index0/size ?--- L1d 32K [root@hygon3 15:56 /sys] #cat ./devices/system/cpu/cpu0/cache/index1/size ?--- L1i 64K [root@hygon3 15:57 /sys] #cat ./devices/system/cpu/cpu0/cache/index2/size ?--- L2 512K [root@hygon3 15:57 /sys] #cat ./devices/system/cpu/cpu0/cache/index3/size ?--- L3 8192K [root@hygon3 15:57 /sys] #cat ./devices/system/cpu/cpu0/cache/index1/type Instruction [root@hygon3 16:00 /sys] #cat ./devices/system/cpu/cpu0/cache/index0/type Data [root@hygon3 16:00 /sys] #cat ./devices/system/cpu/cpu0/cache/index3/shared_cpu_map 00000000,0000000f,00000000,0000000f ? ---- 4個物理core共享8M L3 [root@hygon3 16:00 /sys] #cat devices/system/cpu/cpu0/cache/index3/shared_cpu_list 0-3,64-67 [root@hygon3 16:01 /sys] #cat ./devices/system/cpu/cpu0/cache/index2/shared_cpu_map 00000000,00000001,00000000,00000001

AMD EPYC 7H12

AMD EPYC 7H12 64-Core(ECS,非物理機),最大IPC能到5.

# lscpu Architecture: ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?64 On-line CPU(s) list: ? 0-63 Thread(s) per core: ? ?2 Core(s) per socket: ? ?16 座: ? ? ? ? ? ? ? ? ? ?2 NUMA 節(jié)點: ? ? ? ? ? ? 2 廠商 ID: ? ? ? ? ? ? ? AuthenticAMD CPU 系列: ? ? ? ? ? ? ?23 型號: ? ? ? ? ? ? ? ? ?49 型號名稱: ? ? ? ? ? ? ? AMD EPYC 7H12 64-Core Processor 步進: ? ? ? ? ? ? ? ? ?0 CPU MHz: ? ? ? ? ? ? ?2595.124 BogoMIPS: ? ? ? ? ? ? 5190.24 虛擬化: ? ? ? ? ? ? ? ?AMD-V 超管理器廠商: ? ? ? ? ? KVM 虛擬化類型: ? ? ? ? ? ? 完全 L1d 緩存: ? ? ? ? ? ? ?32K L1i 緩存: ? ? ? ? ? ? ?32K L2 緩存: ? ? ? ? ? ? ? 512K L3 緩存: ? ? ? ? ? ? ? 16384K NUMA 節(jié)點0 CPU: ? ? ? ?0-31 NUMA 節(jié)點1 CPU: ? ? ? ?32-63

Intel

這次對比測試用到了兩塊Intel CPU,分別是 8163、8269 。他們的信息如下,最大IPC 是4:

#lscpu Architecture: ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?96 On-line CPU(s) list: ? 0-95 Thread(s) per core: ? ?2 Core(s) per socket: ? ?24 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?1 Vendor ID: ? ? ? ? ? ? GenuineIntel CPU family: ? ? ? ? ? ?6 Model: ? ? ? ? ? ? ? ? 85 Model name: ? ? ? ? ? ?Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz Stepping: ? ? ? ? ? ? ?4 CPU MHz: ? ? ? ? ? ? ? 2499.121 CPU max MHz: ? ? ? ? ? 3100.0000 CPU min MHz: ? ? ? ? ? 1000.0000 BogoMIPS: ? ? ? ? ? ? ?4998.90 Virtualization: ? ? ? ?VT-x L1d cache: ? ? ? ? ? ? 32K L1i cache: ? ? ? ? ? ? 32K L2 cache: ? ? ? ? ? ? ?1024K L3 cache: ? ? ? ? ? ? ?33792K NUMA node0 CPU(s): ? ? 0-95 ? -----8269CY #lscpu Architecture: ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?104 On-line CPU(s) list: ? 0-103 Thread(s) per core: ? ?2 Core(s) per socket: ? ?26 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?2 Vendor ID: ? ? ? ? ? ? GenuineIntel CPU family: ? ? ? ? ? ?6 Model: ? ? ? ? ? ? ? ? 85 Model name: ? ? ? ? ? ?Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz Stepping: ? ? ? ? ? ? ?7 CPU MHz: ? ? ? ? ? ? ? 3200.000 CPU max MHz: ? ? ? ? ? 3800.0000 CPU min MHz: ? ? ? ? ? 1200.0000 BogoMIPS: ? ? ? ? ? ? ?4998.89 Virtualization: ? ? ? ?VT-x L1d cache: ? ? ? ? ? ? 32K L1i cache: ? ? ? ? ? ? 32K L2 cache: ? ? ? ? ? ? ?1024K L3 cache: ? ? ? ? ? ? ?36608K NUMA node0 CPU(s): ? ? 0-25,52-77 NUMA node1 CPU(s): ? ? 26-51,78-103

鯤鵬920

[root@ARM 19:15 /root/lmbench3] #numactl -H available: 4 nodes (0-3) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 node 0 size: 192832 MB node 0 free: 146830 MB node 1 cpus: 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 node 1 size: 193533 MB node 1 free: 175354 MB node 2 cpus: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 node 2 size: 193533 MB node 2 free: 175718 MB node 3 cpus: 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 node 3 size: 193532 MB node 3 free: 183643 MB node distances: node ? 0 ? 1 ? 2 ? 3 ?0: ?10 ?12 ?20 ?22 ?1: ?12 ?10 ?22 ?24 ?2: ?20 ?22 ?10 ?12 ?3: ?22 ?24 ?12 ?10 ?#lscpu Architecture: ? ? ? ? ?aarch64 Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?96 On-line CPU(s) list: ? 0-95 Thread(s) per core: ? ?1 Core(s) per socket: ? ?48 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?4 Model: ? ? ? ? ? ? ? ? 0 CPU max MHz: ? ? ? ? ? 2600.0000 CPU min MHz: ? ? ? ? ? 200.0000 BogoMIPS: ? ? ? ? ? ? ?200.00 L1d cache: ? ? ? ? ? ? 64K L1i cache: ? ? ? ? ? ? 64K L2 cache: ? ? ? ? ? ? ?512K L3 cache: ? ? ? ? ? ? ?24576K NUMA node0 CPU(s): ? ? 0-23 NUMA node1 CPU(s): ? ? 24-47 NUMA node2 CPU(s): ? ? 48-71 NUMA node3 CPU(s): ? ? 72-95 Flags: ? ? ? ? ? ? ? ? fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm

飛騰2500

飛騰2500用nop去跑IPC的話,只能到1,但是跑其它代碼能到2.33,理論值據說也是4但是我沒跑到過

#lscpu Architecture: ? ? ? ? ?aarch64 Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?128 On-line CPU(s) list: ? 0-127 Thread(s) per core: ? ?1 Core(s) per socket: ? ?64 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?16 Model: ? ? ? ? ? ? ? ? 3 BogoMIPS: ? ? ? ? ? ? ?100.00 L1d cache: ? ? ? ? ? ? 32K L1i cache: ? ? ? ? ? ? 32K L2 cache: ? ? ? ? ? ? ?2048K L3 cache: ? ? ? ? ? ? ?65536K NUMA node0 CPU(s): ? ? 0-7 NUMA node1 CPU(s): ? ? 8-15 NUMA node2 CPU(s): ? ? 16-23 NUMA node3 CPU(s): ? ? 24-31 NUMA node4 CPU(s): ? ? 32-39 NUMA node5 CPU(s): ? ? 40-47 NUMA node6 CPU(s): ? ? 48-55 NUMA node7 CPU(s): ? ? 56-63 NUMA node8 CPU(s): ? ? 64-71 NUMA node9 CPU(s): ? ? 72-79 NUMA node10 CPU(s): ? ?80-87 NUMA node11 CPU(s): ? ?88-95 NUMA node12 CPU(s): ? ?96-103 NUMA node13 CPU(s): ? ?104-111 NUMA node14 CPU(s): ? ?112-119 NUMA node15 CPU(s): ? ?120-127 Flags: ? ? ? ? ? ? ? ? fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid

單核以及超線程計算Prime性能比較

測試命令,這個測試命令無論在哪個CPU下,用2個物理核用時都是一個物理核的一半,所以這個計算是可以完全并行的

taskset -c 1 /usr/bin/sysbench --num-threads=1 --test=cpu --cpu-max-prime=50000 run //單核綁一個core; 2個thread就綁一對HT

測試結果為耗時,單位秒

測試項AMD EPYC 7H12 2.5G CentOS 7.9Hygon 7280 2.1GHz CentOSHygon 7280 2.1GHz 麒麟Intel 8269 2.50GIntel 8163 CPU @ 2.50GHzIntel E5-2682 v4 @ 2.50GHz單核 prime 50000 耗時59秒 IPC 0.5677秒 IPC 0.5589秒 IPC 0.56;83秒 0.41105秒 IPC 0.41109秒 IPC 0.39HT prime 50000 耗時57秒 IPC 0.3174秒 IPC 0.2987秒 IPC 0.2948秒 0.3560秒 IPC 0.3674秒 IPC 0.29

從上面的測試結果來看,簡單純計算場景下 AMD/海光 的單核能力還是比較強的,但是超線程完全不給力(數(shù)據庫場景超線程就給力了);而Intel的超線程非常給力,一對超線程能達到單物理core的1.8倍,并且從E5到8269更是好了不少。 ARM基本都沒有超線程所以沒有測試鯤鵬、飛騰。

計算Prime畢竟太簡單,讓我們來看看他們在數(shù)據庫下的真實能力吧

對比MySQL Sysbench和TPCC性能

MySQL 默認用5.7.34社區(qū)版,操作系統(tǒng)默認是centos,測試中所有mysqld都做了綁核,一樣的壓力配置盡量將CPU跑到100%, HT表示將mysqld綁定到一對HT核。

Sysbench點查

測試命令類似如下:

sysbench --test='/usr/share/doc/sysbench/tests/db/select.lua' --oltp_tables_count=1 --report-interval=1 --oltp-table-size=10000000 ?--mysql-port=3307 --mysql-db=sysbench_single --mysql-user=root --mysql-password='Bj6f9g96!@#' ?--max-requests=0 ? --oltp_skip_trx=on --oltp_auto_inc=on ?--oltp_range_size=5 ?--mysql-table-engine=innodb --rand-init=on ? --max-time=300 --mysql-host=x86.51 --num-threads=4 run

測試結果分別取QPS/IPC兩個數(shù)據(測試中的差異AMD、Hygon CPU跑在CentOS7.9, intel CPU、Kunpeng 920 跑在AliOS上, xdb表示用集團的xdb替換社區(qū)的MySQL Server, 麒麟是國產OS):

測試核數(shù)AMD EPYC 7H12 2.5GHygon 7280 2.1GHygon 7280 2.1GHz 麒麟Intel 8269 2.50GIntel 8163 2.50GIntel 8163 2.50G XDB5.7鯤鵬 920-4826 2.6G鯤鵬 920-4826 2.6G XDB8.0FT2500 alisql 8.0 本地–socket單核24674 0.5413441 0.4610236 0.3928208 0.7525474 0.8429376 0.899694 0.498301 0.463602 0.53一對HT36157 0.4221747 0.3819417 0.3736754 0.4935894 0.640601 0.65無HT無HT無HT4物理核94132 0.5249822 0.4638033 0.3790434 0.69 350%87254 0.73106472 0.8334686 0.4228407 0.3914232 0.5316物理核325409 0.48171630 0.38134980 0.34371718 0.69 1500%332967 0.72446290 0.85 //16核比4核好!116122 0.3594697 0.3359199 0.6 8core:31210 0.5932物理核542192 0.43298716 0.37255586 0.33642548 0.64 2700%588318 0.67598637 0.81 CPU 2400%228601 0.36177424 0.32114020 0.65

說明:麒麟OS下CPU很難跑滿,大致能跑到90%-95%左右,麒麟上裝的社區(qū)版MySQL-5.7.29;飛騰要特別注意mysqld所在socket,同時以上飛騰數(shù)據都是走--socket壓測鎖的,32core走網絡壓測QPS為:99496(15%的網絡損耗)

從上面的結果來看單物理核能力ARM 和 X86之間的差異還是很明顯的

TPCC 1000倉

測試結果(測試中Hygon 7280分別跑在CentOS7.9和麒麟上, 鯤鵬/intel CPU 跑在AliOS、麒麟是國產OS):

TPCC測試數(shù)據,結果為1000倉,tpmC (NewOrders) ,未標注CPU 則為跑滿了

測試核數(shù)Intel 8269 2.50GIntel 8163 2.50GHygon 7280 2.1GHz 麒麟Hygon 7280 2.1G CentOS 7.9鯤鵬 920-4826 2.6G鯤鵬 920-4826 2.6G XDB8.01物理核1239299024706701166194653一對HT1789215324895011778無HT無HT4物理核515254087719387 380%3004623959201018物理核1007928179939664 750%60086423684057216物理核160798 抖動140488 CPU抖動75013 1400%106419 1300-1550%70581 1200%7984424物理核188051164757 1600-2100%100841 1800-2000%130815 1600-2100%88204 1600%11535532物理核195292185171 2000-2500%116071 1900-2400%142746 1800-2400%102089 1900%14356748物理核19969l195730 2100-2600%128188 2100-2800%149782 2000-2700%116374 2500%206055 4500%

測試過程CPU均跑滿(未跑滿的話會標注出來),IPC跑不起來性能就必然低,超線程雖然總性能好了但是會導致IPC降低(參考前面的公式)。可以看到對本來IPC比較低的場景,啟用超線程后一般對性能會提升更大一些。

TPCC并發(fā)到一定程度后主要是鎖導致性能上不去,所以超多核意義不大,可以做可以做類PolarDB-X部署(mysql原生分布式)

比如在Hygon 7280 2.1GHz 麒麟上起兩個MySQLD實例,每個實例各綁定32物理core,性能剛好翻倍:


32核的時候對比下MySQL 社區(qū)版在Hygon7280和Intel 8163下的表現(xiàn),IPC的差異還是很明顯的,基本和TPS差異一致:


從Sysbench和TPCC測試結果來看AMD和Intel差異不大,ARM和X86差異比較大,國產CPU還有很大的進步空間。就像前面所說拋開指令集的差異,主頻差不多,內存管夠為什么還有這么大的性能差別呢?

三款CPU的性能指標

下面讓我們回到硬件本身的數(shù)據來看這個問題

先記住這個圖,描述的是CPU訪問寄存器、L1 cache、L2 cache等延時,關鍵記住他們的差異


圖中數(shù)據在不同CPU型號下會有差異,但是不會有數(shù)量級的差異。從圖中可以看到L2是L1時延的三倍,一次L2讀取相當于CPU耗時10 cycles;一次內存操作是L1時延的120倍,讀取一次內存相當于CPU耗時400個 cycles 了。也就是讀一次內存的時間如果用來做i++夠你加上400次了。 從這里可以看到訪問內存才是CPU的最大瓶頸,所以增加了一大堆Cache,Cache的成本占到了1塊CPU的50%以上

另外注意L1、L2是每個core單獨占用,L3是一個Socket下所有core共享;應用綁核的意思就是讓L1、L2盡量少失效,1%的L1 cache miss可能導致10%以上(增加了10倍以上的平均延時)的性能劣化。

不同的core訪問不同的內存,根據core和內存的距離關系(NUMA結構)性能也會有30%到200%以上的性能下降,接下來的大量測試都會測試不同的core訪問不同內存的延時。

接下來用lmbench來測試各個CPU的內存延時,stream主要用于測試帶寬,對應的時延是在帶寬跑滿情況下的帶寬;lat_mem_rd用來測試操作不同數(shù)據大小的時延。

飛騰2500

用stream測試帶寬和latency,可以看到帶寬隨著NUMA距離增加而不斷減少、同時對應的latency不斷增加,到最近的NUMA Node有10%的損耗,這個損耗和numactl給出的距離完全一致。跨Socket訪問內存latency是Node內的3倍,帶寬是三分之一,但是Socket1性能和Socket0性能完全一致。從這個延時來看如果要是跑一個32core的實例性能一定不會太好,并且抖動劇烈

time for i in $(seq 7 8 128); do echo $i; numactl -C $i -m 0 ./bin/stream -W 5 -N 5 -M 64M; done #numactl -C 7 -m 0 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 2.84 nanoseconds STREAM copy bandwidth: 5638.21 MB/sec STREAM scale latency: 2.72 nanoseconds STREAM scale bandwidth: 5885.97 MB/sec STREAM add latency: 2.26 nanoseconds STREAM add bandwidth: 10615.13 MB/sec STREAM triad latency: 4.53 nanoseconds STREAM triad bandwidth: 5297.93 MB/sec #numactl -C 7 -m 1 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.16 nanoseconds STREAM copy bandwidth: 5058.71 MB/sec STREAM scale latency: 3.15 nanoseconds STREAM scale bandwidth: 5074.78 MB/sec STREAM add latency: 2.35 nanoseconds STREAM add bandwidth: 10197.36 MB/sec STREAM triad latency: 5.12 nanoseconds STREAM triad bandwidth: 4686.37 MB/sec #numactl -C 7 -m 2 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.85 nanoseconds STREAM copy bandwidth: 4150.98 MB/sec STREAM scale latency: 3.95 nanoseconds STREAM scale bandwidth: 4054.30 MB/sec STREAM add latency: 2.64 nanoseconds STREAM add bandwidth: 9100.12 MB/sec STREAM triad latency: 6.39 nanoseconds STREAM triad bandwidth: 3757.70 MB/sec #numactl -C 7 -m 3 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.69 nanoseconds STREAM copy bandwidth: 4340.24 MB/sec STREAM scale latency: 3.62 nanoseconds STREAM scale bandwidth: 4422.18 MB/sec STREAM add latency: 2.47 nanoseconds STREAM add bandwidth: 9704.82 MB/sec STREAM triad latency: 5.74 nanoseconds STREAM triad bandwidth: 4177.85 MB/sec [root@101a05001 /root/lmbench3] #numactl -C 7 -m 7 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.95 nanoseconds STREAM copy bandwidth: 4051.51 MB/sec STREAM scale latency: 3.94 nanoseconds STREAM scale bandwidth: 4060.63 MB/sec STREAM add latency: 2.54 nanoseconds STREAM add bandwidth: 9434.51 MB/sec STREAM triad latency: 6.13 nanoseconds STREAM triad bandwidth: 3913.36 MB/sec [root@101a05001 /root/lmbench3] #numactl -C 7 -m 10 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 8.80 nanoseconds STREAM copy bandwidth: 1817.78 MB/sec STREAM scale latency: 8.59 nanoseconds STREAM scale bandwidth: 1861.65 MB/sec STREAM add latency: 5.55 nanoseconds STREAM add bandwidth: 4320.68 MB/sec STREAM triad latency: 13.94 nanoseconds STREAM triad bandwidth: 1721.76 MB/sec [root@101a05001 /root/lmbench3] #numactl -C 7 -m 11 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 9.27 nanoseconds STREAM copy bandwidth: 1726.52 MB/sec STREAM scale latency: 9.31 nanoseconds STREAM scale bandwidth: 1718.10 MB/sec STREAM add latency: 5.65 nanoseconds STREAM add bandwidth: 4250.89 MB/sec STREAM triad latency: 14.09 nanoseconds STREAM triad bandwidth: 1703.66 MB/sec //在另外一個Socket上測試本NUMA,和Node0性能完全一致 [root@101a0500 /root/lmbench3] #numactl -C 88 -m 11 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 2.93 nanoseconds STREAM copy bandwidth: 5454.67 MB/sec STREAM scale latency: 2.96 nanoseconds STREAM scale bandwidth: 5400.03 MB/sec STREAM add latency: 2.28 nanoseconds STREAM add bandwidth: 10543.42 MB/sec STREAM triad latency: 4.52 nanoseconds STREAM triad bandwidth: 5308.40 MB/sec [root@101a0500 /root/lmbench3] #numactl -C 7 -m 15 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 8.73 nanoseconds STREAM copy bandwidth: 1831.77 MB/sec STREAM scale latency: 8.81 nanoseconds STREAM scale bandwidth: 1815.13 MB/sec STREAM add latency: 5.63 nanoseconds STREAM add bandwidth: 4265.21 MB/sec STREAM triad latency: 13.09 nanoseconds STREAM triad bandwidth: 1833.68 MB/sec

Lat_mem_rd 用 core7 訪問Node0和Node15對比結果,隨著數(shù)據的加大,延時在加大,64M時能有3倍差距,和上面測試一致

下圖 第一列 表示讀寫數(shù)據的大小(單位M),第二列表示訪問延時(單位納秒),一般可以看到在L1/L2/L3 cache大小的地方延時會有跳躍,遠超過L3大小后,延時就是內存延時了

測試命令如下

numactl -C 7 -m 0 ./bin/lat_mem_rd -W 5 -N 5 -t 64M ?//-C 7 cpu 7, -m 0 node0, -W 熱身 -t stride

同樣的機型,開 NUMA 比關 NUMA 時延降低了幾倍,同時帶寬提升了幾倍,所以一定要開NUMA

鯤鵬920

#for i in $(seq 0 15); do echo core:$i; numactl -N $i -m 7 ./bin/stream ?-W 5 -N 5 -M 64M; done STREAM copy latency: 1.84 nanoseconds STREAM copy bandwidth: 8700.75 MB/sec STREAM scale latency: 1.86 nanoseconds STREAM scale bandwidth: 8623.60 MB/sec STREAM add latency: 2.18 nanoseconds STREAM add bandwidth: 10987.04 MB/sec STREAM triad latency: 3.03 nanoseconds STREAM triad bandwidth: 7926.87 MB/sec #numactl -C 7 -m 1 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 2.05 nanoseconds STREAM copy bandwidth: 7802.45 MB/sec STREAM scale latency: 2.08 nanoseconds STREAM scale bandwidth: 7681.87 MB/sec STREAM add latency: 2.19 nanoseconds STREAM add bandwidth: 10954.76 MB/sec STREAM triad latency: 3.17 nanoseconds STREAM triad bandwidth: 7559.86 MB/sec #numactl -C 7 -m 2 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.51 nanoseconds STREAM copy bandwidth: 4556.86 MB/sec STREAM scale latency: 3.58 nanoseconds STREAM scale bandwidth: 4463.66 MB/sec STREAM add latency: 2.71 nanoseconds STREAM add bandwidth: 8869.79 MB/sec STREAM triad latency: 5.92 nanoseconds STREAM triad bandwidth: 4057.12 MB/sec [root@ARM 19:14 /root/lmbench3] #numactl -C 7 -m 3 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 3.94 nanoseconds STREAM copy bandwidth: 4064.25 MB/sec STREAM scale latency: 3.82 nanoseconds STREAM scale bandwidth: 4188.67 MB/sec STREAM add latency: 2.86 nanoseconds STREAM add bandwidth: 8390.70 MB/sec STREAM triad latency: 4.78 nanoseconds STREAM triad bandwidth: 5024.25 MB/sec #numactl -C 24 -m 3 ./bin/stream ?-W 5 -N 5 -M 64M STREAM copy latency: 4.10 nanoseconds STREAM copy bandwidth: 3904.63 MB/sec STREAM scale latency: 4.03 nanoseconds STREAM scale bandwidth: 3969.41 MB/sec STREAM add latency: 3.07 nanoseconds STREAM add bandwidth: 7816.08 MB/sec STREAM triad latency: 5.06 nanoseconds STREAM triad bandwidth: 4738.66 MB/sec

海光7280

可以看到跨NUMA(這里設置的一個Socket為一個NUMA Node,等同于跨Socket)RT從1.5上升到2.5,這個數(shù)據比鯤鵬920要好很多。 這里還會測試同一塊CPU設置不同數(shù)量的NUMA Node對性能的影響,所以接下來的測試會列出NUMA Node數(shù)量

[root@hygon8 14:32 /root/lmbench-master] #lscpu 架構: ? ? ? ? ? ? ? ? ? ? ? ? ? x86_64 CPU 運行模式: ? ? ? ? ? ? ? ? ? 32-bit, 64-bit 字節(jié)序: ? ? ? ? ? ? ? ? ? ? ? ? Little Endian Address sizes: ? ? ? ? ? ? ? ? ? 43 bits physical, 48 bits virtual CPU: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 128 在線 CPU 列表: ? ? ? ? ? ? ? ? ?0-127 每個核的線程數(shù): ? ? ? ? ? ? ? ? 2 每個座的核數(shù): ? ? ? ? ? ? ? ? ? 32 座: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 NUMA 節(jié)點: ? ? ? ? ? ? ? ? ? ? ?8 廠商 ID: ? ? ? ? ? ? ? ? ? ? ? ?HygonGenuine CPU 系列: ? ? ? ? ? ? ? ? ? ? ? 24 型號: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 型號名稱: ? ? ? ? ? ? ? ? ? ? ? Hygon C86 7280 32-core Processor 步進: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 CPU MHz: ? ? ? ? ? ? ? ? ? ? ? ?2194.586 BogoMIPS: ? ? ? ? ? ? ? ? ? ? ? 3999.63 虛擬化: ? ? ? ? ? ? ? ? ? ? ? ? AMD-V L1d 緩存: ? ? ? ? ? ? ? ? ? ? ? 2 MiB L1i 緩存: ? ? ? ? ? ? ? ? ? ? ? 4 MiB L2 緩存: ? ? ? ? ? ? ? ? ? ? ? ?32 MiB L3 緩存: ? ? ? ? ? ? ? ? ? ? ? ?128 MiB NUMA 節(jié)點0 CPU: ? ? ? ? ? ? ? ? 0-7,64-71 NUMA 節(jié)點1 CPU: ? ? ? ? ? ? ? ? 8-15,72-79 NUMA 節(jié)點2 CPU: ? ? ? ? ? ? ? ? 16-23,80-87 NUMA 節(jié)點3 CPU: ? ? ? ? ? ? ? ? 24-31,88-95 NUMA 節(jié)點4 CPU: ? ? ? ? ? ? ? ? 32-39,96-103 NUMA 節(jié)點5 CPU: ? ? ? ? ? ? ? ? 40-47,104-111 NUMA 節(jié)點6 CPU: ? ? ? ? ? ? ? ? 48-55,112-119 NUMA 節(jié)點7 CPU: ? ? ? ? ? ? ? ? 56-63,120-127 //可以看到7號core比15、23、31號core明顯要快,因為就近訪問Node 0的內存,沒有跨NUMA Node(跨Die) [root@hygon8 14:32 /root/lmbench-master] #time for i in $(seq 7 8 64); do echo $i; numactl -C $i -m 0 ./bin/stream -W 5 -N 5 -M 64M; done 7 STREAM copy latency: 1.38 nanoseconds ? ? STREAM copy bandwidth: 11559.53 MB/sec STREAM scale latency: 1.16 nanoseconds STREAM scale bandwidth: 13815.87 MB/sec STREAM add latency: 1.40 nanoseconds STREAM add bandwidth: 17145.85 MB/sec STREAM triad latency: 1.44 nanoseconds STREAM triad bandwidth: 16637.18 MB/sec 15 STREAM copy latency: 1.67 nanoseconds STREAM copy bandwidth: 9591.77 MB/sec STREAM scale latency: 1.56 nanoseconds STREAM scale bandwidth: 10242.50 MB/sec STREAM add latency: 1.45 nanoseconds STREAM add bandwidth: 16581.00 MB/sec STREAM triad latency: 2.00 nanoseconds STREAM triad bandwidth: 12028.83 MB/sec 23 STREAM copy latency: 1.65 nanoseconds STREAM copy bandwidth: 9701.49 MB/sec STREAM scale latency: 1.53 nanoseconds STREAM scale bandwidth: 10427.98 MB/sec STREAM add latency: 1.42 nanoseconds STREAM add bandwidth: 16846.10 MB/sec STREAM triad latency: 1.97 nanoseconds STREAM triad bandwidth: 12189.72 MB/sec 31 STREAM copy latency: 1.64 nanoseconds STREAM copy bandwidth: 9742.86 MB/sec STREAM scale latency: 1.52 nanoseconds STREAM scale bandwidth: 10510.80 MB/sec STREAM add latency: 1.45 nanoseconds STREAM add bandwidth: 16559.86 MB/sec STREAM triad latency: 1.92 nanoseconds STREAM triad bandwidth: 12490.01 MB/sec 39 STREAM copy latency: 2.55 nanoseconds STREAM copy bandwidth: 6286.25 MB/sec STREAM scale latency: 2.51 nanoseconds STREAM scale bandwidth: 6383.11 MB/sec STREAM add latency: 1.76 nanoseconds STREAM add bandwidth: 13660.83 MB/sec STREAM triad latency: 3.68 nanoseconds STREAM triad bandwidth: 6523.02 MB/sec

如果這塊芯片在BIOS里設置Die interleaving,那么4塊Die當成一個NUMA Node吐出來給OS

#lscpu 架構: ? ? ? ? ? ? ? ? ? ? ? ? ? x86_64 CPU 運行模式: ? ? ? ? ? ? ? ? ? 32-bit, 64-bit 字節(jié)序: ? ? ? ? ? ? ? ? ? ? ? ? Little Endian Address sizes: ? ? ? ? ? ? ? ? ? 43 bits physical, 48 bits virtual CPU: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 128 在線 CPU 列表: ? ? ? ? ? ? ? ? ?0-127 每個核的線程數(shù): ? ? ? ? ? ? ? ? 2 每個座的核數(shù): ? ? ? ? ? ? ? ? ? 32 座: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 NUMA 節(jié)點: ? ? ? ? ? ? ? ? ? ? ?2 廠商 ID: ? ? ? ? ? ? ? ? ? ? ? ?HygonGenuine CPU 系列: ? ? ? ? ? ? ? ? ? ? ? 24 型號: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 型號名稱: ? ? ? ? ? ? ? ? ? ? ? Hygon C86 7280 32-core Processor 步進: ? ? ? ? ? ? ? ? ? ? ? ? ? 1 CPU MHz: ? ? ? ? ? ? ? ? ? ? ? ?2108.234 BogoMIPS: ? ? ? ? ? ? ? ? ? ? ? 3999.45 虛擬化: ? ? ? ? ? ? ? ? ? ? ? ? AMD-V L1d 緩存: ? ? ? ? ? ? ? ? ? ? ? 2 MiB L1i 緩存: ? ? ? ? ? ? ? ? ? ? ? 4 MiB L2 緩存: ? ? ? ? ? ? ? ? ? ? ? ?32 MiB L3 緩存: ? ? ? ? ? ? ? ? ? ? ? ?128 MiB //注意這里bios配置了Die Interleaving Enable //表示每路內多個Die內存交織分配,這樣整個一個socket就是一個大Die NUMA 節(jié)點0 CPU: ? ? ? ? ? ? ? ? 0-31,64-95 ? NUMA 節(jié)點1 CPU: ? ? ? ? ? ? ? ? 32-63,96-127 //enable Die interleaving 后繼續(xù)streaming測試 //最終測試結果表現(xiàn)就是7/15/23/31 core性能一致,因為他們屬于同一個NUMA Node,內存交織分配 //可以看到同一路下的四個Die內存交織訪問,所以4個Node內存延時一樣了(被平均),都不如8Node就近快 [root@hygon3 16:09 /root/lmbench-master] #time for i in $(seq 7 8 64); do echo $i; numactl -C $i -m 0 ./bin/stream -W 5 -N 5 -M 64M; done 7 STREAM copy latency: 1.48 nanoseconds STREAM copy bandwidth: 10782.58 MB/sec STREAM scale latency: 1.20 nanoseconds STREAM scale bandwidth: 13364.38 MB/sec STREAM add latency: 1.46 nanoseconds STREAM add bandwidth: 16408.32 MB/sec STREAM triad latency: 1.53 nanoseconds STREAM triad bandwidth: 15696.00 MB/sec 15 STREAM copy latency: 1.51 nanoseconds STREAM copy bandwidth: 10601.25 MB/sec STREAM scale latency: 1.24 nanoseconds STREAM scale bandwidth: 12855.87 MB/sec STREAM add latency: 1.46 nanoseconds STREAM add bandwidth: 16382.42 MB/sec STREAM triad latency: 1.53 nanoseconds STREAM triad bandwidth: 15691.48 MB/sec 23 STREAM copy latency: 1.50 nanoseconds STREAM copy bandwidth: 10700.61 MB/sec STREAM scale latency: 1.27 nanoseconds STREAM scale bandwidth: 12634.63 MB/sec STREAM add latency: 1.47 nanoseconds STREAM add bandwidth: 16370.67 MB/sec STREAM triad latency: 1.55 nanoseconds STREAM triad bandwidth: 15455.75 MB/sec 31 STREAM copy latency: 1.50 nanoseconds STREAM copy bandwidth: 10637.39 MB/sec STREAM scale latency: 1.25 nanoseconds STREAM scale bandwidth: 12778.99 MB/sec STREAM add latency: 1.46 nanoseconds STREAM add bandwidth: 16420.65 MB/sec STREAM triad latency: 1.61 nanoseconds STREAM triad bandwidth: 14946.80 MB/sec 39 STREAM copy latency: 2.35 nanoseconds STREAM copy bandwidth: 6807.09 MB/sec STREAM scale latency: 2.32 nanoseconds STREAM scale bandwidth: 6906.93 MB/sec STREAM add latency: 1.63 nanoseconds STREAM add bandwidth: 14729.23 MB/sec STREAM triad latency: 3.36 nanoseconds STREAM triad bandwidth: 7151.67 MB/sec 47 STREAM copy latency: 2.31 nanoseconds STREAM copy bandwidth: 6938.47 MB/sec

intel 8269CY

lscpu Architecture: ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?104 On-line CPU(s) list: ? 0-103 Thread(s) per core: ? ?2 Core(s) per socket: ? ?26 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?2 Vendor ID: ? ? ? ? ? ? GenuineIntel CPU family: ? ? ? ? ? ?6 Model: ? ? ? ? ? ? ? ? 85 Model name: ? ? ? ? ? ?Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz Stepping: ? ? ? ? ? ? ?7 CPU MHz: ? ? ? ? ? ? ? 3200.000 CPU max MHz: ? ? ? ? ? 3800.0000 CPU min MHz: ? ? ? ? ? 1200.0000 BogoMIPS: ? ? ? ? ? ? ?4998.89 Virtualization: ? ? ? ?VT-x L1d cache: ? ? ? ? ? ? 32K L1i cache: ? ? ? ? ? ? 32K L2 cache: ? ? ? ? ? ? ?1024K L3 cache: ? ? ? ? ? ? ?36608K NUMA node0 CPU(s): ? ? 0-25,52-77 NUMA node1 CPU(s): ? ? 26-51,78-103 [root@numaopen /home/ren/lmbench3] #time for i in $(seq 0 8 51); do echo $i; numactl -C $i -m 0 ./bin/stream -W 5 -N 5 -M 64M; done 0 STREAM copy latency: 1.15 nanoseconds STREAM copy bandwidth: 13941.80 MB/sec STREAM scale latency: 1.16 nanoseconds STREAM scale bandwidth: 13799.89 MB/sec STREAM add latency: 1.31 nanoseconds STREAM add bandwidth: 18318.23 MB/sec STREAM triad latency: 1.56 nanoseconds STREAM triad bandwidth: 15356.72 MB/sec 16 STREAM copy latency: 1.12 nanoseconds STREAM copy bandwidth: 14293.68 MB/sec STREAM scale latency: 1.13 nanoseconds STREAM scale bandwidth: 14162.47 MB/sec STREAM add latency: 1.31 nanoseconds STREAM add bandwidth: 18293.27 MB/sec STREAM triad latency: 1.53 nanoseconds STREAM triad bandwidth: 15692.47 MB/sec 32 STREAM copy latency: 1.52 nanoseconds STREAM copy bandwidth: 10551.71 MB/sec STREAM scale latency: 1.52 nanoseconds STREAM scale bandwidth: 10508.33 MB/sec STREAM add latency: 1.38 nanoseconds STREAM add bandwidth: 17363.22 MB/sec STREAM triad latency: 2.00 nanoseconds STREAM triad bandwidth: 12024.52 MB/sec 40 STREAM copy latency: 1.49 nanoseconds STREAM copy bandwidth: 10758.50 MB/sec STREAM scale latency: 1.50 nanoseconds STREAM scale bandwidth: 10680.17 MB/sec STREAM add latency: 1.34 nanoseconds STREAM add bandwidth: 17948.34 MB/sec STREAM triad latency: 1.98 nanoseconds STREAM triad bandwidth: 12133.22 MB/sec 48 STREAM copy latency: 1.49 nanoseconds STREAM copy bandwidth: 10736.56 MB/sec STREAM scale latency: 1.50 nanoseconds STREAM scale bandwidth: 10692.93 MB/sec STREAM add latency: 1.34 nanoseconds STREAM add bandwidth: 17902.85 MB/sec STREAM triad latency: 1.96 nanoseconds STREAM triad bandwidth: 12239.44 MB/sec

Intel(R) Xeon(R) CPU E5-2682 v4

#time for i in $(seq 0 8 51); do echo $i; numactl -C $i -m 0 ./bin/stream -W 5 -N 5 -M 64M; done 0 STREAM copy latency: 1.59 nanoseconds STREAM copy bandwidth: 10092.31 MB/sec STREAM scale latency: 1.57 nanoseconds STREAM scale bandwidth: 10169.16 MB/sec STREAM add latency: 1.31 nanoseconds STREAM add bandwidth: 18360.83 MB/sec STREAM triad latency: 2.28 nanoseconds STREAM triad bandwidth: 10503.81 MB/sec 8 STREAM copy latency: 1.55 nanoseconds STREAM copy bandwidth: 10312.14 MB/sec STREAM scale latency: 1.56 nanoseconds STREAM scale bandwidth: 10283.70 MB/sec STREAM add latency: 1.30 nanoseconds STREAM add bandwidth: 18416.26 MB/sec STREAM triad latency: 2.23 nanoseconds STREAM triad bandwidth: 10777.08 MB/sec 16 STREAM copy latency: 2.02 nanoseconds STREAM copy bandwidth: 7914.25 MB/sec STREAM scale latency: 2.02 nanoseconds STREAM scale bandwidth: 7919.85 MB/sec STREAM add latency: 1.39 nanoseconds STREAM add bandwidth: 17276.06 MB/sec STREAM triad latency: 2.92 nanoseconds STREAM triad bandwidth: 8231.18 MB/sec 24 STREAM copy latency: 1.99 nanoseconds STREAM copy bandwidth: 8032.18 MB/sec STREAM scale latency: 1.98 nanoseconds STREAM scale bandwidth: 8061.12 MB/sec STREAM add latency: 1.39 nanoseconds STREAM add bandwidth: 17313.94 MB/sec STREAM triad latency: 2.88 nanoseconds STREAM triad bandwidth: 8318.93 MB/sec #lscpu Architecture: ? ? ? ? ?x86_64 CPU op-mode(s): ? ? ? ?32-bit, 64-bit Byte Order: ? ? ? ? ? ?Little Endian CPU(s): ? ? ? ? ? ? ? ?64 On-line CPU(s) list: ? 0-63 Thread(s) per core: ? ?2 Core(s) per socket: ? ?16 Socket(s): ? ? ? ? ? ? 2 NUMA node(s): ? ? ? ? ?2 Vendor ID: ? ? ? ? ? ? GenuineIntel CPU family: ? ? ? ? ? ?6 Model: ? ? ? ? ? ? ? ? 79 Model name: ? ? ? ? ? ?Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz Stepping: ? ? ? ? ? ? ?1 CPU MHz: ? ? ? ? ? ? ? 2500.000 CPU max MHz: ? ? ? ? ? 3000.0000 CPU min MHz: ? ? ? ? ? 1200.0000 BogoMIPS: ? ? ? ? ? ? ?5000.06 Virtualization: ? ? ? ?VT-x L1d cache: ? ? ? ? ? ? 32K L1i cache: ? ? ? ? ? ? 32K L2 cache: ? ? ? ? ? ? ?256K L3 cache: ? ? ? ? ? ? ?40960K NUMA node0 CPU(s): ? ? 0-15,32-47 NUMA node1 CPU(s): ? ? 16-31,48-63

stream對比數(shù)據

總結下幾個CPU用stream測試訪問內存的RT以及抖動和帶寬對比數(shù)據

最小RT最大RT最大copy bandwidth最小copy bandwidth申威3231(2NUMA Node)7.098.752256.59 MB/sec1827.88 MB/sec飛騰2500(16 NUMA Node)2.8410.345638.21 MB/sec1546.68 MB/sec鯤鵬920(4 NUMA Node)1.843.878700.75 MB/sec4131.81 MB/sec海光7280(8 NUMA Node)1.382.5811591.48 MB/sec6206.99 MB/sec海光5280(4 NUMA Node)1.222.5213166.34 MB/sec6357.71 MB/secIntel8269CY(2 NUMA Node)1.121.5214293.68 MB/sec10551.71 MB/secIntel E5-2682(2 NUMA Node)1.582.0210092.31 MB/sec7914.25 MB/sec

從以上數(shù)據可以看出這5款CPU性能一款比一款好,飛騰2500慢的core上延時快到intel 8269的10倍了,平均延時5倍以上了。延時數(shù)據基本和單核上測試Sysbench TPS一致。

lat_mem_rd對比數(shù)據

用不同的NUMA Node上的core 跑lat_mem_rd測試訪問Node0內存的RT,只取最大64M的時延,時延和Node距離完全一致,這里就不再列出測試原始數(shù)據了。

RT變化飛騰2500(16 NUMA Node)core:0 149.976
core:8 168.805
core:16 191.415
core:24 178.283
core:32 170.814
core:40 185.699
core:48 212.281
core:56 202.479
core:64 426.176
core:72 444.367
core:80 465.894
core:88 452.245
core:96 448.352
core:104 460.603
core:112 485.989
core:120 490.402鯤鵬920(4 NUMA Node)core:0 117.323
core:24 135.337
core:48 197.782
core:72 219.416海光7280(8 NUMA Node 和 2 NUMA Node)core0 106.839
core8 168.583
core16 163.925
core24 163.690
core32 289.628
core40 288.632
core48 236.615
core56 291.880
分割行
enabled Die interleaving
core:0 153.005
core:16 152.458
core:32 272.057
core:48 269.441海光5280(4 NUMA Node)core:0 102.574
core:8 160.989
core:16 286.850
core:24 231.197Intel 8269CY(2 NUMA Node)core:0 69.792
core:26 93.107申威3231(2 NUMA Node)core:0 215.146
core:32 282.443

測試命令:

for i in $(seq 0 8 127); do echo core:$i; numactl -C $i -m 0 ./bin/lat_mem_rd -W 5 -N 5 -t 64M; done >lat.log 2>&1

測試結果和numactl -H 看到的Node distance完全一致,芯片廠家應該就是這樣測試然后把這個延遲當做距離寫進去了

最后用一張實際測試Intel E5 的L1 、L2、L3 cache延時圖來加深印象,可以看到在每級cache大小附近時延有個跳躍:

縱坐標是訪問延時 納秒,橫坐標是cache大小 M,為什么上圖沒放內存延時,因為延時太大,放出來就把L1、L2的跳躍臺階壓平了

結論

  • X86比ARM性能要好

  • AMD和Intel單核基本差別不大,Intel適合核多的大實例,AMD適合云上拆分售賣

  • 國產CPU還有比較大的進步空間

  • 性能上的差異在數(shù)據庫場景下歸因下來主要在CPU訪問內存的時延上

  • 跨NUMA Node時延差異很大,一定要開 NUMA 讓CPU就近訪問內存,尤其是國產CPU

  • 數(shù)據庫場景下大實例因為鎖導致CPU很難跑滿,建議搞多個mysqld實例

如果你一定要知道一塊CPU性能的話先看 內存延時 而不是 主頻,各種CPU自家打榜一般都是簡單計算場景,內存訪問不多,但是實際業(yè)務中大部分時候又是高頻訪問內存的。


參考資料

十年后數(shù)據庫還是不敢擁抱NUMA?

Intel PAUSE指令變化是如何影響自旋鎖以及MySQL的性能的

lmbench測試要考慮cache等

CPU的制造和概念

CPU 性能和Cache Line

Perf IPC以及CPU性能 CPU性能和CACHE

編輯于 2022-11-14 15:43?IP 屬地浙江

中央處理器 (CPU)

數(shù)據庫

NUMA

評論千萬條,友善第一條


20 條評論

默認

最新

卡拉克西

前兩個我沒啥意見,后三個有臉說是主流?

2022-07-13 · IP 屬地云南

小子

這樣樹新風才能顯出你的能耐

2022-09-15 · IP 屬地貴州

Bill

美國一年大概20萬畢業(yè)生,中國一年有420萬,是人家的20多倍,這也是美國人膽寒的。再給兩年時間,情況就不一樣了。再給五年時間,就會變天。

04-06 · IP 屬地上海

Bill

補充一下,這里的畢業(yè)生是指工科,工程師。

04-06 · IP 屬地上海

Zeratulll

信創(chuàng)市場里后三個確實也是主流。

2022-07-19 · IP 屬地浙江

texttime vage

Intel 8163 IPC是0.67,和我在PostgreSQL下測得數(shù)據基本一致。Oracle可以達到更高的IPC。從8163的perf結果中,看不出來訪存在總周期中的占比??梢蕴砑訋讉€cycle_activity.cycles_l1d_miss、cycle_activity.stalls_mem_any,看看訪存耗用的周期占比。

2022-07-12 · IP 屬地浙江

龔佶敏

感謝分享。特別是這一條:“跨NUMA Node時延差異很大,一定要開 NUMA 讓CPU就近訪問內存,尤其是國產CPU”貌似我們遇到的某些性能問題跟這個有一定的關系。跟廠商客服說NUMA問題他們好像聽不懂,轉發(fā)此文后,他們就比較認真了。

2022-11-17 · IP 屬地北京

趙欣

7h12是64物理核吧

昨天 10:31 · IP 屬地浙江

swordholder

沒測試龍芯嗎

2022-09-22 · IP 屬地廣東

plantegg

點贊超過200就加入龍芯,好像up主都喜歡這么說

2022-11-07 · IP 屬地北京

未設置

龍芯最新的服務器CPU(3C5000、3D5000)給個人一直很少,除非和龍芯的大銷售關系很好能幫你搞……普通人想買到很麻煩的

02-08 · IP 屬地山東

羽生扶蘇

問一下現(xiàn)在鯤鵬怎么樣


2022-09-14 · IP 屬地江西

常成

期待倚天710的測試結果

2022-07-24 · IP 屬地湖南

南昌之星售票系統(tǒng)

請問一些 NUMA-Aware 的調度能減小這個訪問內存速度的影響嗎?

2022-07-23 · IP 屬地浙江

plantegg

南昌之星售票系統(tǒng)

morsel-driver 說的是:15721.courses.cs.cmu.edu 這篇論文吧,morsel-driver 其實不依賴 numa-aware, 這很像協(xié)程,盡量按CPU core數(shù)來設置任務線程數(shù),一個core一個線程,盡量不切換,實際效果上導致了更高的cache命中率和更少的下文切換。這個工作放到 numa-interleave 下一樣對性能提升很大,只是 numa-aware 效果更好了。反過來沒有morsel-driver/協(xié)程,numa-aware也比numa-interleave好。你說的論文很有意思

,好像生產上還沒有用過?

2022-07-27 · IP 屬地北京

南昌之星售票系統(tǒng)

plantegg

哦哦哦,俺是說morsel這種用戶/上層的調度。俺懂你意思了,感謝

2022-07-26 · IP 屬地浙江

plantegg

不能,再去讀下: PolarDB-X:十年后數(shù)據庫還是不敢擁抱NUMA?

2022-07-26 · IP 屬地北京

南昌之星售票系統(tǒng)

plantegg

俺不是說減小訪問速度,是說增加緩存命中率,減小它帶來的影響

2022-07-26 · IP 屬地浙江

plantegg

南昌之星售票系統(tǒng)

numa-aware 改變的是訪問內存,cache命中率在core內部,我理解是不可以的。兩者沒關系,cache命中率基本靠綁核

2022-07-26 · IP 屬地北京

sstack

主流?

2022-07-13 · IP 屬地廣東


【知乎】主流CPU性能摸底(Intel/AMD/鯤鵬/海光/飛騰)的評論 (共 條)

分享到微博請遵守國家法律
株洲市| 隆德县| 乐平市| 牙克石市| 丹阳市| 保康县| 安阳市| 秭归县| 洛宁县| 蚌埠市| 河津市| 洛南县| 依兰县| 隆化县| 谢通门县| 永城市| 齐齐哈尔市| 普安县| 古田县| 甘孜县| 平舆县| 通辽市| 彭山县| 崇明县| 武定县| 调兵山市| 永仁县| 宜兰市| 辉县市| 湛江市| 山西省| 桃源县| 离岛区| 勃利县| 周至县| 廊坊市| 尤溪县| 丰顺县| 博湖县| 大城县| 榆树市|