자, 우선, 저는 운영 담당자가 아니라 개발자라고 말할 수 있습니다. 그래서 나는 여기에 알려지지 않은 약간의 땅에 들어갈 것입니다.
1.9GB zip 파일에서 50GB XML 파일을 추출하기 위해 Azure Virtual Machine을 사용하고 싶습니다. 따라서 Azure에서 어떤 인스턴스 크기를 테스트하여 필요한 것보다 많은 비용을 지불하지 않으면 서 우수한 성능을 얻는 데 사용해야합니다.
그러나 Azure VM의 디스크 성능은 놀랍지 않았습니다. 누군가가 잘못하고 있는지 또는 내 결과가 기대할 수 있는지 여부를 알고 싶습니다.
우선, 내가 무엇을 테스트하고 있습니까? 압축 파일을 인수로 사용하고 압축 파일이있는 동일한 디렉토리에 압축 파일 추출을 즉시 시작하는 사용자 지정 .NET 콘솔 응용 프로그램이 있습니다. 추출이 진행되는 동안 응용 프로그램은 몇 메가 바이트를 계산합니다 애플리케이션이 초당 대상 파일에 기록하여 출력합니다.
내 로컬 개발 시스템에서 160-210 MB / s로 작성된이 응용 프로그램으로 꽤 좋은 성능을 얻습니다. 따라서 전체 추출 과정은 약 8 분이 걸립니다. 내 로컬 컴퓨터의 사양은 Intel Core i7 950, 3GHz, 4 코어 (8 논리), 12GB RAM, Samsung SSD 830 시리즈 250GB입니다.
자, 다른 인스턴스 크기를 테스트하기 시작했으며 결과는 다음과 같습니다.
- 호스트 캐싱없이 동일한 저장소 계정을 사용하여 4 개의 가상 디스크로 구성된 스트라이프 RAID가있는 Windows Server 2012 Datacenter R2 (8 코어, 14GB RAM)가있는 A4 인스턴스에서 30-35MB / s의 안정적인 속도를 유지했습니다. 추출에는 24 분 48 초가 걸렸습니다. 또한 호스트 캐싱을 사용하려고 시도했지만 실제로 아무런 차이가 없었습니다.
- Windows Server 2012 Datacenter (8 코어, 28GB RAM, 500GB 로컬 SSD 디스크)가 포함 된 D4 인스턴스에서 처음 1 분 동안 실제로 우수한 성능 (150 + MB / s)을 얻은 다음 200MB / 9MB / s의 계곡 평균 성능은 70 ~ 100MB / s입니다. 추출에는 9 분 40 초가 걸렸습니다.
- Windows Server 2012 Datacenter (4 코어, 14GB RAM, 250GB 로컬 SSD 디스크)가 포함 된 D3 인스턴스에서 처음 1 분 동안 실제로 우수한 성능 (150 + MB / s)을 얻었지만 성능이 20-40MB로 감소했습니다. / s, 추출 프로세스에서 21 분 49 초가 소요됩니다.
D2 및 D1 인스턴스에서 디스크 성능은 D3보다 나쁩니다.
그리고 이것은 정말로 나를 놀라게합니다. 로컬 SSD 디스크가 D1, D2 및 D3 인스턴스에서와 같이 어떻게 그렇게 나빠질 수 있습니까? 그리고 디스크 성능이 왜 D1과 D4 사이에 크게 다른지 아는 사람이 있습니까? 메모리 문제입니까? 추출 작업이 진행되는 동안 작업 관리자를 보면 메모리 사용량이 폭발적으로 증가하고 있습니다. Windows가 기록 된 데이터를 캐시하고 있기 때문에 메모리가 부족한 경우 데이터를 디스크로 플러시해야합니다. 이 경우 디스크 성능이 저하됩니다. 그러나 이것은 내 로컬 컴퓨터에서 발생하지 않으므로 이러한 VM에서 이러한 공격적인 캐싱이 필요한 이유는 무엇입니까?
로컬 컴퓨터와 Azure에서 호스팅되는 가상 컴퓨터간에 차이가 있다는 것을 알고 있지만 실제로 디스크 성능이 예상됩니까?
(원래 응용 프로그램이 의심되는 원인 으로 Stackoverflow 에 내 질문을 게시 했지만 더 이상 확실하지 않습니다)