Windows 서버가 스와핑되는지 어떻게 알 수 있습니까?


29

Process Explorer를 사용하여 일부 데이터를 재구성하는 동안 Windows 서버를 모니터링하고 있습니다. 주로 CPU를 많이 사용하는 프로세스이지만 스왑되지 않도록하고 싶습니다. 프로세스 탐색기를 사용 중인지 어떻게 알 수 있습니까? 내 초기 추측은 시스템 정보 창에 있으며 페이징 파일 쓰기 델타입니다. 예? 아니? 나는 바보 야?

* 스크린 샷은 서버가 아니며 단지 예일뿐입니다.

대체 텍스트 http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

답변:


30

"Pages Input / sec는 볼 카운터이지만, 윈도우가 * nixes처럼 페이지 파일을 사용하지 않기 때문에"스왑 "에 대해 걱정하지 않아도됩니다.

먼저 Windows 페이지가 나오지 않는 것을 이해해야합니다. 나는 자신을 더 잘 말할 수 없기 때문에 Eric Lipperts 블로그 게시물 (약간 편집 됨) 의 관련 부분을 인용 할 것입니다.

"RAM은 단순히 성능 최적화로 볼 수 있습니다. RAM의 데이터에 액세스하는 경우 정보가 광속에 가까운 전기장에 저장되는 경우 디스크의 데이터에 액세스하는 것보다 정보가 엄청나고 무겁게 저장되는 것보다 훨씬 빠릅니다. 철 금속 분자

운영 체제는 프로세스가 가장 자주 액세스되는 스토리지 페이지를 추적하고 RAM에이를 복사하여 속도를 높입니다. 프로세스가 현재 RAM에 캐시되지 않은 페이지에 해당하는 포인터에 액세스 할 때 운영 체제는 "페이지 오류"를 수행하고 디스크로 이동하며 디스크에서 RAM으로 페이지를 복사하여 합리적인 가정을 만듭니다. 곧 다시 액세스 할 예정입니다.

운영 체제는 또한 읽기 전용 리소스 공유에 매우 현명합니다. 두 프로세스가 모두 같은 DLL에서 동일한 코드 페이지를로드하는 경우 운영 체제는 두 프로세스간에 RAM 캐시를 공유 할 수 있습니다. 코드는 어느 쪽 프로세스로도 변경되지 않으므로 아마도 RAM의 중복 페이지를 공유하여 저장하는 것이 합리적입니다.

그러나 영리한 공유에도 불구하고 결국이 캐싱 시스템에는 RAM이 부족합니다. 이러한 상황이 발생하면 운영 체제는 곧 다시 액세스 할 가능성이 가장 적은 페이지를 추측하고 변경된 경우 디스크에 기록하며 다시 액세스 할 가능성이 높은 무언가를 읽을 수 있도록 RAM을 비 웁니다. 곧.

운영 체제가 잘못 추측하거나, 또는 자주 실행되는 모든 페이지를 모든 실행중인 프로세스에 저장하기에 충분한 RAM이없는 경우 시스템은 "스 래싱"을 시작합니다. 운영 체제는 고가의 디스크 스토리지를 쓰고 읽는 데 모든 시간을 소비하며 디스크는 지속적으로 실행되며 아무런 작업도 수행하지 않습니다.

또한 "RAM 부족"은 "메모리 부족"오류가 거의 발생하지 않음을 의미합니다. 스토리지가 실제로 디스크에 있다는 사실의 전체 비용이 오류와 관련이 있기 때문에 오류 대신 성능이 저하됩니다.

이것을 보는 또 다른 방법은 프로그램이 소비하는 총 가상 메모리 양이 실제로 성능과 크게 관련이 없다는 것입니다. 관련이있는 것은 총 가상 메모리 사용량이 아니라 오히려 (1) 다른 프로세스와 공유하지 않는 메모리 양, (2) 일반적으로 사용되는 페이지의 "작업 집합"의 크기 및 ( 3) 모든 활성 프로세스의 작업 세트가 사용 가능한 RAM보다 큰지 여부.

이제 "메모리 부족"오류가 일반적으로 실제 메모리 용량이나 사용 가능한 스토리지 용량과 관련이없는 이유는 분명해야합니다. 거의 항상 주소 공간에 관한 것입니다. 32 비트 Windows에서는 비교적 작고 쉽게 조각화됩니다. "

몇 가지 추가 사항 :

  1. dll 및 프로그램 파일은 항상 디스크에 있으므로 절대로 페이징되지 않습니다 (물리적 램이 부족할 때 일반적으로 사용 가능한 첫 페이지).
  2. 사용 가능한 페이지 테이블 항목이 부족하거나 다른 메모리 문제보다 메모리를 심하게 조각화하는 것이 훨씬 더 어렵습니다 (이미 언급 한 전반적인 성능 저하 이외)
  3. 페이지 파일없이 실행하더라도 여전히 페이지 오류가 발생할 수 있습니다
  4. 일반적으로 커밋 된 메모리를 보면 프로세스가 메모리를 사용하는 방법에 대해 더 많이 알 수 있습니다.

Windows에서 메모리 관리가 작동하는 방법에 대한 전체 그림을 보려면

Windows NT의 가상 메모리 관리자

메모리 문제가 있다고 생각되면 먼저 Windows 메모리 문제 해결에 대한 프레젠테이션을 보는 것이 좋습니다.

다음은 메모리 조각화 덕분에 때때로 "메모리 부족"이 발생하는 이유에 대한 훌륭한 설명입니다.

참조 물리적 메모리 : 윈도우의 한계를 밀어

가상 메모리, 메모리 조각화 및 누출, WOW64에 대한 추가 정보

RAM, 가상 메모리, 페이지 파일 및 그 모든 것 (Microsoft 지원)

최신 정보:

Windows 10은 메모리와 약간 다른 작업을 수행하며 시간이 지남에 따라 "시스템 및 압축 메모리"라는 프로세스가 표시됩니다. Windows 10은 "압축 저장소"를 페이징 아웃 목록에 추가합니다. 이 램은 시스템이 소유 한 USER 메모리입니다 (일반적으로 시스템에는 커널 메모리 만 있음).이 메모리는 평균적으로 약 30 % 감소되도록 압축됩니다. 이렇게하면 더 많은 페이지를 메모리에 저장할 수 있습니다 (70 % 더 많은 공간을 가진 수학을하는 사람들을 위해) 메모리에 여전히 압력이있는 경우 압축 저장소의 페이지 (사용자 모드 시스템 프로세스 공간)를 수정 된 페이지에 배치 할 수 있습니다. 그런 다음 실제 페이지 파일에 쓸 수있는 목록 (압축). 시스템은 그들이 시스템 사용자 모드 공간에서 왔으며 압축되어 상점에 다시 넣으려고하지 않음을 알 수 있습니다. 따라서 Windows 10 시스템에서는 시스템이 램을 흡입하는 것처럼 보일 수 있지만 실제로는 램을보다 효율적으로 사용하려고합니다. Mac 사용자는 2013 년 이후 유사한 기능을 사용하고 있으며 최신 버전의 Linux 커널은 메모리 압축 버전을 사용합니다. 메모리를 절약하는이 방법은 더 좋을뿐만 아니라 이미 다른 운영 체제에서 일반적입니다.


6

예, 페이징 델타는 서버가 얼마나 많은 페이징 (또는 "스와핑")을 수행하고 있는지에 대한 실시간 표시를 제공합니다. 이를 자세히 살펴보고 역사적 관점을 보려면 성능 모니터 ( perfmon.exe ) 를 사용하여 델타 (및 특정 이벤트 또는 활동을 급상승과 관련시키는 데 도움이 될 수있는 다른 성능 카운터를 차트 또는 기록하는 것이 좋습니다 . 페이징 활동).


5

성능 모니터 (perfmon)가 당신의 친구입니다. 하드 페이지 결함 (즉, 요청을 이행하는 데 필요한 메모리 페이지를 디스크에서 읽어야 할 때 페이지 결함)을 찾고 있으므로 하드 및 소프트 페이지 결함을 모두 모니터링하는 것이 적합하지 않습니다.

perfmon을 사용하여 "메모리"개체에서 "Pages Input / sec"카운터를보고 하드 페이지 오류 발생 횟수를 확인하십시오.


0

일반적으로 커밋 요금이 실제 메모리보다 높으면 무언가를 페이징 하고 있지만 앱에서 항상 사용중인 단일 고정 데이터 버퍼를 사용하는 경우 일반적으로 페이징되지 않습니다 전혀. 다른 메모리가 페이징 아웃되는 동안 시작시 약간의 지연이있을 수 있습니다.


3
mh : 나는 당신의 경험에 동의하지 않을 것입니다. 커밋 요금이 실제 메모리보다 높으면 어떤 시점에서 무언가 페이징되었지만 시스템이 여전히 아무것도 페이징하지는 않습니다. 페이지 오류가 발생했을 때만 페이지 아웃됩니다. 그렇지 않으면 나는 최선을 다 할 것입니다 하나의 고정 된 데이터 버퍼의 사용을 동의하지만, 나는 우리가 아마 stackoverflow.com의 영역으로 이동하고 생각
제시카 맥키

나쁜 점은 "과거에 무언가가 바뀌었고 앞으로의 메모리 요청도 서로 바꿔야 할 것"이라고 말했을 것입니다.
Maximus Minimus

응용 프로그램이 해당 OS 권한을 가진 메모리의 페이지 만 잠글 수있는 것은 아닙니다.
Jim B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.