iozone 질문

arkade의 이미지

iozone 사용중 문의사항이 있어 질문드립니다.

iozone으로 아래와 같이 auto test를 수행하여보았습니다.
그중 read performance test 결과가 이해가 가지 않는데요.

32K file을 32K record size로 read할 경우 bandwidth가
16K file을 16K record size로 read할 경우 bandwidth보다 더 크게 나옵니다.

또한 64K file read, 64K record size read BW가 32K file read, 32K record size read BW보다 더크게 나오구요.
이와 같은 현상이 256K file을 256k record size로 read할때까지 동일하게 나타나다가,
256K를 넘어가면 BW가 급격히 떨어집니다.

-----------------------------------------------------------------------------------------------------------------------

.질문
: 상식적으로는 L1 cache size인 32KB에서 최고 BW가 나오고, L2 cache size인 1024KB가 넘으면 BW가 떨어져야 할것 같은데요.
256K에서 최고 BW가 나오는 이유는 무엇일까요.

. Cache size
: L1 (32KB)
: L2 (1024KB)

. iozone command
: file size(4KB ~ 4GB), record size(1K ~ 16MB)조합으로 auto test
: iozone -az -g 4G -y 1K -i 0 -i 1 -S 32 -L 32 -n iozone.xls

preisner의 이미지

간단히 설명하기는 어렵습니다.
CPU L1/L2/L3 Cache 뿐 아니라 OS 의 buffer/Cache, 파일시스템,
저장장치의 Cache, 블럭 사이즈, 또한 Raid 나 스토리지 Cache 와 볼륨 구성(Stripe 등)에 따라 결과가 달라질 수 있습니다.

더불어 BMT tool 이 테스트 하는 방법에 따라서도 바뀔 수 있으니 한가지만 결과만 놓고 분석하기 보다는 bonnie++ 와 dd 등 다른 tool도 함께 테스트 해서 보시는게 좋겠습니다.

일반적으로 Raid stripe size를 256K로 설정하므로 이 값을 바꿔가면서 테스트 해 보시면 어떨까 생각 됩니다.
Cache가 영향을 주는 지 확인 하고 싶다면 Direct I/O(O_DIRECT flag enable) 로 테스트 해 보시는 것도 좋겠네요.

jachin의 이미지

Set Associative 방식의 캐쉬 구조로 이루어진 경우가 많은데,
4-Way Set Associative 방식인지, 8-Way 혹은 극단적으로 2-Way 인지에 따라서도 달라집니다.
(대부분, 평균 성능을 높이기 위해 4-Way 이상을 사용합니다.)
같은 용량의 캐쉬라도 몇 Way 인지에 따라 달라지고,
(일반적으로 많은 Way 수가 더 좋겠지만)
내부의 캐쉬램 셀로 쓰이는 SRAM 성능에 따라서도 달라집니다.
그리고 Cache Controller의 성능에 따라서도 달라집니다.
어떤 알고리즘을 가지고, 어떤 정책을 쓰느냐에 따라,
캐쉬 성능에 엄청난 차이가 발생합니다.

CPU 사양 문서에도 나와있지 않은 경우가 있지만,
자체 특허로 등록되어 있다면, 사용되는 경우가 많기 때문에,
대부분 각 회사에서 모델별로 사용하는 캐쉬 제어 회로마다 성능차이가 있습니다.