
저는 4코어 Intel i7과 8GB RAM을 갖춘 Windows 7 x64를 사용하고 있지만 최근에는 컴퓨터의 "RAM"이 하드 드라이브에만 있는 것처럼 느껴집니다.
작업 관리자에 표시되는 내용은 다음과 같습니다.
목록의 프로세스가 사용하는 총 메모리 양은 약 1GB입니다. 그리고 며칠 동안 내 컴퓨터에서 일어나는 일은 하나의 프로그램(Cataloger.exe)이 지속적으로 대량의 파일(각각 5-10MB 정도)을 처리하고 목록 작성을 위해 반복적으로 열고 읽는 것입니다. 하지만 메모리가 너무 많이 늘어나지 않고 100MB 정도의 크기를 유지합니다. 그러나 30분 동안 처리하는 데이터의 양은 기가바이트 단위로 측정할 수 있습니다.
그래서 제 추측으로는 Windows 파일 캐싱이 그것과 관련이 있다는 것이었습니다. 그리고 이 주제에 대해 조사한 후에 컴퓨터 RAM에 대한 자세한 정보를 표시하는 RamMap이라는 프로그램을 발견했습니다. 스크린샷은 다음과 같습니다.
그래서 제가 보기에는 Windows가 더 이상 필요하지 않은 엄청난 양의 데이터를 RAM에 보관하여 RAM 할당 요청을 하드 드라이브의 페이지 파일로 리디렉션하는 것처럼 보입니다. Cataloger.exe를 닫아도 RamMap은 매핑된 파일의 크기를 오랫동안 거의 같은 것으로 보고합니다. 그리고 그것은 단지 이 특별한 프로그램이 아닙니다. 이전에는 다른 프로그램에서 대규모 파일 작업을 수행한 후에도 비슷한 속도 저하가 발생했다는 사실을 발견했습니다. 따라서 실제로 Cataloger.exe의 예외적인 동작은 아니며 문제는 과거에 여러 번 나타났습니다.
그것이 무엇이든, 컴퓨터 속도가 50배 정도 느려집니다. Chrome에서 새 탭을 여는 데는 20~30초가 걸리며, 새 프로그램을 여는 데는 최대 1분이 걸릴 수 있습니다. 속도 저하로 인해 일부 프로그램이 충돌하기도 합니다.
그렇다면 파일 캐싱이나 다른 곳에 문제가 숨어 있다고 생각하십니까? 어떻게 해결하나요?
답변1
이것은 평소와 같은 업무이며 모든 것이 올바르게 작동하고 있습니다. Windows는 다른 데이터보다 캐시된 파일을 메모리에 보관하지 않습니다. 캐시된 파일은 어느 시점에서 Windows가가졌다메모리에 로드하거나 디스크에서 읽어들이는 데 그 이후로 더 높은 우선순위가 발생하지 않았습니다. 컴퓨터 사용을 재개하고 프로그램이 메모리를 요청하자마자 Windows는 캐시된 파일을 제거하여 공간을 확보합니다.
RAMMap을 보면 캐시된 파일의 대부분이 "대기" 아래에 할당되어 있음을 알 수 있습니다. 즉, 과거에 Windows에 필요했기 때문에 메모리에 보관되어 있고 다시 필요할 수도 있으며 기꺼이 폐기할 것임을 의미합니다. 만약 다른 것이 있다면실제로공간이 필요합니다.
기본적으로 여기서 보고 있는 것은 프로그램이 대용량 데이터 파일을 로드하도록 요청하므로 Windows가 이를 메모리에 로드한다는 것입니다. 메모리 관리는 매우 복잡한 프로세스이며 여기서 Windows가 내부적으로 수행하는 작업은 판단을 내리는 것입니다. 현재 프로세스를 살펴보고 Chrome이 5GB의 메모리(많은 탭!)를 차지하고 있음을 확인하지만 그 기억의 대부분은 지난 한 시간 동안 건드리지 않았다는 것입니다. 이 시점에서 선택 사항이 있습니다. Chrome을 메모리에 남겨두고 파일을 캐시하지 않을 수 있습니다. 이는 Cataloger 프로세스가 파일을 처리하는 데 몇 분이 아닌 몇 시간이 걸릴 수 있음을 의미합니다. 특히 파일 내에서 많이 이동하는 경우에는 더욱 그렇습니다. 또는 크롬 탭을 페이지 아웃하고 Cataloger 파일을 메모리에 로드한 다음 해당 프로세스를 빠르게 완료할 수 있습니다.
이제 Windows가 Chrome을 메모리로 다시 페이징해야 할 때 고통을 느낄 것입니다. 그러나 Windows는 사용자가 요청할 때까지 이를 수행하지 않습니다(예: Chrome을 다시 포그라운드로 가져와 페이지 아웃된 탭을 선택). 궁극적으로 평가해야 할 것은 그 고통이 메모리를 기다려야 하는 Cataloger 작업의 고통보다 크거나 작은지 여부입니다. 프로그램을 서비스로 실행하고 Windows에 응답성을 최적화하도록 지시하거나 프로세스 우선 순위를 낮추도록 시도할 수 있지만 원하는 것은 Cataloger 프로세스가 가능한 한 빨리 완료되는 것이라고 확신합니다. 디스크 I/O가 최대화되면 전체 시스템이 엄청나게 느려질 것입니다. 디스크 I/O가 필요한 모든 항목은 대기열에 저장됩니다(웹 검색도 마찬가지입니다. 여기에는 캐시도 사용됩니다!). 프로그램은 느리게 열리고 새 탭은 빠르게 열리지만 실제로 어떤 용도로 사용하는 것은 느립니다.
프로그램이 파일을 순차적으로 읽고 다시 건드리지 않는 경우 Windows가 파일을 캐싱할 필요가 없다는 데 동의합니다. 여기서 문제는 캐시할 필요가 없다고 말하는 사람이 아무도 없기 때문에 Windows가 이를 모른다는 것입니다.
Cataloger 프로그램의 소스 코드에 액세스할 수 있는 경우(또는 수정을 요청할 수 있는 경우) 를 사용하여 파일을 열도록 구성할 수 있습니다. FILE_FLAG_NO_BUFFERING
그러면 Windows가 이러한 방식으로 프로그램에서 연 파일에 대한 디스크 캐시를 건너뜁니다. .
이것이 옵션이 아닌 경우 Cataloger 프로세스가 수행되지 않는 한가지다귀하의 시스템에서 실행하려면 사용되지 않는 예비 컴퓨터가 있는지 살펴보고 이 파일을 카탈로그화하기 위한 전용 컴퓨터로 설정할 수 있는지 확인하겠습니다. 아직 RAM이 없다면 단순히 RAM을 늘리는 것도 또 다른 옵션일 수 있습니다. 요즘 메모리 가격은 상당히 저렴하며 개발자들은 이를 알고 있습니다. 대부분의 것들은 메모리를 희생하면서 속도와 응답성에 최적화되어 있습니다. 8GB는 예전 같지 않습니다.
또 다른 옵션은 사용하는 모든 파일을 별도의 하드 드라이브로 옮기고 특히 해당 드라이브에 대한 디스크 캐싱을 끄는 것입니다.
답변2
저도 똑같은 문제가 있었습니다. "intellimem.exe"라는 프로세스인데 삭제하고 KABOM을 삭제했습니다! RAM 및 페이지 파일의 80%에서 페이지 파일 없음 및 RAM 사용량 20%까지! 그리고 나는 아무런 문제가 없습니다.