1. 가상머신 I/O 흐름(기본)

https://learn.microsoft.com/ko-kr/azure/virtual-machines/disks-performance#virtual-machine-io-capping
[조건]
SKU : Standard_D8s_v3
P30 OS 디스크
P30 데이터 디스크 2개 × 2
[설명]
만약 가상머신의 애플리케이션이 15000IOPS를 요청한다면, 아래 표에서 보이는 Max uncached disk throughput에 의해 12800만 처리할 수 있게 됩니다. 그러니 요청 중 일부는 손상될 수 있겠죠 (캐시된 데이터의 경우 Max cached and temp storage throughput으로 처리)
12,800 요청이 디스크 3개로 나뉘어져 요청됩니다. 디스크가 최대 처리할 수 있는 IOPS는 4267이므로 100%를 치지 않고 요청을 처리할 수 있습니다.
안내사항

https://learn.microsoft.com/ko-kr/azure/virtual-machines/disks-performance#virtual-machine-uncached-vs-cached-limits
!!반드시 읽어야함!!
- 이미 위에서 확인했지만 Cached disk throughput(임시 스토리지 throughput도 포함) / Uncached disk throughput으로 나뉘는데 DISK가 어떤 성능을 가졌던 간에 SKU의 MAX 값이 중요하다.
- OS Disk 기본설정이 읽기/쓰기 설정이 되어있고 Data disk의 기본설정은 읽기 설정이 되어있다.
- 왜냐 os disk에 작업은 작은 단위의 작업들이 캐싱되기 때문
- caching 한다는 것은 VM이 속해져 있는 물리 노드에 캐시를 사용합니다. 이는 사용자가 컨트롤 할 수 있는 부분이 아니며 선택할 수 없습니다. vm의 Region에 따라 caching node가 정해집니다.
- 이론적인 부분이며 실제로 요청 25,000 / 4의 계산으로 요청이 진행되진 않습니다.
- 디스크 캐싱은 4TiB 이상 디스크에서 지원되지 않습니다. 여러 디스크가 VM에 연결되어 있는 경우 4TiB보다 작은 디스크는 캐싱을 지원합니다.
임시 스토리지 throughtput을 내며 운영하고 싶은데 가능하지않냐?는 질문에 대답은 해당 방법 제안드리지 않습니다. 임시 스토리지는 VM이 reboot 되면서 사라지게 되며 임시 스토리지 일 뿐 데이터 저장의 용도로 권고 드리고 있지 않습니다.
- 호스트 캐쉬를 None에서 읽기 전용/읽기쓰기로 설정할 경우 Azure 가상머신이 실행중에도 변경할 수 있습니다. 이에 대한 영향은 없을 것
- 허나 만약 호스트 캐쉬를 사용 중(읽기 전용/읽기 쓰기)이라면 None 값으로 변경 시 캐쉬 참조 오류가 발생할 수 있으니, 가급적 시스템을 중지 후 변경(대상 디스크를 분리하고 다시 연결하기 때문)
- 운영 체제 디스크인 경우 VM이 다시 시작됩니다. 데이터가 손상될 수 있습니다
2. Cached disk / Uncached disk (혼합)

[조건]
Standard_D8s_v3
- 캐시된 IOPS: 16,000
- 캐시되지 않은 IOPS: 12,800
P30 OS 디스크
- IOPS: 5,000
- 호스트 캐싱: 읽기/쓰기
P30 데이터 디스크 2개 × 2
- IOPS: 5,000
- 호스트 캐싱: 읽기/쓰기
P30 데이터 디스크 2개 × 2
- IOPS: 5,000
- 호스트 캐싱: 사용 안 함
[설명]
호스트 캐싱 ON인 세 개의 디스크 MAX가 16,000이므로 25,000 요청 중 일부를 처리합니다.
호스트 캐싱 OFF인 두 개의 디스크 MAX가 12,800이므로 나머지를 처리합니다.
위에서 말씀드렸지만 실제 상황에선 요청/5 이런 방법으로 처리하진 않습니다.
3. 캐시 처리 방법

https://learn.microsoft.com/ko-kr/azure/virtual-machines/disks-performance#combined-uncached-and-cached-limits
두번째 그림
(1) Azure 가상머신의 읽기 요청이 시작되면 호스트의 캐쉬에서 먼저 확인합니다.
(2) 호스트 캐쉬에 존재하지 않으면 데이터 디스크에서 읽기를 시작합니다.
(3) 데이터 디스크에서 읽은 데이터는 호스트 캐쉬로 전달되고, 호스트 캐쉬에 기록됩니다.
(4) 호스트 캐쉬에 기록과 동시에 Azure 가상머신으로 전달됩니다.
읽기가 수행되고 원하는 데이터가 캐시에 없으면 읽기 요청이 디스크로 전달됩니다. 그런 다음 디스크는 이를 캐시와 VM 모두에 표시합니다. 이 읽기는 VM의 캐시되지 않은 제한과 VM의 캐시된 제한 모두에 포함됩니다. 요청이 들어왔을 때 host cash와 data disk에 거의 동시에 요청이 되는데 이는 속도 저하로 이어지진 않습니다.
읽기만을 설정을 해놓았을 때, 요청을 반환하는 프로세스만 진행됩니다.
읽기/쓰기 설정을 해놓았을 때 디스크에 쓰기까지 완료 되어야 요청이 완료되었다고 간주합니다. 쓰기 작업 도중 중단 된다면 데이터가 손상될 수 있습니다.