파일 시스템 성능 고려 사항
HPC 워크로드를 실행한 경우 ‘작업’, ‘블록 크기’, IOPS, ‘처리량’, ‘대기 시간’ 용어를 확인했을 수 있습니다. 스토리지를 선택할 때 이러한 요소를 고려했을 것입니다.
이 섹션을 마치면 다섯 가지 성능 요소와 해당 요소가 HPC 워크로드에 미치는 영향을 잘 이해하게 됩니다.
작업
작업이라는 용어는 호스트/머신과 파일 시스템 또는 디스크 간의 활동을 나타냅니다.
예를 들어 운영 체제 및 로컬 디스크와 관련된 다음과 같은 작업을 잘 알고 있을 것입니다.
- 만들기(파일)
- 삭제
- 열기
- 닫기
- 읽기
- 쓰기
- Append
- 특성 가져오기
- 특성 설정
- 이름 바꾸기
NFS는 파일 클라이언트와 서버 간의 네트워크 수준 상호 작용을 나타냅니다. 일부 작업은 로컬 작업과 유사하게 표시됩니다. 그러나 NFS는 네트워크 API이므로 네트워크 작업에 여러 로컬 작업이 포함될 수 있습니다.
create
(파일 또는 링크)mkdir
readdir
또는readdirplus
getattr
setattr
lookup
(디렉터리에서 filehandle 검색)link
/symlink
/readlink
read
rename
remove
rmdir
write
작업이 HPC 스토리지에 미치는 영향
작업이 스토리지 시스템에 미치는 영향을 알면 유용합니다. 예를 들어 HPC 워크로드에서 중첩된 디렉터리 구조에 많은 수의 작은 파일을 만드는 경우를 가정합니다. 이 시나리오에서 워크로드는 몇 개의 큰 순차 파일을 읽는 워크로드에 비해 더 많은 작업이 필요합니다.
해당 액세스 패턴은 다음 단원에서 알아보겠습니다. create
에는 여러 작업이 포함되므로 워크로드에서 만드는 파일이 많을수록 성능에 미치는 영향이 커집니다.
블록 크기
‘블록 크기’는 파일 시스템에서 단일 작업으로 읽거나 쓸 수 있는 가장 작은 데이터 크기(바이트)를 나타냅니다.
목적에 맞게 블록 크기는 NFS 클라이언트와 서버 간에 전송될 수 있는 NFS 데이터 청크(읽기/쓰기)의 페이로드 크기도 나타냅니다.
NFS 서버와 클라이언트는 블록 크기를 조율하고 함께 지원하는 가능한 최대 크기를 허용합니다. 기본값은 4KB~64KB 범위로 설정할 수 있습니다. 현재 구성 가능한 최댓값은 1MB입니다. 개별 데이터 패킷의 페이로드는 설정된 값 이하여야 합니다.
클라이언트에서 블록 크기를 명시적으로 구성할 수 있습니다. HPC 클러스터 머신에서 mount
문 전체를 검사하여 값을 확인합니다. 기본 크기가 설정되었습니다. mount
문에서 값을 명시적으로 구성하지 않습니다.
NFS 블록 크기를 구성하는 데 사용되는 두 인수는 rsize
(읽기 크기) 및 wsize
(쓰기 크기)입니다.
작은 블록 크기를 구성하는 경우 또는 선택한 파일 시스템의 최대 블록 크기가 작고 워크로드가 큰 파일로 구성되어 있습니다. 대용량 파일의 추가 청크로 인해 성능이 저하됩니다.
IOPS
IOPS라는 용어는 초당 입출력 작업 수를 나타냅니다. 스토리지 환경의 IOPS 수는 다음 특성에 따라 달라집니다.
- 스토리지 미디어 유형. 예: HDD(하드 디스크 드라이브), SSD(반도체 드라이브)
- 네트워크 연결을 통해 도입된 대기 시간
- 파일 시스템에서 사용하는 블록 크기
- 파일 시스템에서 사용할 수 있는 동시 액세스의 양
스토리지 솔루션에는 단일 IOPS 번호가 있습니다. 예를 들어 5,000 IOPS를 지원하는 Azure 관리 디스크를 사용하는 경우 초당 최대 5,000개 작업을 수행할 수 있습니다. 그러나 IOPS 수는 시스템 오버헤드 읽기 및 쓰기를 포함하여 해당 디스크에 대한 모든 읽기 또는 쓰기 작업의 총 최댓값의 측정값입니다.
IOPS 값은 디스크 또는 NAS 환경에서 지원할 수 있는 최대 작업 수를 안내합니다.
측정값은 일반적으로 ‘임의’ 및 ‘순차적’ 읽기와 쓰기 작업 간에 분할됩니다.
- 임의 작업은 디스크 또는 파일의 다양한 임의 지점에서 데이터를 읽거나 쓰는 작업입니다. 예를 들어 파일의 임의 위치에서 특정 바이트 범위를 편집합니다.
- 순차적 작업은 파일의 연속 액세스이며 파일의 처음부터 읽습니다.
처리량
처리량은 파일 시스템에서 처리할 수 있는 총 전송 속도(초당 바이트 수로 측정)를 나타냅니다.
처리량의 기본 계산을 수행하려면 시스템의 IOPS에 블록 크기를 곱합니다.
예를 들어 3,000 IOPS를 지원하는 디스크가 있고 블록 크기가 4K이면 가능한 총처리량은 12Mbps입니다.
이 계산은 파일 시스템의 일반적인 성능 가능성에 대한 기본 정보를 제공합니다. 그러나 실제 처리량은 다를 수 있습니다. 다른 요소는 많은 수의 작은 파일을 만들거나 삭제하는 경우 네트워크 오버헤드와 같은 항목을 포함하여 처리량에 영향을 줍니다.
대기 시간
‘대기 시간’은 작업을 완료하는 데 걸리는 시간을 나타냅니다. 대기 시간이 길수록 워크로드 실행 속도가 느려질 가능성이 높습니다.
단일 아키텍처에 대기 시간을 유발하는 여러 소스가 있고 각각 전체 대기 시간에 영향을 주는 경우도 있습니다.
다음과 같은 조건에서는 파일 시스템 대기 시간이 발생할 수 있습니다.
- 클라이언트와 서버 간에 네트워크 연결이 느림
- 많은 동시 요청으로 인해 네트워크 또는 파일 서버에서 정체 발생
- WAN 등에서 클라이언트와 서버 간의 거리로 인한 자연스러운 대기 시간 발생
- 파일 서버 자체의 디스크 하위 시스템 액세스 속도가 느림
대기 시간이 항상 일관되거나 명확하게 문서화되지는 않습니다. 테스트를 실행하여 HPC 클러스터 머신과 스토리지 엔드포인트 간의 대기 시간을 확인해야 합니다.
또한 대기 시간은 누적 문제입니다. 네트워크 성능도 영향을 주는 요소 중 하나일 수 있지만 잘못 구성된 머신 운영 체제나 워크로드 코드 자체의 비효율성 같은 다른 요소가 있을 수 있습니다. 각 요소는 전체 대기 시간에 영향을 줍니다.
대기 시간은 파일 시스템의 실제 성능을 평가할 때 가장 중요한 요소입니다. 대기 시간이 길수록 IOPS 수가 줄어듭니다. IOPS 수가 적을수록 처리량이 감소합니다.
기준 값 테스트 및 계산
HPC 워크로드에 대한 정확한 성능 구성을 선택할 때 워크로드 자체가 상당한 영향을 줍니다.
Azure 파일 시스템 제품에는 예상 IOPS 및 처리량 값이 표시됩니다. 사용자 고유의 NAS 솔루션 빌드를 선택하는 경우 각 가상 머신 및 관리 디스크 SKU에 대해 문서화된 메트릭을 사용합니다.
성능 기대치를 위해 로컬 데이터 센터 HPC 구성을 시작점으로 사용할 수 있습니다. 클라우드 솔루션을 사용하면 워크로드를 실행하는 여러 환경을 만들 수 있으므로 Azure에서 워크로드별로 좀 더 유연하게 처리할 수 있습니다. 반면에 로컬 환경은 쉽게(동적으로) 확장되지 않는 특정 용량을 기반으로 빌드되었습니다.
ping
, fio
, iozone
, iometer
등의 기본 도구를 사용하여 Azure 파일 시스템의 기준 수치를 확인할 수 있습니다.
애플리케이션 프로파일링
효율적인 실행을 위해 상당한 IOPS 및 처리량이 필요한 I/O 집약적 워크로드가 있을 수 있습니다. 또는 워크로드가 시작되어 라이브러리 및 원본 데이터를 메모리로 읽고 최소한의 스토리지 I/O를 계속할 수도 있습니다. 이전 목록의 첫 번째 워크로드는 다른 HPC 머신이 읽어야 하는 중간 데이터를 쓸 수 있습니다. 각 관련 역학이 스토리지 솔루션에 접근하는 방법에 영향을 줍니다. 머신이 최대한 빨리 해당 데이터를 읽을 수 있도록 하려면 읽기 대기 시간을 줄이는 데 집중해야 합니다. 그러나 워크로드가 디스크에 중간 또는 스크래치 정보를 쓰는 경우에는 각 HPC 머신이 쓰기를 위해 로컬 디스크 또는 고속 공유 NAS 솔루션에 빠르게 액세스할 수 있도록 해야 합니다. 이러한 중간 쓰기를 읽어야 할 머신에 따라 달라집니다.
스토리지 I/O 사용과 관련해서 애플리케이션을 프로파일링하는 데 투자할 가능성이 큽니다. HPC 클러스터에서 워크로드 크기와 개수가 증가함에 따라 프로파일링의 중요성도 커집니다.
프로파일링에는 HPC 머신과 스토리지 환경에서 실행되는 도구 사용이 포함됩니다. 해당 도구는 스토리지 환경에 대해 실행되는 작업의 양과 형식 및 크기를 보고합니다.
워크로드 프로파일링은 생성될 수 있는 데이터의 양으로 인해 어려울 수 있습니다. iostat
, sar
등의 도구는 시간이 지남에 따라 상당한 출력을 만들 수 있습니다. 결과를 분석해야 할 수 있으며 히스토그램을 생성하여 결과를 추가로 구문 분석해야 할 수도 있습니다.
NAS 솔루션을 사용하는 경우에는 프로파일링을 실행할 때 공급업체 인터페이스에서 통계를 수집해야 합니다. 그런 다음, I/O 패턴을 확인하기 위해 해당 정보와 HPC 머신 데이터의 상관 관계를 지정합니다.
I/O 분석을 돕기 위해 사용할 수 있는 타사 프로파일링 도구가 있으며 일부는 HPC 애플리케이션 공급업체에서 제공한 것입니다.