Fix eSSD Benchmark

모든 것이 잘못되었습니다.

아, 모든 것은 아닙니다. cSSD 벤치마크에 대해선 방법을 유지합니다. 그렇게 따지니 폐기해야할 데이터는 그렇게 많지 않군요.


SSD Performace Change

이전에 벤치마크 방법론에서도 언급한 그래프입니다. SSD는 자극에 노출되며 그 성능이 변화하죠. 그리고 이에 대해서 정확한 성능, Steady State에서의 성능을 측정하기 위해선 올바른 Pre-Conditioning이 필요합니다. 

일반적으로 Over Provisioning이 100% 이상으로 잡힌 제품이 잘 없기 때문에 User Capacity의 2배에 대해 자극을 가하면 Steady State로 진입할 수 있다고 생각했습니다. 실제로 ezFIO에서도 해당 접근 방법을 취하고 있고요.

ezFIO를 기반으로 제 나름대로의 eSSD 벤치마크를 만들어 970 PRO 1TB의 벤치마크를 다시금 진행했습니다.

여기 두 가지 그래프가 있습니다. 왼쪽 그래프는 ezFIO를 참고해 128kiB 쓰기가 완료된 SSD에 추가로 4kiB 쓰기 자극을 가해 Pre-Conditioning을 진행한 모습입니다. 오른쪽 그래프는 ezFIO와 다르게 Random 성능 측정을 하기 전에 Purge를 하고 동일하게 Pre-Conditioning을 진행한 모습입니다.

두 그래프의 형태는 상당히 다르지만, 막바지의 성능... Pre-Conditioning이 종료되어갈 때의 성능, Steady State라고 생각한 성능은 600k ~ 700k IOPS로 일치합니다. 

실제로 Purge의 여부에 상관없이 도출되는 Random 성능은 일치했습니다.

ezFIO와 제가 직접 진행한 벤치마크의 값이 다른 것은 ezFIO는 libaio를, 저는 io_uring을 사용했기 때문입니다. 그래프의 형태 자체는 다르게 도출되지만, 값 자체는 상당히 유사한 범위에 속한다고 판단했습니다.

제가 이상한 것을 느낀 부분은 여기가 아니라 위의 Pre-Conditioning 부분입니다. Random 4kiB Write 성능이 너무나도 우수하다고 생각되었던거죠.


기존에 SCM을 위한 벤치마크로 남겨두었던 WSAT Test를 진행해보기로 합니다. 위의 Pre-Conditioning을 통해 진입한 것이 Steady State라면 생각보다 시간이 그렇게 오래 걸리지 않을 것이라 생각했죠.

하지만 벤치마크를 실행하고 시간은 계속 흘러갔습니다.

4kiB Random Write WSAT Test

그렇게 도출된 그래프입니다. 뭔가 이상합니다. 이전에 Pre-Conditioning이라고 생각했던 것은 잘못된 Pre-Conditioning이었죠. 정확히 말하자면, Steady State 도달 이전에 Pre-Conditioning을 종료해버린 것입니다. 

따라서 이전 970 PRO 1TB 리뷰에서 정말로 '안정적인 영역'에서의 성능이라는 것은 틀린 표현이었던거죠. 해당 리뷰에선 Steady State를 측정한 것이 아니었기 때문입니다.

다만, 이해가 가지 않는 부분은 남아있습니다. Purge를 진행하고 난 뒤의 Random Pre-Conditioning은 750초가 넘게 걸렸으며, 실제 로깅을 뜯어보니 끝자락까지 650k IOPS를 유지하고 있었습니다. 하지만 WSAT에서는 500초가 되기 이전부터 IOPS가 급격하게 하락하는 것을 관찰할 수 있었습니다.

이는 벤치마크 개선 작업 중에 진행된 것이기에 제 실수를 빼놓을 수 없었을 가능성도 존재하는 만큼, 깊게 생각하지 않고 넘기려고 합니다. 증거를 찾으려고 해도 이미 벤치마크 실행 파일들을 덮어씌운 뒤라는 것도 문제고요.

확실한 부분은, 제 eSSD 벤치마크가 개선을 필요로 한다는 부분입니다. 희망적인 부분은 FIO에는 Steady State의 감지와 관련된 옵션이 존재한다는 것 입니다. 이것을 적극 채용하여 확실하게 Steady State로 진입 이후에 성능 측정을 하는 것으로 개선했습니다.


결과는 성공적입니다. 확실하게 Steady State로 진입을 하고 Pre-Conditioning이 종료되는 것을 확인할 수 있었습니다.

X축의 범위를 0~2000초로 확대한 그래프입니다. FOB - Transition - Steady State 단계를 확실하게 확인할 수 있습니다.

Random Write IOPS (Steady State)

그리고 진실된 Steady State에서 Queue Depth에 따른 Random Write 성능 측정을 실시한 결과입니다. 위에서 봤던 그래프와 다르게 안정적으로, 하지만 더 낮은 성능을 확인할 수 있습니다.

이것이 970 PRO가 안정적일 때의 성능 값이라고 할 수 있겠죠. 


여러 커뮤니티에 배포한 970 PRO 1TB 리뷰들을 이제와서 철회 및 수정하긴 어려운 만큼, 추후 새로운 리뷰에 해당 내용의 오류를 지적할 예정입니다. 

 

하... 내 시간과... 전기가...

This article was updated on

Related post