IOR
개요
IOR는 HPC 및 스케일아웃 스토리지 시스템의 읽기/쓰기 성능을 측정할 때 널리 쓰이는 병렬 I/O 벤치마크입니다. 번들 실행 스크립트는 여러 클라이언트 호스트에 MPI rank를 분산하여 분산 스토리지 시스템의 최대 집계 읽기/쓰기 성능을 측정할 수 있습니다.
사전 요구 사항
- 참여하는 모든 테스트 호스트에
mass-client패키지를 설치합니다. - 참여하는 모든 클라이언트에 같은 DAOS filesystem을 마운트합니다. 실행 스크립트는
DFS_PATH로 지정한 마운트에서 pool과 container를 확인한 다음 DFS 백엔드로 IOR를 실행합니다.
MASS에서 IOR 실행
MPI rank
MPI rank는 I/O request를 보내는 프로세스입니다. NPROCS는 노드마다 실행할 이러한 프로세스의
수를 지정합니다. 다중 노드 테스트의 전체 프로세스 수는 NPROCS와 호스트 수를 곱한 값입니다.
예를 들어 HOSTS=client01,client02 NPROCS=16이면 각 노드에서 16개씩, 총 32개의 프로세스가
I/O request를 보냅니다.
- 단일 노드 테스트를 실행합니다.
NPROCS=16 DFS_PATH=/mnt/poc-home \
/opt/boostx-sds/ior/scripts/ior.sh
- 여러 클라이언트의 집계 성능을 측정하려면 쉼표로 구분한 호스트 목록을 지정합니다.
NPROCS는 호스트당 rank 수입니다.
HOSTS=client01,client02,client03,client04 NPROCS=16 DFS_PATH=/mnt/poc-home \
/opt/boostx-sds/ior/scripts/ior.sh
다중 노드 실행에는 참여 호스트 사이의 암호 없는 root SSH 접속과 모든 호스트의 동일한 MASS
클라이언트 설치가 필요합니다. root가 아닌 사용자가 스크립트를 시작하면 sudo -E로 스크립트를
다시 실행합니다.
설정
실행 스크립트는 환경 변수로 설정합니다. Mandatory 환경 변수는 NPROCS 하나이며, 지정하지 않으면
스크립트가 오류와 함께 종료됩니다. 나머지는 Optional 환경 변수이며, 생략하면 아래의 기본값을
사용합니다.
Mandatory 환경 변수
| 변수 | 설명 | 기본값 |
|---|---|---|
NPROCS | 각 호스트에서 실행할 MPI rank 수입니다. 전체 rank 수는 NPROCS와 HOSTS의 호스트 수를 곱한 값입니다. | 없음 |
Optional 환경 변수
| 변수 | 설명 | 기본값 |
|---|---|---|
HOSTS | 다중 노드 실행에 사용할 호스트를 쉼표로 구분해 지정합니다. 모든 호스트에 같은 MASS 클라이언트가 설치되어 있고 암호 없는 root SSH 접속이 가능해야 합니다. | localhost |
DFS_PATH | 대상 pool과 container를 조회할 때 사용하는 MASS 마운트 경로입니다. IOR는 마운트에 직접 쓰지 않고 해당 대상을 DFS로 접근합니다. | /mnt/poc-home |
BLOCK | IOR block 크기(-b)로, 각 rank가 segment마다 쓰는 바이트 수입니다. | 2g |
XFER | IOR transfer 크기(-t)로, 각 I/O 작업에서 전송하는 데이터 크기입니다. | 16m |
SEGS | 각 rank에 적용할 IOR segment 수(-s)입니다. | 4 |
WR_ONLY | 1이면 쓰기 단계만 실행하고 이후 읽기 전용 실행에 사용할 테스트 파일을 유지합니다. | 0 |
RD_ONLY | 1이면 조건이 일치하는 쓰기 전용 실행이 남긴 파일을 읽습니다. WR_ONLY와 함께 활성화하지 마세요. | 0 |
SUMMARY | <경로>,json 또는 <경로>,csv 형식의 결과 파일입니다(예: /tmp/ior.json,json). 다중 노드에서는 상위 디렉터리가 모든 호스트에 있어야 합니다. | 미설정 |
CONFIG | IOR script 설정 파일입니다. 파일 안의 값은 BLOCK, XFER, SEGS, 실행 단계 flag와 내장 시험 옵션보다 우선합니다. 파일을 읽을 수 없으면 내장 기본값을 사용합니다. | 실행 스크립트 옆의 config.ior |
DAOS_AGENT_DRPC_DIR | daos_agent.sock이 있는 디렉터리입니다. agent socket 자동 탐색을 재정의할 때만 지정합니다. | /run/boostx-agent 또는 활성 /tmp/boostx-agent-* 디렉터리 |
예를 들어 다음 명령은 더 큰 워크로드를 실행하고 JSON 요약 결과를 기록합니다.
NPROCS=32 BLOCK=4g XFER=32m SEGS=8 SUMMARY=/tmp/ior.json,json \
/opt/boostx-sds/ior/scripts/ior.sh
참고
- 읽기 전용 실행은
NPROCS,BLOCK,XFER,SEGS값이 같은 쓰기 전용 실행에서 만든 파일을 사용해야 합니다. - 다중 노드에서 요약 결과를 기록하려면 상위 디렉터리가 모든 호스트에 있어야 합니다.
- 패키지 구성과 다른 클라이언트 도구는 개발자 툴킷을 참조하세요.