Arvuti RAM mälu
Sissejuhatus
TODO
Mõisted
- registered ehk buffered memory - RDIMM - süsteemi saab reegline lülitada rohkem RDIMM mälu kui UDIMM mälu, https://en.wikipedia.org/wiki/Registered_memory
- unregistered ehk unbuffered memory - UDIMM
- DIMM -dual in-line module - http://en.wikipedia.org/wiki/Dual_in-line_memory_module
- DDR - double data rate
- DDR2
- DDR3 - http://en.wikipedia.org/wiki/DDR3_SDRAM
- DDR4
- DDR5
- DDR6
- SDRAM - Synchronous dynamic random-access memory, http://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory
- DRAM - Dynamic random-access memory, http://en.wikipedia.org/wiki/Dynamic_random_access_memory
- SRAM - Static random-access memory, http://en.wikipedia.org/wiki/Static_random_access_memory
- DPC - device per channel (füüsilisi mälukiipe kanali peale)
- RANK - TODO
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
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
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
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)
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
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
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
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