Arvuti RAM mälu

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Mõisted

Tööpõhimõte

TODO

Kasulikud lisamaterjalid

Mälu markeeringu lugemine

Kasulikud lisamaterjalid

Mälu testimine

Üks populaarne utiliit x86 arhitektuuril arvuti RAM mälu testimiseks on http://en.wikipedia.org/wiki/Memtest86

  • tihtipeale sisaldub ta live cd plaatidel, nt RIP Linux juures menüüvalikuna
  • samuti saab seda paigaldada nt Debian Squeeze paketihaldusest

RIPLinux

2010 aasta arvuti

Fail:Ram-1.gif

kus

  • protessoriks on Intel Core i7
  • esitatud on L1, L2 ja L3 mahud; maksab tähele panna kuidas Lx cache kiirused kahanevad mida protsessorist kaugemale, ning mahud jällegi suurenevad
  • RAM mälu on 12 GB
  • lisaks on toodud muud mälu ja arvutit iseloomustavad parameetrid, erinevad kiirused jms
  • Pass 1 - esimene ring teste on käimas

Võrlduseks 2005 aasta Intel D945GNT arvuti, maksab märgata erinevusi

Fail:Ram-2.gif

Debiani paketihaldusest

Tarkvara paigaldamiseks sobib öelda

# apt-get install memtest86+

Tulemusena on /boot kataloogis failid

# ls -l /boot/memtest86+*
-rw-r--r-- 1 root root 165084 Oct 21  2010 /boot/memtest86+.bin
-rw-r--r-- 1 root root 167264 Oct 21  2010 /boot/memtest86+_multiboot.bin

ning tekitatud /boot/grub/grub.cfg faili vastavad menüüvalikud, mida arvuti alglaadimisel saab kasutada. Memtest86+ oskab töötada ka üle serial konsooli, nt sedasi

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
       insmod part_gpt
       insmod ext2
       set root='(hd0,gpt2)'
       search --no-floppy --fs-uuid --set 5b5231cb-c2a9-41e8-aee5-c1727888da35
       linux16 /memtest86+.bin console=ttyS0,9600
}

EDAC

EDAC (Error Detection and Correction) http://buttersideup.com/edacwiki/Main_Page ...

# apt-get install edac-utils
# dmesg | grep EDAC
EDAC MC: Ver: 2.1.0 Apr 11 2012
EDAC MC0: Giving out device to 'i7core_edac.c' 'i7 core #0': DEV 0000:ff:03.0
EDAC PCI0: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:ff:03.0' (POLLED)
EDAC MC1: Giving out device to 'i7core_edac.c' 'i7 core #1': DEV 0000:fe:03.0
EDAC PCI1: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:fe:03.0' (POLLED)
EDAC i7core: Driver loaded, 2 memory controller(s) found.
# edac-util --report=full
mc0:csrow0:CPU#0Channel#0_DIMM#0:CE:0
mc0:csrow1:CPU#0Channel#1_DIMM#0:CE:0
mc0:csrow2:CPU#0Channel#2_DIMM#0:CE:0
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0
mc1:csrow0:CPU#1Channel#0_DIMM#0:CE:0
mc1:csrow1:CPU#1Channel#1_DIMM#0:CE:0
mc1:csrow2:CPU#1Channel#2_DIMM#0:CE:0
mc1:noinfo:all:UE:0
mc1:noinfo:all:CE:0

Bitiviga

Bitiviga (ingl. k. bit error) võib esineda suurema tõenäosusega mitte-ECC mälu kasutamisel ning seisneb bit väärtuse nö ilma põhjuseta juhuslikus muutumises. Nt võiks see avalduda selles, et laadides andmebaasi dump'i

  • tekib kodeeringuviga
  • saab teate, et välisvõti keelab andmete tabelisse laadimist

4 GB piir

Mõned 2005 aasta ümbruse arvutid on nö peaaegu 64 bit, nt D945GNT. See väljendub asjaolus, et kuigi saab kasutada 64 bit tuuma ja muud tarkvara ning arvuti BIOS tunneb ära 4 GB mälu näeb operatsioonisüsteem sellest ca 3.3 GB. Selle põhjuseks on emaplaadi manuaali kohaselt asjaolu, et arvuti riistvara ei suuda adresseerida üle 4GB (ilmselt seotud 2^32 = 4 294 967 296) - sellega tuleb lisaks nö tavaliselt mälule, kus programmid töötavad adresseerida PCI-E configuration space, Digital Media Interface, Local APIC jms. Ning tulemusena jääbki operatsioonisüsteemile kasutada nö free käsu väljundi järgi ca 3.3 GB.

decode-dimms

Tundub, et decode-dimms tarkvara töötab DDR2, DDR3 jt mäludega, aga mitte DDR4 puhul. Debian keskkonnas sobib paigaldamiseks öelda

# apt-get install i2c-tools

ja paketis sisaldub programm decode-dimms

Ubuntu keskkonnas sobib paigaldamiseks öelda

# apt-get install decode-dimms

Kasutamiseks tuleb laadida tuuma moodus eeprom

# modprobe eeprom

ja öelda

# decode-dimms
...

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in                             bank 1

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x9A9A)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     UDIMM

---=== Memory Characteristics ===---
Fine time base                                  1.000 ps
Medium time base                                0.125 ns
Maximum module speed                            1600 MHz (PC3-12800)
Size                                            8192 MB
Banks x Rows x Columns x Bits                   8 x 16 x 10 x 64
Ranks                                           2
SDRAM Device Width                              8 bits
Bus Width Extension                             0 bits
tCL-tRCD-tRP-tRAS                               11-11-11-28
Supported CAS Latencies (tCL)                   11T, 10T, 9T, 8T, 7T, 6T, 5T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   6.000 ns
Minimum Active to Auto-Refresh Delay (tRC)      48.125 ns
Minimum Recovery Delay (tRFC)                   260.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       30.000 ns

---=== Optional Features ===---
Operable voltages                               1.5V, 1.35V 
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         Yes
Operating temperature range                     0-95 degrees C
Refresh Rate in extended temp range             2X
Auto Self-Refresh?                              Yes
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         Not implemented
SDRAM Device Type                               Standard Monolithic

---=== Physical Characteristics ===---
Module Height (mm)                              30
Module Thickness (mm)                           2 front, 2 back
Module Width (mm)                               133.5
Module Reference Card                           B

---=== Manufacturer Data ===---
Module Manufacturer                             Crucial Technology
DRAM Manufacturer                               Micron Technology
Manufacturing Date                              2016-W43
Assembly Serial Number                          0xE035F71D
Part Number                                     CT102464BD160B.M16
Revision Code                                   0x4650

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0051
Guessing DIMM is in                             bank 2

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x9A9A)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     UDIMM

...

kus

  • TODO

Mälu omaduste määramine

Tundub, et dmidecode abil saab hinnata

  • millise mälu kasutamine on antud arvutis võimalik
  • millist mälu parasjagu kasutatakse

ECC (kuna total width > data width) ja unbuffered mälu

Memory Device
  Array Handle: 0x1000
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 4096 MB
  Form Factor: DIMM
  Set: 2
  Locator: DIMM_A3 
  Bank Locator: Not Specified
  Type: DDR3
  Type Detail: Synchronous Unbuffered (Unregistered)
  Speed: 1333 MHz
  Manufacturer: 00CE000080CE
  Serial Number: 86F06F3E
  Asset Tag: 02103800
  Part Number: M391B2873FH0-CH9  
  Rank: 1
# dmidecode --type 16
Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
  Location: System Board Or Motherboard
  Use: System Memory
  Error Correction Type: Multi-bit ECC
  Maximum Capacity: 16 GB
  Error Information Handle: Not Provided
  Number Of Devices: 4

ECC (kuna total width > data width) ja buffered

Memory Device
  Array Handle: 0x1000
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 8192 MB
  Form Factor: DIMM
  Set: 1
  Locator: DIMM_A2 
  Bank Locator: Not Specified
  Type: DDR3
  Type Detail: Synchronous Registered (Buffered)
  Speed: 1600 MHz
  Manufacturer: 00CE00B300CE
  Serial Number: 180FFDE6
  Asset Tag: 03144163
  Part Number: M393B1G70QH0-YK0  
  Rank: 1
  Configured Clock Speed: 1333 MHz
# dmidecode --type 16
Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
  Location: System Board Or Motherboard
  Use: System Memory
  Error Correction Type: Multi-bit ECC
  Maximum Capacity: 192 GB
  Error Information Handle: Not Provided
  Number Of Devices: 6

ilma ECC (kuna total width = data width) ja unbuffered (kuna pole kirjas, et on registered ega buffered)

# dmidecode memory
..
Memory Device
  Array Handle: 0x0028
  Error Information Handle: 0x0032
  Total Width: 64 bits
  Data Width: 64 bits
  Size: 2048 MB
  Form Factor: DIMM
  Set: None
  Locator: CHANNEL B
  Bank Locator: CHANNEL B-DIMM 0
  Type: DDR3
  Type Detail: Synchronous
  Speed: 1333 MHz
  Manufacturer: Kingston        
  Serial Number: 74261F8B  
  Asset Tag: A1_AssetTagNum2
  Part Number: 99U5471-002.A00LF 
  Rank: 2
...
# dmidecode --type 16
Handle 0x0028, DMI type 16, 15 bytes
Physical Memory Array
  Location: System Board Or Motherboard
  Use: System Memory
  Error Correction Type: None
  Maximum Capacity: 16 GB
  Error Information Handle: 0x0029
  Number Of Devices: 4

Põlvkonnad

DDR5

TODO

Kasulikud lisamaterjalid

DDR6

TODO

Kasulikud lisamaterjalid

Mälu ja protsessori jõudluse mõõtmised

Metoodika

Väited

  • mõõtmised on tehtud nö tavaliselt töötavate arvutite töötamiste taustal (nt Proxmox PVE server host peal)
  • mõõtlmise tegemiseks on kasutatud kohale kopeeritud üksikuid utiliite lmbench paketist: bw_mem ja lat_mem_rd

Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz ja 2x 'Kingston 2667 MT/s DDR4 8G'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz (iseseisev protsessor st non-onboard)
  • mälu - 2x 'Kingston 2667 MT/s DDR4 8G'
  • MSI tootja emaplaat - B460M PRO-VDH (MS-7C83)

Protsessor

# lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       39 bits physical, 48 bits virtual
CPU(s):              12
On-line CPU(s) list: 0-11
Thread(s) per core:  2
Core(s) per socket:  6
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               165
Model name:          Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz
Stepping:            5
CPU MHz:             4111.101
CPU max MHz:         4300.0000
CPU min MHz:         800.0000
BogoMIPS:            5799.77
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            12288K
NUMA node0 CPU(s):   0-11
..

kus

  • L1d - data cache
  • L1i - instruction cache

Mälu

# dmidecode -t 17
..
Memory Device
	Array Handle: 0x0039
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8192 MB
	Form Factor: DIMM
	Set: None
	Locator: ChannelA-DIMM1
	Bank Locator: BANK 1
	Type: DDR4
	Type Detail: Synchronous
	Speed: 2667 MT/s
	Manufacturer: Kingston
	Serial Number: 05D6108C
	Asset Tag: 9876543210
	Part Number: 99U5702-095.A00G    
	Rank: 1
	Configured Memory Speed: 2667 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Not Specified
	Module Manufacturer ID: Bank 2, Hex 0x98
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None

...

Memory Device
	Array Handle: 0x0039
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8192 MB
	Form Factor: DIMM
	Set: None
	Locator: ChannelB-DIMM1
	Bank Locator: BANK 3
	Type: DDR4
	Type Detail: Synchronous
	Speed: 2667 MT/s
	Manufacturer: Kingston
	Serial Number: F356108C
	Asset Tag: 9876543210
	Part Number: 99U5702-095.A00G    
	Rank: 1
	Configured Memory Speed: 2667 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Not Specified
	Module Manufacturer ID: Bank 2, Hex 0x98
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None

lmbench lat_mem_rd test

# ./lat_mem_rd 4096M
"stride=64
0.00049 0.964
0.00098 0.964
0.00195 0.964
0.00293 0.963
0.00391 0.964
0.00586 0.965
0.00781 0.965
0.01172 0.949
0.01562 0.964
0.02344 0.965
0.03125 0.969 <----- esimene platoo - L1 cache
0.04688 3.052
0.06250 2.996
0.09375 2.884
0.12500 3.038
0.18750 3.033
0.25000 3.096 <---- teine platoo - L2 cache
0.37500 3.377
0.50000 3.381
0.75000 3.419
1.00000 3.409
1.50000 3.448
2.00000 3.401
3.00000 3.430
4.00000 3.410
6.00000 3.576
8.00000 3.796 <----- kolmas platoo - L3 cache
12.00000 4.911
16.00000 5.315
24.00000 5.584
32.00000 5.612
48.00000 5.710
64.00000 5.660
96.00000 5.841
128.00000 5.780
192.00000 5.850
256.00000 5.753
384.00000 5.796
512.00000 5.764
768.00000 5.797
1024.00000 5.794
1536.00000 5.785
2048.00000 5.781
3072.00000 5.870
4096.00000 5.777 <---- neljas platoo - arvuti RAM

kus

  • cpu L1, L2 ja L3 vastavad üsna selgesti äratuntavalt erinevatele platoodele (0.03125 ehk 32 KBait; 0.2500 ehk 256 kBait; 12 MBait; tundub, et 5 nanosekundit latentsus on seotud selle mõõtmise puhul tava-ram kasutamisega)
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

nt vaikimisi stride=64 asemel kasutades stride=128, tulemuse proportsioonid jäävad enam-vähem samaks

# ./lat_mem_rd 4096M 128
"stride=128
0.00049 0.956
0.00098 0.957
0.00195 0.956
0.00293 0.957
0.00391 0.958
0.00586 0.958
0.00781 0.965
0.01172 0.966
0.01562 0.964
0.02344 0.965
0.03125 0.965 <----- esimene platoo
0.04688 2.757
0.06250 2.899
0.09375 3.411 <----- teine platoo
0.12500 4.227 
0.18750 4.116
0.25000 4.350
0.37500 4.123
0.50000 4.263
0.75000 4.225
1.00000 4.214
1.50000 4.227
2.00000 4.211
3.00000 4.156
4.00000 4.218
6.00000 4.318
8.00000 5.307 <----- kolmas platoo
12.00000 10.139
16.00000 13.507
24.00000 15.614
32.00000 16.279
48.00000 17.219
64.00000 17.429
96.00000 18.040
128.00000 18.095
192.00000 18.349
256.00000 18.074
384.00000 18.201
512.00000 18.187
768.00000 18.430
1024.00000 18.274
1536.00000 18.491
2048.00000 18.623
3072.00000 18.565
4096.00000 18.123 <---- neljas platoo - arvuti RAM

lmbench bw_mem test

# ./bw_mem 20K bzero
0.020000 127490.99

# ./bw_mem 40K bzero
0.040000 65095.71

# ./bw_mem 200K bzero
0.200000 67702.68

# ./bw_mem 300K bzero
0.300000 55660.55

# ./bw_mem 512K bzero
0.512000 61620.47

# ./bw_mem 4M bzero
4.00 55078.68

# ./bw_mem 10M bzero
10.00 46650.49

# ./bw_mem 16M bzero
16.00 32082.06

# ./bw_mem 4096M bzero
4096.00 30778.02

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on isegi 127 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • bw_mem tulemused bzero maitselise kopeerimisega on enam-vähem kooskõlas lat_mem_rd testimisega, st platoode asukohad klapivad

bw_mem tulemuse võrdlus tootja protsessori ja mälu spetsifikatsiooniga ei klapi väga hästi. Ühelt poolt cpu osakonnas lubatakse 41.6 GB/s, https://www.intel.com/content/www/us/en/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html

20240731-malu-joudlus-01.png

See arvutatakse

MT-sagedus x cpu-ja-malu-vahelisekanali-laius-baitides x kanalite-arv = 2666 x 8 x 2 = 42 656 MBait/s = 41.65 GB/s
  • viimane katse 31 GBait/s võiks olla mõõdetud 41.65 peale, aga ju siis on siin veel tegureid. Igatahes füüsiliselt on kasutusel kaks kiipi ja nad asuvad erinevate channelite peal, sedasi saavutatakse teoreetiliselt maksimaalne kiirus (vt eest poolt)
# dmidecode -t 17 | egrep "Channel|Speed: 2"
	Locator: ChannelA-DIMM0

	Locator: ChannelA-DIMM1
	Speed: 2667 MT/s
	Configured Memory Speed: 2667 MT/s

	Locator: ChannelB-DIMM0

	Locator: ChannelB-DIMM1
	Speed: 2667 MT/s
	Configured Memory Speed: 2667 MT/s

Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz ja 2x '2400 MT/s DDR4 8G'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
  • mälu - 2x '2400 MT/s DDR4 8G'
  • Gigabyte tootja emaplaat - H370HD3

Protsessor

# lscpu 
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          6
On-line CPU(s) list:             0-5
Thread(s) per core:              1
Core(s) per socket:              6
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           158
Model name:                      Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
Stepping:                        10
CPU MHz:                         3800.345
CPU max MHz:                     4000.0000
CPU min MHz:                     800.0000
BogoMIPS:                        5599.85
Virtualization:                  VT-x
L1d cache:                       192 KiB
L1i cache:                       192 KiB
L2 cache:                        1.5 MiB
L3 cache:                        9 MiB
NUMA node0 CPU(s):               0-5
..

Mälu

# dmidecode -t 17
..
Memory Device
	Array Handle: 0x003A
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 16 GB
	Form Factor: DIMM
	Set: None
	Locator: ChannelA-DIMM1
	Bank Locator: BANK 1
	Type: DDR4
	Type Detail: Synchronous
	Speed: 2400 MT/s
	Manufacturer: 859B
	Serial Number: E0B31085
	Asset Tag: 9876543210
	Part Number: CT16G4DFD824A.M16FE 
	Rank: 2
	Configured Memory Speed: 2400 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V

...

Memory Device
	Array Handle: 0x003A
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 16 GB
	Form Factor: DIMM
	Set: None
	Locator: ChannelB-DIMM1
	Bank Locator: BANK 3
	Type: DDR4
	Type Detail: Synchronous
	Speed: 2400 MT/s
	Manufacturer: 859B
	Serial Number: E0AA2C91
	Asset Tag: 9876543210
	Part Number: CT16G4DFD824A.M16FB 
	Rank: 2
	Configured Memory Speed: 2400 MT/s
	Minimum Voltage: Unknown
	Maximum Voltage: Unknown
	Configured Voltage: 1.2 V

...

lmbench lat_mem_rd test

# ./lat_mem_rd 4096M 256
"stride=256
0.00049 1.056
0.00098 1.053
0.00195 1.056
0.00293 1.055
0.00391 1.062
0.00586 1.056
0.00781 1.055
0.01172 1.057
0.01562 1.053
0.02344 1.055
0.03125 1.053 <---- xxx platoo
0.04688 3.175
0.06250 3.176
0.09375 3.180
0.12500 3.184
0.18750 3.617 <---- xxx platoo
0.25000 5.226
0.37500 8.566
0.50000 9.813
0.75000 10.092
1.00000 10.459
1.50000 10.170
2.00000 10.878
3.00000 10.451 <---- xxx platoo
4.00000 12.321
6.00000 17.275
8.00000 31.988
12.00000 44.646
16.00000 52.191
24.00000 55.607
32.00000 56.344
48.00000 57.026
64.00000 58.416
96.00000 58.126
128.00000 58.109
192.00000 57.870
256.00000 59.276
384.00000 57.918
512.00000 57.344
768.00000 59.505
1024.00000 57.869
1536.00000 59.480
2048.00000 58.471
3072.00000 57.966
4096.00000 59.654 <---- neljas platoo - arvuti RAM

kus

  • cpu L1, L2, L3 ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

# ./bw_mem 20K bzero
0.020000 116102.37

# ./bw_mem 40K bzero
0.040000 62437.94

# ./bw_mem 200K bzero
0.200000 54780.12

# ./bw_mem 300K bzero
0.300000 54098.36

# ./bw_mem 512K bzero
0.512000 50603.55

# ./bw_mem 4M bzero
4.00 49602.07

# ./bw_mem 10M bzero
10.00 30149.16

# ./bw_mem 16M bzero
16.00 24222.04

# ./bw_mem 4096M bzero
4096.00 24142.69

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on isegi 116 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • bw_mem tulemused bzero maitselise kopeerimisega on enam-vähem kooskõlas lat_mem_rd testimisega, st platoode asukohad klapivad

bw_mem tulemuse võrdlus tootja protsessori ja mälu spetsifikatsiooniga ei klapi väga hästi. Ühelt poolt cpu osakonnas lubatakse 41.6 GB/s, https://www.intel.com/content/www/us/en/products/sku/126687/intel-core-i58400-processor-9m-cache-up-to-4-00-ghz/specifications.html (pildil on vale link)

20240731-malu-joudlus-01.png

See arvutatakse

MT-sagedus x cpu-ja-malu-vahelisekanali-laius-baitides x kanalite-arv = 2666 x 8 x 2 = 42 656 MBait/s = 41.65 GB/s
  • antud juhul töötas mälu kiirusega 2400 MT/s st arvutuslikult on kiirus
2400 x 8 x 2 = 38400 = 37 GB/s
  • viimane katse 24 GBait/s võiks olla mõõdetud 37 peale, aga ju siis on siin veel tegureid. Igatahes füüsiliselt on kasutusel kaks kiipi ja nad asuvad erinevate channelite peal, sedasi saavutatakse teoreetiliselt maksimaalne kiirus (vt eest poolt)
# dmidecode -t 17 | egrep "Channel|Speed: 2"
	Locator: ChannelA-DIMM0

	Locator: ChannelA-DIMM1
	Speed: 2400 MT/s
	Configured Memory Speed: 2400 MT/s

	Locator: ChannelB-DIMM0

	Locator: ChannelB-DIMM1
	Speed: 2400 MT/s
	Configured Memory Speed: 2400 MT/s

Intel(R) Celeron(R) G4900 CPU @ 3.10GHz ja 1 x '2400 MT/s DDR4 8G'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - Intel(R) Celeron(R) G4900 CPU @ 3.10GHz
  • mälu - 1x '2400 MT/s DDR4 8G' - üks kiip kahest võimalikust
  • Gigabyte tootja emaplaat - B360M-HD3

Protsessor

# lscpu 
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          39 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   2
  On-line CPU(s) list:    0,1
Vendor ID:                GenuineIntel
  BIOS Vendor ID:         Intel(R) Corporation
  Model name:             Intel(R) Celeron(R) G4900 CPU @ 3.10GHz
    BIOS Model name:      Intel(R) Celeron(R) G4900 CPU @ 3.10GHz To Be Filled By O.E.M. CPU @ 3.1GHz
    BIOS CPU family:      15
    CPU family:           6
    Model:                158
    Thread(s) per core:   1
    Core(s) per socket:   2
    Socket(s):            1
    Stepping:             11
    CPU(s) scaling MHz:   100%
    CPU max MHz:          3100.0000
    CPU min MHz:          800.0000
    BogoMIPS:             6199.99

..
Virtualization features:  
  Virtualization:         VT-x
Caches (sum of all):      
  L1d:                    64 KiB (2 instances)
  L1i:                    64 KiB (2 instances)
  L2:                     512 KiB (2 instances)
  L3:                     2 MiB (1 instance)
NUMA:                     
  NUMA node(s):           1
  NUMA node0 CPU(s):      0,1

Mälu

# dmidecode -t 17
..
Memory Device
        Array Handle: 0x003A
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: ChannelA-DIMM0
        Bank Locator: BANK 0
        Type: DDR4
        Type Detail: Synchronous
        Speed: 2400 MT/s
        Manufacturer: 859B
        Serial Number: 1CC6DDB1
        Asset Tag: 9876543210
        Part Number: CT8G4DFS824A.C8FDD1 
        Rank: 1
        Configured Memory Speed: 2400 MT/s
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: 1.2 V

...

lmbench lat_mem_rd test

# /usr/lib/lmbench/bin/x86_64-linux-gnu/lat_mem_rd -t 2048M
"stride=64
0.00049 1.297
0.00098 1.297
0.00195 1.297
0.00293 1.297
0.00391 1.298
0.00586 1.297
0.00781 1.297
0.01172 1.299
0.01562 1.300
0.02344 1.301 <----- esimene platoo - L1 cache
0.03125 1.463 
0.04688 3.893
0.06250 3.898
0.09375 4.877
0.12500 5.430
0.18750 5.987
0.25000 9.229
0.37500 12.794 
0.50000 14.469
0.75000 15.027
1.00000 19.486 <---- teine platoo - L2 cache
1.50000 34.718 
2.00000 44.717
3.00000 59.353
4.00000 58.591
6.00000 70.036
8.00000 81.805
12.00000 85.952
16.00000 89.151
24.00000 92.667
32.00000 96.610
48.00000 105.103
64.00000 113.609
96.00000 114.362
128.00000 126.880 
192.00000 129.055
256.00000 128.046
384.00000 130.681
512.00000 129.219
768.00000 128.248
1024.00000 129.350
1536.00000 128.102
2048.00000 127.739  <---- neljas platoo - arvuti RAM

kus

  • cpu L1, L2, L3 puudub ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

./bw_mem 4K bzero
0.004000 81679.27

./bw_mem 10K bzero
0.010000 90977.33

./bw_mem 20K bzero
0.020000 94734.16

./bw_mem 40K bzero
0.040000 48740.36

./bw_mem 200K bzero
0.200000 45335.28

./bw_mem 300K bzero
0.300000 47004.35

./bw_mem 512K bzero
0.512000 45087.52

./bw_mem 4M bzero
4.00 16985.14

./bw_mem 10M bzero
10.00 16348.77

./bw_mem 16M bzero
16.00 16646.44

./bw_mem 2048M bzero
2048.00 16455.22

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on suhteliselt normaalne 80 GBait/s kõnealuse arvuti kohta
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • bw_mem tulemused bzero maitselise kopeerimisega on enam-vähem kooskõlas lat_mem_rd testimisega, st platoode asukohad klapivad

bw_mem tulemuse võrdlus tootja protsessori ja mälu spetsifikatsiooniga klapib hästi. Ühelt poolt cpu osakonnas lubatakse tootja spec https://ark.intel.com/content/www/us/en/ark/products/129487/intel-celeron-g4900-processor-2m-cache-3-10-ghz.html alusel kiiruseks 37.5 GB/s

20240802-malu-joudlus-06.png

mis arvutatakse

MT-sagedus x cpu-ja-malu-vahelisekanali-laius-baitides x kanalite-arv = 2400 x 8 x 2 = 38400 MBait/s = 37 GB/s

Teiselt poolt ühe kiibiga st ühe channel peal mõõdetakse kiirus 16 GB/s st umbes poole vähem.

Intel(R) Pentium(R) CPU J3710 @ 1.60GHz ja 1 x '1600 MT/s DDR3 8G'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - Intel(R) Pentium(R) CPU J3710 @ 1.60GHz - onboard protsessor
  • mälu - 1x '1600 MT/s DDR3 8G' - üks kiip kahest võimalikust (aga tal on 'rank 2')
  • ASRock tootja emaplaat - J3710M

Protsessor

# lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       36 bits physical, 48 bits virtual
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               76
Model name:          Intel(R) Pentium(R) CPU  J3710  @ 1.60GHz
Stepping:            4
CPU MHz:             2247.266
CPU max MHz:         2640.0000
CPU min MHz:         480.0000
BogoMIPS:            3200.00
Virtualization:      VT-x
L1d cache:           24K
L1i cache:           32K
L2 cache:            1024K
NUMA node0 CPU(s):   0-3

..

Mälu

# dmidecode -t 17
..
Memory Device
	Array Handle: 0x000C
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8192 MB
	Form Factor: DIMM
	Set: None
	Locator: A1_DIMM0
	Bank Locator: A1_BANK0
	Type: DDR3
	Type Detail: Unknown
	Speed: 1600 MT/s
	Manufacturer: Undefined       
	Serial Number: E04691F5  
	Asset Tag: A1_AssetTagNum0
	Part Number: CT102464BD160B.M16
	Rank: 2
	Configured Memory Speed: 1600 MT/s
	Minimum Voltage: 1.35 V
	Maximum Voltage: 1.5 V
	Configured Voltage: 1.35 V

...

lmbench lat_mem_rd test

# ./lat_mem_rd 1024M
"stride=64
0.00049 1.161
0.00098 1.152
0.00195 1.145
0.00293 1.151
0.00391 1.152
0.00586 1.157
0.00781 1.155
0.01172 1.145
0.01562 1.152
0.02344 1.153 <----- esimene platoo - L1 cache
0.03125 4.624
0.04688 4.671
0.06250 4.669
0.09375 4.607
0.12500 4.591
0.18750 4.673
0.25000 4.703
0.37500 4.703
0.50000 4.900 <---- teine platoo - L2 cache
0.75000 5.711
1.00000 8.610 
1.50000 12.875
2.00000 14.508
3.00000 15.904
4.00000 14.909
6.00000 14.246
8.00000 14.117
12.00000 14.618
16.00000 14.386
24.00000 14.651
32.00000 14.360
48.00000 14.169
64.00000 15.351
96.00000 14.148
128.00000 14.121
192.00000 14.163
256.00000 14.856
384.00000 14.656
512.00000 14.430
768.00000 14.182
1024.00000 15.262 <---- neljas platoo - arvuti RAM

kus

  • cpu L1, L2 (L3 puudub) ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

# ./bw_mem 4K bzero
0.004000 28204.40

# ./bw_mem 10K bzero
0.010000 25161.98

# ./bw_mem 20K bzero
0.020000 22813.56

# ./bw_mem 40K bzero
0.040000 20431.65

# ./bw_mem 200K bzero
0.200000 18146.92

# ./bw_mem 300K bzero
0.300000 18255.92

# ./bw_mem 512K bzero
0.512000 16432.60

# ./bw_mem 4M bzero
4.00 3283.53

# ./bw_mem 10M bzero
10.00 3011.62

# ./bw_mem 16M bzero
16.00 3241.16

# ./bw_mem 1024M bzero
1024.00 3109.82

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on tagasihoidlik 28 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • bw_mem tulemused bzero maitselise kopeerimisega on enam-vähem kooskõlas lat_mem_rd testimisega, st platoode asukohad klapivad

Tootja spec ei esita mälu ja cpu vahelise suhtlemise kiirust. Mõõtmistulemusi vaadates tundub kõik väga tagasihoidlik, ja küllap on see ka ootuspärane nn onboard protsessori kohta.

AMD Ryzen 9 5900X 12-Core Processor CPU @ 3.7GHz ja 4 x 'Kingston 2667 MT/s DDR4 32G'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - AMD Ryzen 9 5900X 12-Core Processor CPU @ 3.7GHz - aus protsessor
  • mälu - 4 x 'Kingston 2667 MT/s DDR4 32G' - neli kiipi neljast võimalikust
  • ASRock tootja emaplaat - X570 Taichi

Protsessor

# lscpu 
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          48 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   24
  On-line CPU(s) list:    0-23
Vendor ID:                AuthenticAMD
  BIOS Vendor ID:         Advanced Micro Devices, Inc.
  Model name:             AMD Ryzen 9 5900X 12-Core Processor
    BIOS Model name:      AMD Ryzen 9 5900X 12-Core Processor             Unknown CPU @ 3.7GHz
    BIOS CPU family:      107
    CPU family:           25
    Model:                33
    Thread(s) per core:   2
    Core(s) per socket:   12
    Socket(s):            1
    Stepping:             2
    Frequency boost:      enabled
    CPU(s) scaling MHz:   78%
    CPU max MHz:          4950.1948
    CPU min MHz:          2200.0000
    BogoMIPS:             7400.03
..

Virtualization features:  
  Virtualization:         AMD-V
Caches (sum of all):      
  L1d:                    384 KiB (12 instances)
  L1i:                    384 KiB (12 instances)
  L2:                     6 MiB (12 instances)
  L3:                     64 MiB (2 instances)
NUMA:                     
  NUMA node(s):           1
  NUMA node0 CPU(s):      0-23

..

Mälu (4 tükki sarnaseid)

# dmidecode -t 17
..
Memory Device
	Array Handle: 0x000F
	Error Information Handle: 0x0016
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 32 GB
	Form Factor: DIMM
	Set: None
	Locator: DIMM 0
	Bank Locator: P0 CHANNEL A
	Type: DDR4
	Type Detail: Synchronous Unbuffered (Unregistered)
	Speed: 2667 MT/s
	Manufacturer: Kingston
	Serial Number: 7C58B42F
	Asset Tag: Not Specified
	Part Number: 9965745-022.A00G    
	Rank: 2
	Configured Memory Speed: 2667 MT/s
	Minimum Voltage: 1.2 V
	Maximum Voltage: 1.2 V
	Configured Voltage: 1.2 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Unknown
	Module Manufacturer ID: Bank 2, Hex 0x98
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 32 GB
	Cache Size: None
	Logical Size: None

...

Mälu on jagatud kanalitele

# dmidecode -t 17 | grep -i chann
	Bank Locator: P0 CHANNEL A
	Bank Locator: P0 CHANNEL A
	Bank Locator: P0 CHANNEL B
	Bank Locator: P0 CHANNEL B

lmbench lat_mem_rd test

# ./lat_mem_rd 4096M
"stride=64
0.00049 0.892
0.00098 0.892
0.00195 0.894
0.00293 0.892
0.00391 0.893
0.00586 0.892
0.00781 0.892
0.01172 0.892
0.01562 0.891
0.02344 0.892
0.03125 0.891
0.04688 0.978
0.06250 0.955
0.09375 0.937
0.12500 0.926
0.18750 0.913
0.25000 0.935
0.37500 0.933
0.50000 0.952
0.75000 0.964
1.00000 0.991
1.50000 0.950
2.00000 0.950
3.00000 0.946
4.00000 0.947
6.00000 0.965
8.00000 0.934
12.00000 0.958
16.00000 1.007 <----- xxx platoo
24.00000 1.453
32.00000 2.382
48.00000 2.975
64.00000 3.136
96.00000 3.124
128.00000 3.146
192.00000 3.183
256.00000 3.271
384.00000 3.246
512.00000 3.252
768.00000 3.228
1024.00000 3.303
1536.00000 3.249
2048.00000 3.193
3072.00000 3.176
4096.00000 3.258 <---- neljas platoo - arvuti RAM

kus

  • cpu L1, L2, L3 ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

./bw_mem 4K bzero
0.004000 94386.46

# ./bw_mem 10K bzero
0.010000 110193.69

./bw_mem 20K bzero
0.020000 129316.99

./bw_mem 40K bzero
0.040000 128097.56

./bw_mem 200K bzero
0.200000 125844.78

./bw_mem 300K bzero
0.300000 125625.35

./bw_mem 512K bzero
0.512000 115625.53

./bw_mem 4M bzero
4.00 21037.87

./bw_mem 10M bzero
10.00 20873.20

./bw_mem 16M bzero
16.00 21145.37

./bw_mem 128M bzero
128.00 21123.86

./bw_mem 4096M bzero
4096.00 21032.96

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on eeskujulik 128 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse

AMD EPYC 9354P 32-Core Processor CPU @ 3.2GHz ja 4 x 'SK Hynix 4800 MT/s DDR5 16G ECC'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - AMD EPYC 9354P 32-Core Processor CPU @ 3.2GHz - aus protsessor
  • mälu - 12 x 'SK Hynix 4800 MT/s DDR5 16G ECC'
  • Supermicro tootja arvuti ja emaplaat - AS-1115CS-TNR ning H13SSW

Protsessor

# lscpu 
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          52 bits physical, 57 bits virtual
  Byte Order:             Little Endian
CPU(s):                   64
  On-line CPU(s) list:    0-63
Vendor ID:                AuthenticAMD
  BIOS Vendor ID:         Advanced Micro Devices, Inc.
  Model name:             AMD EPYC 9354P 32-Core Processor
    BIOS Model name:      AMD EPYC 9354P 32-Core Processor                Unknown CPU @ 3.2GHz
    BIOS CPU family:      107
    CPU family:           25
    Model:                17
    Thread(s) per core:   2
    Core(s) per socket:   32
    Socket(s):            1
    Stepping:             1
    Frequency boost:      enabled
    CPU(s) scaling MHz:   86%
    CPU max MHz:          3799.0720
    CPU min MHz:          1500.0000
    BogoMIPS:             6499.65
..

Virtualization features:  
  Virtualization:         AMD-V
Caches (sum of all):      
  L1d:                    1 MiB (32 instances)
  L1i:                    1 MiB (32 instances)
  L2:                     32 MiB (32 instances)
  L3:                     256 MiB (8 instances)
NUMA:                     
  NUMA node(s):           1
  NUMA node0 CPU(s):      0-63

..

Mälu (12 tükki sarnaseid)

# dmidecode -t 17
..
Memory Device
	Array Handle: 0x001B
	Error Information Handle: No Error
	Total Width: 80 bits
	Data Width: 64 bits
	Size: 16 GB
	Form Factor: DIMM
	Set: None
	Locator: DIMML1
	Bank Locator: P0_Node0_ChannelB_Dimm0
	Type: DDR5
	Type Detail: Synchronous Registered (Buffered)
	Speed: 4800 MT/s
	Manufacturer: SK Hynix
	Serial Number: 80AD01233914A7A05C
	Asset Tag: DIMML1_AssetTag (date:23/39)
	Part Number: HMCG78MEBRA115N               
	Rank: 1
	Configured Memory Speed: 4800 MT/s
	Minimum Voltage: 1.1 V
	Maximum Voltage: 1.1 V
	Configured Voltage: 1.1 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: Unknown
	Module Manufacturer ID: Bank 1, Hex 0xAD
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 16 GB
	Cache Size: None
	Logical Size: None

...

Mälu on jagatud kanalitele

# dmidecode -t 17 | grep -i chann |  nl
     1		Bank Locator: P0_Node0_Channel0_Dimm0
     2		Bank Locator: P0_Node0_Channel1_Dimm0
     3		Bank Locator: P0_Node0_Channel2_Dimm0
     4		Bank Locator: P0_Node0_Channel3_Dimm0
     5		Bank Locator: P0_Node0_Channel4_Dimm0
     6		Bank Locator: P0_Node0_Channel5_Dimm0
     7		Bank Locator: P0_Node0_Channel6_Dimm0
     8		Bank Locator: P0_Node0_Channel7_Dimm0
     9		Bank Locator: P0_Node0_Channel8_Dimm0
    10		Bank Locator: P0_Node0_Channel9_Dimm0
    11		Bank Locator: P0_Node0_ChannelA_Dimm0
    12		Bank Locator: P0_Node0_ChannelB_Dimm0

lmbench lat_mem_rd test

#./lat_mem_rd 16384M
"stride=64
0.00049 1.056
0.00098 1.056
0.00195 1.056
0.00293 1.056
0.00391 1.056
0.00586 1.056
0.00781 1.056
0.01172 1.056
0.01562 1.056
0.02344 1.057
0.03125 1.057
0.04688 1.200
0.06250 1.174
0.09375 1.147
0.12500 1.134
0.18750 1.120
0.25000 1.113
0.37500 1.074
0.50000 1.070
0.75000 1.151
1.00000 1.166
1.50000 1.126
2.00000 1.182
3.00000 1.174
4.00000 1.106
6.00000 1.115
8.00000 1.101
12.00000 1.102
16.00000 1.106
24.00000 1.199
32.00000 1.290
48.00000 1.469
64.00000 1.510
96.00000 1.515
128.00000 1.525
192.00000 1.525
256.00000 1.568
384.00000 1.552
512.00000 1.552
768.00000 1.559
1024.00000 1.559
1536.00000 1.560
2048.00000 1.552
3072.00000 1.553
4096.00000 1.556
6144.00000 1.553
8192.00000 1.555
12288.00000 1.555
16384.00000 1.586

kus

  • cpu L1, L2, L3 ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

./bw_mem 4K bzero
0.004000 117464.63

./bw_mem 10K bzero
0.010000 118747.05

./bw_mem 20K bzero
0.020000 116205.82

./bw_mem 200K bzero
0.200000 119860.11

./bw_mem 512K bzero
0.512000 119695.54

./bw_mem 4M bzero
4.00 102935.85

./bw_mem 16M bzero
16.00 99542.54

./bw_mem 128M bzero
128.00 79404.47

./bw_mem 4096M bzero
4096.00 82187.93

./bw_mem 16384M bzero
16384.00 82116.26

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on eeskujulik 128 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • ram kiirus on nii 82 GBait/s mis on muljetavaldav võrreldes teiste arvutitega (küllap tänu ohtrale kanalite kasutamisele)
  • mõeldes selles arvutis 100 Gbit/s võrgukaardi kasutamisele ei tohiks probleeme olla; st 100 Gbit/s on 10 GBait/s

bw_mem tulemuse võrdlus tootja protsessori ja mälu spetsifikatsiooniga ei klapi väga hästi. Ühelt poolt cpu osakonnas lubatakse 460 GB/s, https://www.amd.com/en/products/processors/server/epyc/4th-generation-9004-and-8004-series/amd-epyc-9354p.html

20240731-malu-joudlus-04.png

See arvutatakse

MT-sagedus x cpu-ja-malu-vahelisekanali-laius-baitides x kanalite-arv = 4800 x 8 x 12 = 460800 MB/s = 460 GB/s

Viimane katse 82 GB/s oleks pigem võinud olla 460 GB/s.

Intel(R) Xeon(R) Gold 6448H ja 4 x 'SK Hynix 4800 MT/s DDR5 64G ECC'

Katses kasutatakse nö PC lahenduse põhist serverit

  • cpu - Intel(R) Xeon(R) Gold 6448H - aus protsessor
  • süsteemis on kaks füüsilist protsessorit
  • mälu - 16 x 'SK Hynix 4800 MT/s DDR5 64G ECC'
  • Supermicro tootja arvuti ja emaplaat - SYS-121C-TN10R ning X13DDW-A

Protsessor

# lscpu 
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 57 bits virtual
  Byte Order:            Little Endian
CPU(s):                  128
  On-line CPU(s) list:   0-127
Vendor ID:               GenuineIntel
  Model name:            Intel(R) Xeon(R) Gold 6448H
    CPU family:          6
    Model:               143
    Thread(s) per core:  2
    Core(s) per socket:  32
    Socket(s):           2
    Stepping:            8
    Frequency boost:     enabled
    CPU max MHz:         2401.0000
    CPU min MHz:         800.0000
    BogoMIPS:            4800.00

..
Virtualization features: 
  Virtualization:        VT-x
Caches (sum of all):     
  L1d:                   3 MiB (64 instances)
  L1i:                   2 MiB (64 instances)
  L2:                    128 MiB (64 instances)
  L3:                    120 MiB (2 instances)
NUMA:                    
  NUMA node(s):          2
  NUMA node0 CPU(s):     0-31,64-95
  NUMA node1 CPU(s):     32-63,96-127

..-

kus

  • arvutis on kaks füüsilist soketis kummaski üks füüsiline protsessor

Mälu (16 tükki sarnaseid)

Memory Device
	Array Handle: 0x0044
	Error Information Handle: Not Provided
	Total Width: 80 bits
	Data Width: 64 bits
	Size: 64 GB
	Form Factor: DIMM
	Set: None
	Locator: P2-DIMMH1
	Bank Locator: P1_Node1_Channel3_Dimm0
	Type: DDR5
	Type Detail: Synchronous Registered (Buffered)
	Speed: 4800 MT/s
	Manufacturer: SK Hynix
	Serial Number: 80AD012316878510FF
	Asset Tag: P2-DIMMH1_AssetTag (date:23/16)
	Part Number: HMCG94MEBRA109N               
	Rank: 2
	Configured Memory Speed: 4800 MT/s
	Minimum Voltage: 1.1 V
	Maximum Voltage: 1.1 V
	Configured Voltage: 1.1 V
	Memory Technology: DRAM
	Memory Operating Mode Capability: Volatile memory
	Firmware Version: 0000 
	Module Manufacturer ID: Bank 1, Hex 0xAD
	Module Product ID: 0xAD00
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 64 GB
	Cache Size: None
	Logical Size: None

...

kus

  • tundub, et see on DDR5 omapära, et 8 andme bit peale tuleb 2 kontroll bitti (64 bit ja 80 bit)
  • veider et configured speed väärtuseks öeldakse 4800 kuigi võiks olla 4400 (või siis on praegu pooled kanalid iseensest tühjad ja neid ei saagi füüsiliselt täita sest emaplaadi manuaalist paistab, et cpu kohta on kaheksa füüsilist pesa)

Mälu on jagatud kaheksale kanalile

# dmidecode -t 17 | grep -i channel |  nl
     1		Bank Locator: P0_Node0_Channel0_Dimm0
     2		Bank Locator: P0_Node0_Channel1_Dimm0
     3		Bank Locator: P0_Node0_Channel2_Dimm0
     4		Bank Locator: P0_Node0_Channel3_Dimm0
     5		Bank Locator: P0_Node1_Channel0_Dimm0
     6		Bank Locator: P0_Node1_Channel1_Dimm0
     7		Bank Locator: P0_Node1_Channel2_Dimm0
     8		Bank Locator: P0_Node1_Channel3_Dimm0

     9		Bank Locator: P1_Node0_Channel0_Dimm0
    10		Bank Locator: P1_Node0_Channel1_Dimm0
    11		Bank Locator: P1_Node0_Channel2_Dimm0
    12		Bank Locator: P1_Node0_Channel3_Dimm0
    13		Bank Locator: P1_Node1_Channel0_Dimm0
    14		Bank Locator: P1_Node1_Channel1_Dimm0
    15		Bank Locator: P1_Node1_Channel2_Dimm0
    16		Bank Locator: P1_Node1_Channel3_Dimm0

lmbench lat_mem_rd test

#./lat_mem_rd 16384M
"stride=64
0.00049 1.056
0.00098 1.056
0.00195 1.056
0.00293 1.056
0.00391 1.056
0.00586 1.056
0.00781 1.056
0.01172 1.056
0.01562 1.056
0.02344 1.057
0.03125 1.057
0.04688 1.200
0.06250 1.174
0.09375 1.147
0.12500 1.134
0.18750 1.120
0.25000 1.113
0.37500 1.074
0.50000 1.070
0.75000 1.151
1.00000 1.166
1.50000 1.126
2.00000 1.182
3.00000 1.174
4.00000 1.106
6.00000 1.115
8.00000 1.101
12.00000 1.102
16.00000 1.106
24.00000 1.199
32.00000 1.290
48.00000 1.469
64.00000 1.510
96.00000 1.515
128.00000 1.525
192.00000 1.525
256.00000 1.568
384.00000 1.552
512.00000 1.552
768.00000 1.559
1024.00000 1.559
1536.00000 1.560
2048.00000 1.552
3072.00000 1.553
4096.00000 1.556
6144.00000 1.553
8192.00000 1.555
12288.00000 1.555
16384.00000 1.586

kus

  • cpu L1, L2, L3 ja arvuti tava-ram vastavad mitte mitte nii selgesti äratuntavalt erinevatele platoodele
  • kui andmehulga suurus enam ei mahu cache sisse, siis süsteem asub kasutama järgmise kihi cache'i ning tavaliselt kaasneb sellega jõudluse langus
  • esimene tulp väljendab käesoleva testimise ringi juures kasutatavat andmete mahtu MegaBait'ides
  • teine tulp väljendab tegelemisega seotud latsentsust nanosekundites
  • stride on midagi mis määratleb nö testimise sisemist käitumist; tundub, et stride suurendamine esitab tulemused reljeefsemalt

lmbench bw_mem test

./bw_mem 4K bzero
0.004000 117464.63

./bw_mem 10K bzero
0.010000 118747.05

./bw_mem 20K bzero
0.020000 116205.82

./bw_mem 200K bzero
0.200000 119860.11

./bw_mem 512K bzero
0.512000 119695.54

./bw_mem 4M bzero
4.00 102935.85

./bw_mem 16M bzero
16.00 99542.54

./bw_mem 128M bzero
128.00 79404.47

./bw_mem 4096M bzero
4096.00 82187.93

./bw_mem 16384M bzero
16384.00 82116.26

kus

  • esimene tulp on kasutatud andmete maht
  • teine tulp on andmetega tegelemise kiirus MBait/s
  • väiksemate mahtudega saab ära tegeleda protsessorile lähem cache, mis on kiirem L1 on eeskujulik 128 GBait/s uskudes seda mõõtmist
  • bw_mem + bzero tundub olevat kõige nö suuremaid väärtusi väjastav kopeerimise maitse
  • ram kiirus on nii 82 GBait/s mis on muljetavaldav võrreldes teiste arvutitega (küllap tänu ohtrale kanalite kasutamisele)
  • mõeldes selles arvutis 100 Gbit/s võrgukaardi kasutamisele ei tohiks probleeme olla; st 100 Gbit/s on 10 GBait/s

https://ark.intel.com/content/www/us/en/ark/products/232391/intel-xeon-gold-6448h-processor-60m-cache-2-40-ghz.html

20240731-malu-joudlus-05.png

Mäluga suhtlemise kiirus antud juhul (2DPC)

MT-sagedus x cpu-ja-malu-vahelisekanali-laius-baitides x kanalite-arv = 4400 x 8 x 16 = 563200 MB/s = 550 GB/s

Kasulikud lisamaterjalid