Windows Server 2019 Hyper-V 게스트 디스크 성능

Windows Server 2019 Hyper-V 게스트 디스크 성능

저는 IO에 매우 민감한 응용 프로그램(Accredo Saturn)을 실행하는 사이트를 가지고 있습니다. 로컬 플랫 파일 데이터베이스를 사용하여 Delphi로 작성된 회계/CRM 패키지입니다.

다양한 역사적 이유로 사이트는 Proliant DL380 G9의 Server 2012 R2 Hyper-V에서 실행되는 Windows Server 2008 R2 터미널 서버에서 실행하고 있었으며 DC는 SBS 2011이 설치된 이전 DL380 G7이었습니다(Exchange는 오랫동안 Office 365에서 사용되었습니다). ).

이제 Server 2019를 실행하는 새로운 DL380 G10으로 업그레이드했습니다. 호스트와 도메인 컨트롤러는 P408i-p의 RAID10(자체 파티션의 호스트, 나머지는 하나의 큰 파티션)의 6x 600GB 10k SAS에서 실행됩니다. P408i-a의 RAID10에서 4x 480GB 혼합 사용 SATA SSD의 원격 데스크톱 서버를 사용합니다. 서버에는 2개의 Xeon 4210 및 64GB 메모리가 있습니다. 이 소프트웨어의 데이터는 원격 데스크톱 서버에 직접 마운트된 SSD 어레이의 VHDX에 있습니다.

18명의 사용자가 있으며 모두 이 프로그램에 원격 데스크톱 서버를 사용하고 8명의 콜센터 사용자도 Unify 전화 시스템 에이전트를 사용합니다. 한두 개는 Edge를 사용합니다. 이 클라이언트는 속도에 까다롭고 앞서 언급했듯이 소프트웨어도 까다롭기 때문에 사양을 좀 더 과장하려고 했습니다!

클라이언트는 소프트웨어의 느린 속도에 대해 불평했습니다. 테스트한 결과 5초가 걸리던 작업이 이제 최대 15초가 걸리는 것으로 나타났습니다. 동일한 하드웨어에 있는 이전 2008 R2 VM이 항상 그랬던 것처럼 수행되고 있으므로 거의 게스트와 관련된 것으로 보입니다. .

로그인한 사용자 없이 diskspd를 실행했으며(-c100b -b4K -o32 -F8 -T1b -s8b -W60 -d60 -Sh) 두 VM 모두에서 유사한 읽기 IOPS 및 처리량을 확인했지만 새로운 2019 VM. 게스트에서는 약 531.41Mbps 및 136k IOPS가 표시되지만 2019 VM에서는 2개의 스레드가 1.9Mbps로 다운됩니다. 이전 VM의 속도는 520.44Mbps이지만 3.75에서 한 스레드가 다운된 것을 제외하면 지속적으로 스레드당 약 72-76입니다. 총 IOPS는 133,000이었습니다. SSD 어레이에 있습니다.

비교해 보면 동일한 매개변수를 사용하는 베어메탈 SSD 어레이는 999Mbps, 스레드당 일관되게 124~125Mbps 및 총 255,000 IOPS를 제공합니다.

나는 이것을 조사하는 데 며칠이 걸렸습니다. IO 로드 밸런서를 비활성화하기 위해 레지스트리 항목을 시도했지만 효과가 없었습니다. 2019에도 적용되는지 확실하지 않습니다. 고정 VHDX와 동적 VHDX를 모두 시도했습니다. 서버 간에 데이터 볼륨을 교환하기도 했습니다. 자체 VHDX입니다). 동적 및 정적 메모리를 사용해 보았습니다. NUMA 활성화 및 비활성화를 시도했습니다.

도저히 할 수가 없어서 내일 기존 VM에서 올해의 콜센터를 시작하는 좌절한 고객이 있습니다!

2008 R2는 1세대 버전 5 VM이고 2019는 2세대 버전 9입니다.

해당 임무 IOPS를 다시 얻는 방법에 대한 힌트를 주시면 감사하겠습니다!

이것은 내 첫 번째 게시물이므로 관련성이나 구체적인 정보가 충분히 포함되지 않은 경우 사과드립니다.

답변1

RAID10의 6x 600GB 10k SAS

50배의 IO를 제공하는 2배 고성능 SSD의 Raid 1을 사용하고 있습니까?

일반적으로: SSD를 구입하세요.

상단에는 정적인 크기의 SSD를 사용합니다.

당신이 할 수 있는 일은 그리 많지 않습니다. 하지만 당신의 숫자는 미친 것처럼 들립니다. 200k+ IOPS는 놀라울 정도로 형편없는 프로그래밍을 나타냅니다.

답변2

이는 성능 문제가 스토리지로 인해 발생한다는 증거는 아닙니다.

느린 애플리케이션 워크플로우를 자세히 분석합니다.

  • 어떤 코드 경로가 필요합니까? 각 기능에 소요되는 시간을 프로필로 작성하세요.

  • 어떤 데이터베이스 쿼리를 수행합니까?

  • 얼마나 많은 데이터 레코드가 어떤 크기로 관련되어 있습니까?

  • 파일 또는 데이터베이스 기반 잠금을 포함하여 동시성을 어떻게 처리합니까?
  • 네트워크를 통해 외부 리소스를 사용합니까? 이에 대한 대기 시간은 얼마나 됩니까?
  • 유선 상에서 고객과의 커뮤니케이션은 어떤 형태로 이루어지나요? 이 경우 클라이언트는 터미널 서버일 수 있습니다.

이 내용을 자세히 살펴보려면 소프트웨어 공급업체의 도움이 필요할 것입니다. 애플리케이션 성능 모니터링 패키지에서 얻을 수 있는 유형의 자세한 프로파일링 및 가시성을 강조하십시오.

CPU, 메모리, IOPS, 네트워크 대역폭과 같은 리소스 제한으로 인해 속도가 느려질 수 있습니다. 그리고 그것은 측정할 측정항목입니다. 그러나 해당 OS에서 해당 애플리케이션의 스택이 하드웨어를 사용하더라도 더 빠르게 진행되지 않을 수도 있습니다. 알 수 있는 유일한 방법은 실제로 느린 것을 분리하는 것입니다.

답변3

다른 문제를 조사하기 위해 여기에 왔을 때 이것을 발견했습니다. 문제가 해결되었으며 TSFairShare Disk로 인해 발생했습니다. 비활성화하면 문제가 해결되었습니다. 이는 파일 수준 데이터베이스를 사용하는 많은 응용 프로그램에서 문제가 되는 것으로 나타났습니다.

우리는 Microsoft Dynamics GP 포럼에서 솔루션을 찾았습니다. 실제 수정 사항에 대한 자세한 내용은 여기에 요약되어 있습니다.https://www.ryslander.com/disable-fair-sharing-in-windows-server/- GP 및 우리가 사용하고 있던 애플리케이션(Accredo)과 같은 경우 FSSDisk만 비활성화하면 됩니다. 나머지는 그대로 두었습니다.

Server 2022에서는 기본값이 다시 비활성화되었습니다.

관련 정보