유용한 저장소 테스트는 작업 크기, 접근 패턴, 동시성, 내구성 요구 사항을 애플리케이션에 맞춥니다. 테스트 조건과 지연 시간 분포를 기록한 다음 애플리케이션 측정으로 결과를 확인하세요.
점수가 아니라 저장소 질문에서 시작하세요
벤치마크를 실행하기 전에 무엇을 알아야 하는지 결정하세요. 느린 데이터베이스 커밋, 파일 배포 처리량, 많은 작은 파일을 생성하는 빌드 프로세스를 조사하고 있을 수 있습니다. 이러한 워크로드는 디스크에 동일한 작업을 요구하지 않습니다. 대규모 순차 복사는 인상적으로 보일 수 있지만 작은 무작위 읽기를 수행하는 서비스가 겪는 지연에 대해서는 거의 말해주지 않습니다.
NVMe은 비휘발성 미디어와 효율적인 병렬 I/O를 위해 설계되었지만, 그 프로토콜 이름이 호스팅 저장소 경로의 모든 부분을 설명하지는 않습니다. 가상화, 파일 시스템, 리소스 경합, 애플리케이션도 여전히 중요합니다. 전체 서버가 빠르다는 것을 증명하는 숫자를 만들려 하기보다는 저장소 지연이 특정 작업을 느리게 하는지와 같은 테스트 가설을 작성하세요.
워크로드를 재현 가능한 용어로 설명하세요
작업 크기, 순차 또는 무작위 패턴, 읽기 대 쓰기 비율, 작업 수, 큐 깊이를 기록하세요. 데이터 세트 크기와 테스트 기간도 포함하세요. fio 문서는 이러한 워크로드 제어와 사용 가능한 I/O 엔진을 설명합니다. 의도한 깊이가 모든 엔진이나 설정에서 달성되지 않을 수 있으므로 요청한 구성뿐 아니라 보고된 동작도 읽으세요.
결과 옆에 테스트 설명 사본을 보관하세요. 운영 체제, 파일 시스템, 마운트 옵션, 서비스 활동, 사용 가능한 용량을 기록하세요. 구성을 비교할 경우 한 번에 하나의 관련 조건을 변경하세요. 다른 접근 패턴이나 동시성을 가진 테스트는 저장 매체만 변경된 것처럼 공정하게 제시될 수 없습니다.
| 애플리케이션 패턴 | 설명할 테스트 차원 | 검토할 결과 |
|---|---|---|
| 대용량 파일 전송 | 순차 읽기 및 동시 클라이언트 | 지속 처리량 및 CPU 사용 |
| 레코드 조회 | 작은 무작위 읽기 및 대표적인 동시성 | 지연 시간 분포 및 완료된 작업 |
| 내구성 있는 트랜잭션 | 쓰기 및 동기화 요구 사항 | 버퍼링된 쓰기 속도만이 아닌 커밋 관련 지연 |
| 빌드 또는 추출 | 혼합된 작은 파일 작업 | 종단 간 작업 기간 및 I/O 대기 |
캐시를 무시하지 않고 제어하세요
메모리에 맞는 데이터 세트는 첫 번째 패스 이후 대부분 캐시 동작을 측정할 수 있습니다. 애플리케이션이 일반적으로 동일한 캐시의 이점을 누린다면 유용할 수 있지만, 이를 원시 장치 성능이라고 표시해서는 안 됩니다. 테스트가 따뜻한 애플리케이션 경로, 더 차가운 데이터 세트, 운영 체제의 버퍼링 효과를 줄이기 위한 I/O 모드 중 무엇을 검사하는지 의도적으로 선택하세요.
직접 I/O 지원과 정렬은 플랫폼과 엔진에 따라 다릅니다. 또한 애플리케이션의 내구성 요구 사항을 자동으로 표현하거나 스택의 모든 캐시를 제거하지도 않습니다. 선택한 모드를 명확히 명시하고, 버퍼링된 테스트와 버퍼링되지 않은 테스트를 동일한 작업을 나타내는 것처럼 비교하지 마세요. 해석에 도움이 된다면 워밍업과 측정 구간을 분리하세요.
처리량과 함께 지연 시간 꼬리를 읽으세요
평균 지연 시간은 실제 요청에 영향을 미치는 느린 작업을 숨길 수 있습니다. 보고된 백분위수와 그 뒤의 샘플 수를 검토하세요. 높은 백분위수는 해당 테스트 동안 관찰된 작업의 명시된 비율이 그 아래에 속한 경계를 설명하며, 영구적인 서비스 보장이 아닙니다. 짧거나 대표성이 없는 실행은 바쁜 프로덕션 기간에 대한 제한적인 증거만 제공합니다.
큐 깊이가 높아지면 완료 처리량이 향상되는 동시에 대기 시간이 증가할 수 있습니다. 이러한 트레이드오프는 배치 처리에는 적합할 수 있지만 대화형 서비스에는 해로울 수 있습니다. 애플리케이션과 유사한 동시성에서 결과를 비교하고 동시에 CPU 및 I/O 압력을 모니터링하세요. 환경을 공유하는 다른 워크로드에 불필요한 중단을 만들기 전에 중지하세요.
테스트를 승인된 범위 내에서 비파괴적으로 유지하세요
충분한 여유 공간과 명시적인 정리 계획이 있는 전용 테스트 디렉터리나 준비된 일회용 볼륨을 사용하세요. 검증되지 않은 원시 장치나 프로덕션 데이터 세트에 쓰기 벤치마크를 지정하지 마세요. 시작하기 전에 도구의 대상과 쓰기 동작을 확인하고 제한된 실행으로 시작하세요. 합성 I/O는 유용한 파일을 덮어쓰지 않더라도 용량을 소비하고 서비스를 방해할 수 있습니다.
프로덕션과 유사한 평가를 위해서는 유지보수 기간을 합의하고 애플리케이션 모니터링을 유지하세요. 가능하면 가공된 데이터를 사용하세요. 속도 테스트로 저장소 신뢰성을 추론하지 마세요: 무결성 검사, 백업, 복원은 별개의 작업입니다. 벤치마크를 완료한 장치에도 삭제, 소프트웨어 실수, 머신 손실에 대한 복구 전략이 필요합니다.
애플리케이션 증거로 루프를 닫으세요
보고서 서비스가 무작위 읽기를 기다리는 데 많은 시간을 소비한다고 가정해 보세요. 팀은 대표적인 읽기 패턴을 테스트한 다음 비교 가능한 데이터에 대해 실제 보고서를 반복합니다. 보고서가 개선되고 다른 작업이 안정적으로 유지되면 결과는 저장소 가설을 뒷받침합니다. 그렇지 않다면 더 광범위한 합성 테스트를 반복하는 대신 쿼리 설계, 메모리 또는 다른 종속성을 조사하세요.
Pulse NVMe 및 선택된 전용 구성은 SwissOctet 카탈로그에 NVMe 스토리지를 나열합니다. 해당 라벨은 사양이며 공개된 애플리케이션 벤치마크가 아닙니다. 제공된 환경을 평가하기 위해 통제된 방법을 사용하고 결과와 함께 조건을 보존하세요. 저장소 측정과 사용자에게 보이는 결과가 같은 질문에 답할 때 결정이 더 강해집니다.
실용 체크리스트.
- 애플리케이션 질문을 먼저 정의하세요.
- 패턴, 블록 크기, 동시성, 기간을 기록하세요.
- 캐시 및 I/O 모드 가정을 명시하세요.
- 처리량뿐 아니라 지연 시간 백분위수도 검사하세요.
- 검증된 일회용 대상과 제한된 초기 부하를 사용하세요.
- 애플리케이션 테스트로 결과를 확인하세요.
중요한 세부 사항.
순차 복사만으로 데이터베이스 저장소를 비교하기에 충분한가요?+
일반적으로 아닙니다. 데이터베이스 접근에는 작은 무작위 읽기, 쓰기, 동기화가 관련될 수 있습니다. 관련 패턴을 모델링하고 실제 애플리케이션을 검증하세요.
직접 I/O가 내구성 있는 쓰기를 증명하나요?+
아니요. 버퍼링과 내구성은 별개의 문제입니다. 애플리케이션이 요구하는 동기화 동작에 맞추세요.
하나의 테스트를 보장된 요금제 속도로 게시할 수 있나요?+
아니요. 그 조건과 범위를 게시하세요. 한 번의 실행에서 측정된 결과는 서비스 수준이나 미래 성능 보장이 아닙니다.
출처로 이동하세요.
이 참고 자료는 이 가이드의 기술 개념을 뒷받침합니다. 프로덕션 시스템을 변경하기 전에 최신 문서를 확인하세요.
- fio: 유연한 I/O 테스터 문서 fio.readthedocs.io
- NVM Express: 사양 개요 및 FAQ nvmexpress.org
- Linux 커널: Pressure Stall Information docs.kernel.org
SwissOctet의 편집 지침. 예시는 설명용입니다. 서비스 사양, 사용 가능한 옵션 및 계약 조건은 별도로 확인해야 합니다.