1.
레이턴시가 여전히 화두입니다. 레이턴시는 컴퓨터구조를 공부하도록 합니다. 레이턴시를 이야기할 때 자주 등장하는 그림입니다.
하드디스크보다는 메모리, 메모리보다는 CPU 캐시를 이용한 어플리케이션이 빠른 이유입니다. 그런데 똑같은 어플리캐이션이라고 하더라도 하드웨어가 다르면 다른 성능을 보입니다. 좀더 좋은 CPU나 TOE를 지원하는 네트워크카드를 선호하는 이유이기도 합니다. ?하드디스크를 대신하여 SSD를 이용하는 것도 같습니다. 그런데 메인메모리는 한번 깊이 생각해보지 않았습니다.
몇 일전 메인메모리를 검토할 기회가 생겼습니다. Netlist사의 HyperStream(지금은 HyperCloud)라는 제품을 받았습니다. 메모리 레이턴시를 대폭 줄인 제품이라고 합니다. 현재 개발서버로 이용하는 장비의 메모리가 12G라서 기쁜 마음으로 48G를 받아서 설치했습니다. ?얼마만큼 레이턴시를 줄인 제품인지 확인을 했습니다.
먼저 어떤 방법론을 적용할지를 결정해야 합니다. 여러 자료를 본 결과 아래의 자료에서 제시한 방법을 선택하였습니다.
Measuring Cacheand Memory Latency and CPU to Memory Bandwidth For use with Intel?Architecture
LMBench라는 벤치마크 도구를 권고하고 있습니다. 사실 이전부터 ?알고 있던 도구이지만 워낙 오래전에 만들어진 것이라 최근 환경에 적합할지 의문을 가졌지만 인텔이 권고하는 방법이라 따라했습니다. LM Bench는 개발자의 사이트에서 받을 수 있지만 컴파일을 하면 장애가 발생합니다. 그래서 Sourceforge에 올라온 버전을 받아서 컴파일하여야 합니다.
Memory Latency를 측정하기 위하여 사용할 프로그램은 lat_mem_rd입니다.
2.
시험은 두가지를 하였습니다. 델서버에 설치하였던 제품과 Netlist제품을 각각 하였습니다. 메인메모리의 정보는 다음과 같습니다. 하드웨어 정보는 lshw를 이용하였습니다.
lshw는 하드웨어정보를 확인할 수 있는 명렁어입니다. 별도의 설치를 하여야 합니다. 흔히 /proc밑에 있는 정보를 이용하는 것보다 간편합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
bank:0 description: DIMM DDR3 Synchronous 1333 MHz (0.8 ns) product: M393B5170FHD-CH9 vendor: 00CE04B380CE physical id: 0 serial: 82329B5F slot: DIMM_A1 size: 4GiB width: 64 bits clock: 1333MHz (0.8ns) bank:0 description: DIMM DDR3 Synchronous 1600 MHz (0.6 ns) product: HS8R005 vendor: 031600B380CE physical id: 0 serial: 34A60037 slot: DIMM_A1 size: 8GiB width: 64 bits clock: 1600MHz (0.6ns) |
이제 앞서 Intel이 권고한 방식으로 시험을 하도록 하겠습니다. 아래와 같이 입력하였습니다.
1 |
[root@IUM x86_64-linux-gnu]# taskset 0x1 ./lat_mem_rd -N 1 -P 1 256 512 |
이상을 이해하려면 CPU의 캐시정보를 알아야 합니다. 델서버에 설치한 CPU는 Xeon L5640모델입니다. L1 cache는 32K, L2 Cache는 256K, L3 Cache가 12M입니다. 이를 기준으로 위의 값을 보면 보면 다음과 같습니다. L1 Cache를 접근하는 시간은 1.7나노초, L2 Cache는 4.4나노초, L3 Cach3는 20나노초입니다. 메인메모리는 68.7나노초입니다.
이제 두개의 메인메모리의 측정값입니다. 아래 데이타중 아래가 새로 설치한 제품의 값입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
"stride=512 16.00000 66.239 24.00000 74.230 32.00000 75.353 48.00000 75.458 64.00000 75.364 96.00000 75.358 128.00000 75.371 192.00000 75.379 256.00000 75.410 "stride=512 16.00000 60.781 24.00000 67.505 32.00000 68.659 48.00000 68.638 64.00000 68.648 96.00000 68.643 128.00000 68.640 192.00000 68.636 256.00000 68.644 |
대략 10%정도 좋은 성능을 보입니다. 그런데 DDR3제품의 클락수가 서로 달랐습니다. 단순히 클락의 차이인지 아니면 제품설계 기술력의 차이인지는 별도로 확인을 해야 합니다.
덧붙여 어플리케이션을 이용하여 시험을 해보아야 좀더 정확한 데이타를 얻을 수 있을 듯 합니다. 다만 메모리도 좋은 제품을 쓰면 당연히 성능향상에 도움이 된다는 사실을 변하지 않습니다. (^^)
제품명에 오류가 있습니다.
HyperCloud와 HyperStream은 다른 제품입니다.
HyperCloud는 bandwidth와 Capacity가 큰 제품이고, HyperStream은 Low latency 제품입니다.
늘 잘보고 있습니다. 감사합니다.
제조사 홈페이지에 명확히 나와 있지않던데. 하여튼 알겠습니다.
리눅스 시스템 정보 dmidecode 로 확인하시면 별도 설치 안해도 됩니다.
제가 사용하는 리눅스서버에서 입력한 결과입니다.
어디서 lmbench가 제공하는 정보를 얻나요?
[root@ium zeroaos]# dmidecode --type memory
# dmidecode 2.11
SMBIOS 2.6 present.
Handle 0x005B, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 32 GB
Error Information Handle: 0x005D
Number Of Devices: 4
Handle 0x005A, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x005B
Error Information Handle: 0x005E
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 6184BB0A
Asset Tag: 9876543210
Part Number: M378B5273DH0-CK0
Rank: 2
Handle 0x005F, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x005B
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelA-DIMM1
Bank Locator: BANK 1
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 6184BB09
Asset Tag: 9876543210
Part Number: M378B5273DH0-CK0
Rank: 2
Handle 0x0060, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x005B
Error Information Handle: 0x0063
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelB-DIMM0
Bank Locator: BANK 2
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 117154C6
Asset Tag: 9876543210
Part Number: M378B5273DH0-CK0
Rank: 2
Handle 0x0065, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x005B
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelB-DIMM1
Bank Locator: BANK 3
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Samsung
Serial Number: 985F8D83
Asset Tag: 9876543210
Part Number: M378B5273DH0-CK0
Rank: 2