IOPS가 중요한 이유


32

IOPS와 처리량이 무엇인지 이해합니다. 처리량은 MB / s로 데이터 흐름을 측정하고 IOPS는 초당 I / O 작업 수를 나타냅니다.

내가 이해하지 못하는 것은 많은 스토리지 서비스가 제공하는 IOPS를 보여주는 이유입니다. 처리량 대신 IOPS를 알고 싶은 시나리오는 실제로 볼 수 없습니다.

IOPS가 중요한 이유 AWS가 주로 스토리지 프로비저닝을 IOPS로 표시하는 이유는 무엇입니까? 처리량 (MB / s)보다 IOPS가 더 관련성이 높은 곳은 어디입니까?


편집하다:

어떤 사람들은 랜덤 액세스가 무엇인지, 그것이 어떻게 성능에 영향을 미치는지 또는 HDD와 SSD가 어떻게 작동하는지 묻는 것처럼이 질문을 조사하고 있습니다 ...이 정보는 스토리지 동작에 익숙하지 않은 사람들에게 유용하지만 많은 초점이 적용되고 있습니다. 이것에 대한 질문의 목표는 아닙니다. "IOPS 번호를 볼 때 어떤 새로운 정보를 얻을 수 있습니까? 처리량 (MB / s) 번호를 볼 수 없습니다"에 관한 것입니다.



3
대용량 데이터를 이동하려면 처리량을 고려해야합니다. 작은 데이터를 많이 필요로하는 경우 더 많은 IOPS가 필요합니다. eg1 장치에서 MB의 데이터를 읽을 수있는 단일 작업이있는 경우 높은 처리량을 얻으려면 한 번의 작업 만 필요합니다. eg2 수십 개의 파일 속성을 읽어야 할 경우 매번 많은 양의 데이터를보고 있지 않지만 작은 비트의 데이터를 가져 오려면 많은 작업을 수행해야합니다. 처리량은 낮지 만 많은 작업이 필요합니다.
TafT

답변:


32

처리량

처리량은 파일 복사와 같은 작업을 수행 할 때 유용합니다. 거의 다른 작업을 수행하는 경우 디스크를 무작위로 읽고 쓰는 것이 제한적입니다.

IOPS

IOPS는 일반적으로 각 데이터 패킷의 크기를 지정합니다. 예를 들어 AWS gp2는 16 KiB 페이로드 크기로 10,000 IOPS를 수행 할 수 있습니다 . 초당 160MiB로 증가합니다. 그러나 항상 전체 페이로드 크기를 사용하지는 않을 것이므로 실제 처리량은 더 낮을 수 있습니다. NB KiB는 1024 바이트, KB는 1000 바이트입니다.

IOPS는 총 처리량을 제공하는 패킷 크기를 지정하기 때문입니다. 처리량이 높다고해서 IOPS가 높다는 의미는 아닙니다.

시나리오

다음 시나리오를 고려하십시오.

  • PC 부팅 컴퓨터에서 SSD와 회전 디스크의 차이점을 고려하십시오. 이는 많은 사람들이 직접 경험 한 것입니다. 회전 디스크를 사용하면 부팅 시간이 1 분이 될 수 있지만 SSD를 사용하면 10-15 초가 될 수 있습니다. 정보를 요청할 때 IOPS가 높을수록 대기 시간이 짧아지기 때문입니다. 회전 디스크의 처리량은 150MB / 초로 상당히 우수하지만 SSD가 더 높을 가능성이 높지만 더 빠른 이유는 아닙니다. 정보를 반환하는 대기 시간이 짧습니다.
  • OS 업데이트 실행 디스크 전체에서 파일을 추가하고 패치합니다. IOPS가 낮 으면 처리량에 관계없이 속도가 느려집니다.
  • 큰 데이터베이스에서 소량의 데이터를 선택하는 등의 데이터베이스 실행 인덱스에서 읽고 여러 파일에서 읽은 다음 결과를 반환합니다. 다시 정보를 수집하기 위해 디스크 전체로 이동합니다.
  • PC에서 게임하기 디스크 전체에서 많은 텍스처를로드합니다. 이 경우 IOPS 및 처리량이 필요할 수 있습니다.

LTO 테이프

테이프 백업 시스템을 잠시 생각해보십시오. LTO6은 초당 400MB를 수행 할 수 있지만 (여기서 추측하고 있음) 아마도 임의의 IOP를 수행 할 수는 없으며 IOP 당 초만큼 낮을 수 있습니다. 반면에 IOPS가 데이터 소포를 테이프로 읽거나 쓰는 것으로 정의되면 순차 IOPS를 많이 수행 할 수 있습니다.

OS 오프 테이프를 부팅하려고하면 전혀 작동하지 않으면 시간이 오래 걸립니다. 이것이 IOPS가 종종 처리량보다 더 유용한 이유입니다.

저장 장치를 이해하려면 임의 또는 순차적 IOPS인지, IO 크기인지 알고 싶을 것입니다. 이를 통해 처리량을 도출 할 수 있습니다.

AWS

AWS는 이 페이지에서 모든 스토리지 유형에 대한 IOPS 및 처리량 수치를 모두 게시합니다 . 범용 SSD (gp2)는 10,000 개의 16KiB IOPS를 수행 할 수 있으며 최대 160MB / 초를 제공합니다. 프로비저닝 된 IOPS (io1)는 20,000 16KiB IOPS이며 최대 320MB / 초를 제공합니다.

gp2 볼륨의 경우 프로비저닝 된 GB 당 30IOPS가 제공되므로 10,000 IOPS를 얻으려면 333.33GB 볼륨이 필요합니다. io1 볼륨에 비슷한 제한이 있는지는 기억 나지 않지만 (그런 종류의 테스트가 수행되는 관련 시험을 치른 지 오래되었습니다), 그렇게 생각합니다. 그렇다면 GB 당 60IOPS 일 것입니다.

결론

높은 순차 처리량이 유용하며 경우에 따라 성능의 제한 요소이지만 대부분의 경우 높은 IOPS가 더 중요 할 수 있습니다. 물론 IOPS에 관계없이 합리적인 처리량이 필요합니다.


IOPS가 랜덤 액세스 성능을 측정한다는 것을 알지만 실제로는 얼마나 빨리 일을하고 있는지 보여주지 않습니다 ... 10000 IOPS를하고있을 수도 있지만 이것은 느리거나 빠를 수 있습니다. 알 수있는 유일한 방법은 얼마나 많은 것을 아는 것입니다 작업이 소비되는 MB / s
mFeinstein

IOPS는 일반적으로 데이터 페이로드 크기를 지정합니다. AWS는 16KiB를 말합니다. 따라서 16KiB / s의 10,000 IOPS는 초당 160MB를 제공합니다.
Tim

2
16KB에서 10000 IOPS는 8KB에서 20000 IOPS로 변환되지 않습니다 (아마 ~ 11000). 이는 드라이브 / 워크로드를 평가하기 위해 IOPS와 처리량을 모두 알아야한다는 것을 의미합니다.
boot4life

4
단지 pedantic하기 위해, 그것은 여전히 ​​1 IOP가 아니라 1 IOPS입니다. S는 복수형이 아닙니다
Matthew Steeples

1
나는 다른 사람을 생각할 수 없습니다. IOPS가 높은 대부분의 처리량은 상당히 높은 처리량이지만 대부분의 경우 처리량이 아닌 IOPS로 인해 유용합니다. 다른 예는 관계형 데이터베이스 일 수 있지만 소프트웨어 인 저장 장치는 아닙니다. 나는이 질문에서 당신이 무엇을 원하는지 잘 모르겠습니다. 개념이 철저하게 설명되었다고 생각합니다. 탐색 시간이나 대기 시간이 긴 항목은 IOPS가 낮을 수 있지만 처리량이 분리되어 경우에 따라 높을 수 있습니다.
Tim

57

순차적 처리량은 대부분의 I / O 활동이 발생하지 않기 때문입니다.

임의 읽기 / 쓰기 작업은 일반적인 시스템 활동을보다 잘 나타내며 일반적으로 IOPS에 의해 제한됩니다.

내 서버 중 하나에서 고객에게 포르노를 스트리밍 하거나 CDN에 업로드하는 것이 본질적으로 더 순차적이며 처리량의 영향을 볼 수 있습니다.

그러나 포르노를 카탈로그 화하고 사이트를 통한 사용자 활동을 추적하는 데이터베이스를 유지 관리하는 것은 사실상 임의적이며 기본 스토리지가 수행 할 수있는 작은 I / O 작업 / 초의 수에 의해 제한됩니다.

최대 사용량으로 데이터베이스를 실행할 수 있으려면 2,000 IOPS가 필요할 수 있지만 활동 유형으로 인해 디스크 수준에서 30MB / s 처리량 만 볼 수 있습니다. 디스크는 1200MB / s가 가능하지만 IOPS는 환경의 한계입니다.

이는 스토리지 시스템의 용량 잠재력을 설명하는 방법입니다. SSD는 80,000 IOPS 및 600MB / s 처리량을 수행 할 수 있습니다. 6 개의 일반 10k SAS 디스크로 처리량을 얻을 수 있지만 약 2,000 IOPS 만 산출 할 수 있습니다.


IOPS가 MB / s가 유용하지 않은 시스템 성능에 대한 통찰력을 제공 할 수있는 예를 들어 주시겠습니까?
mFeinstein

@mFeinstein 위의 포르노 예를 참조하십시오.
ewwhite

33
롤 포르노 예를 들어, 한
mFeinstein

2
또한 운영 체제는 많은 무작위 액세스를 수행 할 수 있습니다. 시퀀스 처리량은 도움이되지 않습니다. 그것이 적어도 PC에서 SSD에서 OS를 실행하는 이유입니다.
sudo

3
종종 ~ 2MB / 초를 사용하는 디스크를 충분히 활용합니다. 100 % 임의 IO이기 때문입니다. 때로는 데이터를 디스크에 순차적으로 배치하여 (예 : 조각화 제거, 데이터베이스 색인 생성) 놀라운 성능을 얻을 수 있습니다.
boot4life

6

반면 ewwhite의 대답은 완전히 정확, 난 그냥 차이는 관점에서 왜 중요한지 도움말 넣어 좀 더 구체적인 번호를 제공하고 싶었다.

ewwhite가 이미 올바르게 언급했듯이 대부분의 비 스트리밍 응용 프로그램은 주로 비 순차 디스크 작업을 수행하므로 이론상 최대 처리량 외에 IOPS가 중요합니다.

동료와 함께 개발 시스템에 SSD를 설치하여 이전에 사용했던 HDD를 교체 할 때, 우리는 이것이 중요한 이유를 강조하는 몇 가지 성능 측정을 실행했습니다.

SATA HDD 결과 :

순차 읽기 처리량 : ~ 100MB / s
비 순차 읽기 처리량 (2k 블록, IIRC) : ~ 1MB / s

PCIe 연결 SSD 결과 :

순차 읽기 처리량 : ~ 700MB / s
비 순차 읽기 처리량 (2k 블록, IIRC) : ~ 125MB / s

예제에서 알 수 있듯이 각 장치의 최대 처리량을 나열하면 장치 비교 방식이 매우 부정확합니다. SSD는 대용량 파일을 순차적으로 읽을 때 HDD보다 약 6-7 배 빠르지 만 디스크의 다른 부분에서 작은 조각의 데이터를 읽을 때는 100 배 이상 빠릅니다. 물론, HDD의 경우,이 한계는 HDD가 물리적으로 r / w 헤드를 원하는 트랙으로 이동시킨 다음 원하는 데이터가 헤드 아래에서 회전 할 때까지 기다려야하지만 SSD에는 물리적 인 부품이 없기 때문입니다.

우리의 컴파일 시간은 제안 된 최대 처리량을 간단히 비교하는 것보다 훨씬 극적으로 향상되었습니다. 대규모 빌드 중 디스크 I / O는 개별적으로 크지 않고 디스크 전체에 흩어져있을 수있는 많은 개별 소스 파일을 읽고 쓰는 것으로 구성되므로 이전에 30 분 이상 소요 된 빌드는 이제 약 1 분 안에 완료되었습니다. .

처리량과 IOPS 수를 모두 제공함으로써 주어진 스토리지 장치에서 주어진 워크로드가 수행되는 방식을 훨씬 더 잘 이해할 수 있습니다. 조각화되지 않은 대량의 데이터를 스트리밍하는 경우 최대 처리량에 거의 근접하게됩니다. 그러나 디스크에 순차적으로 저장되지 않은 많은 작은 읽기 및 / 또는 쓰기를 수행하는 경우 IOPS에 의해 제한됩니다.


IOPS도 측정하지 않았습니까?
mFeinstein

3

IO 작업을 수행하려면 드라이브가 일련의 작업을 거쳐야합니다. 기계식 하드 드라이브의 경우 필요합니다.

  1. 오른쪽 트랙을 찾아 오른쪽 머리를 선택하십시오.
  2. 플래터가 올바른 위치로 회전 할 때까지 기다리십시오.
  3. 실제로 데이터를 전송하십시오.

3에 걸리는 시간은 데이터 블록의 크기에 따라 다르지만 1과 2에 걸리는 시간은 요청의 크기와 무관합니다.

헤드 라인 처리량 및 IOP 수치는 극단적 인 경우를 나타냅니다. 헤드 라인 throghput 수치는 각 작업에 큰 데이터 블록이 포함 된 경우를 나타내므로 드라이브는 실제로 데이터를 이동하는 데 대부분의 시간을 소비합니다.

헤드 라인 IOP 수치는 데이터 블록이 매우 작은 경우를 나타내므로 대부분의 시간이 헤드를 찾고 플래터가 회전하기를 기다리는 데 소비됩니다.

많은 워크로드의 경우 블록이 충분히 작아서 전송할 블록 수가 블록 크기보다 훨씬 중요합니다.


2

IO 볼륨 (또는 일반적으로 IO)에서 발생할 수있는 두 가지 유형의 병목 현상이 있습니다.

실제 성능은 실제로 이동 가능한 데이터의 양, 가용 대역폭 또는 유사, 단가 * 크기에 따라 조정 된 구성 요소를 포함하는 구성 요소를 포함하도록 측정되지만 요청과 관련된 오버 헤드도 있습니다. 즉, 디스크, 네트워크 또는 다른 많은 것들.

단가 * 크기 + 오버 헤드. 선의 방정식.

단가가 크거나 크기가 크면 휴대 전화 네트워크와 같은 이러한 볼륨을 기준으로 충전하는 것이 합리적이며 때로는 오버 헤드가 훨씬 더 중요합니다.

간단한 직접 실험을 수행하고, 1GB 파일 몇 개 (또는 실용적인 것, 파일을 읽고 쓰는 데 몇 초가 걸리는 것)로 디렉터리를 만든 다음 백만 100 바이트 파일로 폴더를 만들 수 있습니다. (주로 0.1GB의 데이터) 그런 다음 다른 파티션 / 디스크 간에이 모든 것을 말하려고 할 때 처리량에 어떤 일이 발생하는지 확인하십시오. 큰 파일의 처리량에 의해 성능이 저하되고 작은 물건에 대한 파일 수

나는 아마존이 두 가지 충전 모델을 모두 알고 있고 단순히 인프라의 기능을 더 잘 나타내는 것을 발견했다고 가정합니다.

저장소가 어쨌든 "사이클"로 전송할 수있는 양과 관련이있는 IOP의 크기에는 제한이 있으므로, 많은 요청으로 인해 여전히 여러 IOPS 비용이 발생합니다.

IOPS 및 비용에 대한 아마존 자체의 멋진 작품과 최적화를 통해 전달되는 '저축'이 있습니다.

I / O 특성 및 모니터링

이 영역에 대해 궁금한 점이 있다면 모두 읽어 보지 않아도 흥미로워 보입니다.


2

질문에 답변

"IOPS 번호를 볼 때 처리량 (MB / s) 번호를 볼 수없는 새로운 정보는 무엇입니까?"

직접적으로, 지정된 큐 깊이 및 파일 크기의 IO 조작이 초당 저장할 수있는 IO 조작 수 입니다. 다음 공식을 사용하여 주어진 조건에서 처리량을 계산할 수 있습니다.

IOPS * 파일 크기 = 처리량

스토리지 테스트는 파일 크기 및 큐 용량에 따라 다른 수의 IOPS를 생성 할 수 있습니다. 대기열 깊이 = 1 또는 2에서 컨트롤러는 캐싱을 이용하지 않지만 대기열 깊이 32, 256, 512에서는 512가 여러 번 증가하고 크게 변하지 않습니다. 파일 크기에서 128KB IOPS 수는 4KB 파일보다 적을 수 있지만 처리량이 많을 수 있습니다.

스토리지의 성능을 평가하는 가장 좋은 방법은 몇 가지 다른 블록 크기와 큐 깊이에서 IOPS 및 처리량 테스트를 찾는 것입니다.


IOPS를 처리량과 약간 혼동 할 수 있다고 생각합니다. 처리량은 지속적인 액세스의 동의어가 아니지만 주어진 시간에 스토리지가 처리 할 수있는 총 MB / s입니다. SSD는 동일한 처리량을 가지며, 지속적인 액세스를위한 것입니다 ... 랜덤 액세스를위한 처리량이 있기 때문에 ... 일반적으로 탐색 시간 때문에 HDD의 경우 훨씬 적습니다.
mFeinstein

따라서 IOPS는 임의 액세스와 동의어가 아니기 때문에 처음에는 지속적인 액세스와 마지막에는 임의 액세스를 언급한다는 답변에 포함시켜야합니다 ... IOPS를 측정
mFeinstein

@mFeinstein 나는 대답을 편집했습니다.
Eugene

1

일반적으로 IOPS는 처리량보다 얻기가 더 어렵습니다. IOPS가 많으면 대부분 처리량이 충분합니다.

클래식 하드 드라이브의 경우 각 드라이브에서 헤드를 물리적으로 움직여야하기 때문에 축 수는 제한 요소입니다. SSD는 훨씬 더 나은 IOPS 용량을 갖습니다.

하나의 큰 파일을 네트워크에 복사하는 사용자가 한 명인 경우 데이터를 가져 오려면 수십 번만 검색하면 나머지는 디스크에서만 스트리밍됩니다.

그러나 데이터베이스에 충돌하거나 동시 사용자가 많은 경우 IOPS 급증으로 스토리지의 다른 부분에 동시에 액세스해야합니다.

관계형 데이터베이스에서 10 개의 행을 병렬로 업데이트하면 인덱스 읽기, 데이터 읽기, 로그 파일 추가, 인덱스 및 데이터 업데이트와 같은 수백 개의 IO가 생성 될 수 있습니다. 대부분의 운영 체제 및 데이터베이스는 가능한 경우 IO를 캐싱 및 지연 / 그룹화하여 IO 수를 제한하려고합니다.


1

나는 대부분의 답변이 주제를 많이 벗어 났고 답변이 훨씬 간단하다고 생각하기 때문에 내 자신의 질문에도 대답 할 것입니다.

저장 장치 처리량 만 살펴보면 진행중인 작업을 놓칠 수 있습니다. 처리량이 낮거나 (MB / s가 낮음) 장치 속도가 느리거나 HDD 또는 다른 장치에서 임의 액세스가 많을 수 있습니다. 랜덤 액세스를 잘 처리하지 못합니다.

IOPS를 살펴보고 각 I / O 작업의 청크 크기를 알면 저장 장치가 처리 할 수있는 액세스 수와 이러한 IOPS의 처리량 (청크 크기 * IOPS)을 알 수 있습니다.

따라서 높은 IOPS를 살펴보면 처리량이 적은 경우에도 스토리지 장치가 많은 임의 액세스를 처리한다고 결론을 내릴 수 있습니다. 또는 처리량이 동일한 IOPS가 낮은 것으로 보이면 장치가 게으른.

따라서 IOPS를 살펴보면 처리량이 실제로 무엇을 의미하는지 통찰력을 얻을 수 있습니다.


IOPS = 초당 입 / 출력 (I / O) : 복수가 아니므로 후미 S는 생략하면 안됩니다. :)
Eugene

1
그것은 복수형에 관한 것이 아니며, 어떤 사람들은 IOP를 "I / O OPeration"의 줄임말처럼 말하는 것으로 보았습니다 ... 그러나 그래, 이로 인해 혼동이 생길 수 있습니다. 감사합니다
mFeinstein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.