-
부하테스트 시 볼륨이 커야 메모리 캐싱 효과가 없다?성능, 오해와 진실 2021. 1. 9. 00:58
이것도 참 많이 들어본 말 중의 하나이나, 잘못된 상식이다.
BMT (Bench Mark Test)를 하면 스토리지의 최대 성능을 측정하게 된다. 이때, 다수의 Disk volume에 IO를 발생시킨다. 그런데 볼륨 사이즈가 메모리 사이즈보다 작으면 메모리 내에 잔존해 있는 데이터를 액세스함으로써 정확한 성능 측정이 되지 않는 것으로 오해하고 있는 사람들이 많다. 즉, 메모리 캐싱 효과에 의해 실제 스토리지 성능보다 더 잘 나온다는 것이다.
과연 그럴까?
우선, 스토리지 자체의 성능을 확인하는 것이므로 Raw device에 직접 부하를 생성하고, 또 메모리를 Bypass 하기 위해 vdbench 툴의 경우 direct 옵션을 사용하는 것이 일반적이다. 그렇기에 캐시 메모리에서의 캐싱은 일어나지 않는다.
메모리에서의 캐싱이 가능하려면 Raw device에 부하를 생성하지 않고, File system에 부하를 발생시키면 OS에 의한 메모리 캐싱 효과가 생길 수 있다. 그러나, 이 경우, 스토리지 자체의 온전한 성능을 확인하기 어려우므로 권장하는 방법이 아니다.
많은 엔지니어들이 일찌감치 볼륨을 크게 만들어서 테스트하라고 하는데, 디스크 볼륨의 사이즈가 크다고 한꺼번에 많은 데이터를 읽거나 쓸 수 있는 것이 아니며, 볼륨이 크든 작든, 각 볼륨 별 대역폭은 동일하다. 볼륨의 사이즈가 작아서 부하가 작게 들어간다고 생각할 수 있는 시나리오는 Raw device 대신 File system에 쓰기 하는 경우뿐이다. 왜냐면 파일 시스템은 Full 나면 그 순간 Write IO가 중단되니까.
반면, Raw device로의 부하 생성은 데이터가 볼륨 사이즈만큼 차더라도, 지속적으로 Overwrite 하므로 부하의 크기는 일정할 수밖에 없다.
볼륨의 크기와 성능은 관계없으며, 데이터를 쓰는 경로가 늘어나는 것이 중요하다. 즉, 볼륨의 개수가 성능에 영향을 미치게 된다. 예를 들면, 1개의 볼륨에 부하를 주는 것보다는 4개 볼륨에 주는 것이 더 많은 Data path를 사용하므로, 더 높은 부하를 줄 수 있고, 그것을 잘 처리하는지를 판단할 수 있다.
혹, 아닌 것 같은 생각이 든다면, 볼륨 사이즈를 10GB와 100GB, 또는 1GB와 10GB 등.. 2가지로 만들어 부하를 줘보면 바로 알 수 있다. 결과는 동일하다.
스토리지 부하 테스트 시 볼륨 사이즈가 메모리 사이즈보다 작으면 메모리 캐싱 효과로 원래의 성능보다 잘 나오므로 볼륨을 충분히 크게 만들어야 정확한 테스트가 이루어진다는 것은 사실이 아님을 알려드린다.
'성능, 오해와 진실' 카테고리의 다른 글
플래시는 비싸다? (feat. SSD는 HDD보다 비싸다?) (0) 2021.01.12 스토리지 1대 추가 시 더 빨라진다? (0) 2021.01.11 캐시 (Cache) 메모리가 크면 성능이 더 좋을까? (0) 2021.01.08 6G SAS가 12G SAS로 바뀌면 더 빠를까? (0) 2021.01.07 쓰루풋 (MB/s)이 높으면 성능이 좋은 것일까? (0) 2021.01.06