DA0017: 디스크에 대한 높은 활성 메모리 페이징 비율

Visual Studio 2017 RC에 대한 최신 설명서는 Visual Studio 2017 RC 설명서를 참조하세요.

규칙 ID DA0017
범주 메모리 및 페이징
프로파일링 방법 모두
메시지 활성 메모리를 디스크에 페이징하는 비율이 높습니다. 응용 프로그램이 메모리 바인딩될 수 있습니다.
규칙 유형 정보

샘플링, .NET 메모리 또는 리소스 경합 방법을 사용하여 프로파일링하는 경우에는 적어도 10개의 샘플을 수집하여 이 규칙을 트리거해야 합니다.

원인

프로파일링 실행 시 수집된 시스템 성능 데이터가 전체 프로파일링 실행 기간 중 디스크로 페이징되거나 디스크에서 페이징된 활성 메모리의 비율이 매우 높음을 나타냅니다. 페이징 비율이 이렇게 높으면 일반적으로 응용 프로그램 성능과 응답성에 영향이 있습니다. 알고리즘을 수정하여 메모리 할당량을 줄여 보십시오. 응용 프로그램의 메모리 요구 사항을 고려해야 할 수도 있습니다.

규칙 설명

참고

이 정보용 규칙은 활성 메모리 페이징 수준이 상당한 양에 도달할 때 발생합니다. 극도로 높은 수준의 페이징이 발생할 경우에는 DA0014: 활성 메모리를 디스크에 페이징하는 비율이 극도로 높습니다. 경고 규칙이 대신 발생합니다.

실제 메모리가 부족하면 디스크에 대한 과도한 페이징이 발생할 수 있습니다. 페이징 작업이 페이징 파일이 있는 실제 디스크를 우선적으로 사용하는 경우 동일한 디스크에 대한 다른 응용 프로그램 지향 디스크 작업은 속도가 느려질 수 있습니다.

디스크에서 페이지를 읽거나 디스크에 페이지를 쓰는 작업은 대량 페이징 작업으로 수행되는 경우가 많습니다. 예를 들어 Pages Output\/sec 수는 Page Writes\/sec 수보다 훨씬 더 큰 경우가 많습니다. Pages Output\/sec에는 시스템 파일 캐시에서 변경된 데이터 페이지도 포함되기 때문입니다. 하지만 페이징을 직접적으로 수행하는 프로세스나 그 이유는 확인하기 어려운 경우도 있습니다.

위반 문제를 해결하는 방법

오류 목록 창에서 메시지를 두 번 클릭하여 표시 뷰로 이동합니다. Memory\Pages\/sec 열을 찾습니다. 프로그램 실행 단계 중 페이징 IO 활동이 다른 단계보다 과도한 특정 단계가 있는지 확인합니다.

부하 테스트 시나리오에서 ASP.NET 응용 프로그램의 프로필 데이터를 수집하는 경우에는 추가 실제 메모리(또는 RAM)가 구성된 컴퓨터에서 부하 테스트를 다시 실행해 봅니다.

알고리즘을 수정하고 String.Concat 및 String.Substring과 같이 메모리를 많이 소비하는 API를 사용하지 않도록 하여 메모리 할당을 줄이는 것이 좋습니다.