Windows 10, 대량의 RAM을 사용하는 '시스템'프로세스


83

Windows 10으로 업그레이드 한 후 시스템에서 RAM을 과도하게 소비했습니다.

여기에 이미지 설명을 입력하십시오

나는 조금 읽고 있었고 메모리 누수 가능성이 있다고 판단했습니다. 그래서 나는 Windows Driver Kit을 얻었고 poolmon으로 메모리 사용을 추적했습니다.

여기에 이미지 설명을 입력하십시오

그러나 여기서부터 진행하는 방법을 모르겠습니다. "smNp"로 태그 된 항목이이 문제의 범인입니까? 거기에서 실제로 운전자를 식별하는 방법은 무엇입니까?

내가 좋아하는 몇 가지 물건을 시도 "C : \ WINDOWS \ system32를 \ 드라이버>에서 findstr / s의 SMNP는 . "하지만 결과가 없습니다. 또한 pooltag.txt 파일을 살펴 보았으며 이것이 내가 찾은 설명입니다.

여기에 이미지 설명을 입력하십시오

예, 도움을 주시면 감사하겠습니다. 미리 감사드립니다.


1
좋아, 나는 찾을 수있는 정보를 추가했다. 그들을 확인하십시오
magicandre1981

1
이것은 디스크로 페이징하는 대신 압축을 사용하여 실제로 RAM에 더 많은 것을 유지하는 시스템의 기능입니다. @ magicandre1981에는 정답으로 받아 들여 져야 할 올바른 정보가 있습니다.
Mani Gandham

poolmon이 보여주는 14MB는 smNp 태그와 관련이 있습니다. 시스템 프로세스 개인용 작업 세트에서 1.3GB가 걱정됩니다. 왜 14MB의 비 페이징 풀 (프로세스의 작업 세트에없는 것)에 집중해야합니까?
Jamie Hanrahan

답변:


13

services.msc(를 통해 Win+R) 들어가서 Superfetch를 비활성화하면이 문제가 완전히 해결됩니다. Superfetch가 지금 막 고장 났는지 또는 "디자인 상"인지 확실하지 않습니다.

또한 페이징 파일을 제거해도 동일한 효과가 있지만 위의 해결 방법이 더 안전 합니다.


1
이것은 실제로 효과가있었습니다. 사용 시간이 지나도 시스템의 메모리 사용량은 ~ 0.1MB로 돌아갑니다. 감사!
Nayncore

26
일반적으로 이러한 높은 메모리 사용은 메모리 누수의 위험 요소이지만이 메모리는 Windows 10의 특징으로 합법적으로 사용됩니다 (아래 magicandre의 답변 참조).
Bigbio2002

7
그것은 버그가 아니며 비활성화되어서는 안됩니다
phuclv


6
이 기능으로 메모리 부족 경고가 계속 발생하면 좋은 기능이 아닙니다. 이제 4GB RAM이 장착 된 Surface Pro는 개발에 완전히 사용할 수 없으며 8GB RAM이 장착 된 랩톱에서도 계속 경고 메시지가 표시됩니다. 해결책을 찾아보세요!
Oleg I.

94

여러 사용자의 xperf 추적을 살펴본 결과 ntoskrnl.exe!SmKmStoreHelperWorker커널 기능 이 메모리 할당을 시작합니다.

스크린 샷
(이미지를 클릭하면 확대됩니다)

나는 이것을 sysinternals에서 발견 했다 .

나는 그것에 대해 Microsoft에 물었고 이것이 답이다. 시스템 메모리 압축과 관련이 있습니다.

에서 윈도우 10 빌드 10525의 발표, 마이크로 소프트는 조금 설명 :

Windows 10에서는 메모리 저장소에 압축 페이지의 모음 인 압축 저장소라는 새로운 개념을 메모리 관리자에 추가했습니다. 이는 메모리 관리자가 메모리 부족을 느끼면 사용되지 않은 페이지를 디스크에 쓰지 않고 압축합니다. 이렇게하면 프로세스 당 사용되는 메모리 양이 줄어들어 Windows 10은 한 번에 더 많은 응용 프로그램을 실제 메모리에 유지할 수 있습니다. 또한 Windows 10에서보다 나은 응답 성을 제공합니다. 압축 저장소는 시스템 프로세스의 작업 세트에 있습니다.시스템 프로세스가 저장소를 메모리에 보유하므로 다른 프로세스에서 메모리를 사용할 수있게되면 작업 세트가 정확하게 커집니다. 이것은 작업 관리자에서 볼 수 있으며 시스템 프로세스가 이전 릴리스보다 많은 메모리를 소비하는 것으로 보입니다.

따라서 메모리 파일을 페이지 파일에 쓰는 대신 압축합니다. 이 압축 메모리는 시스템 프로세스에 표시됩니다.

Microsoft는 내부 허브에도 자세한 내용을 게시했습니다. Winbeta 는 자세한 내용이 포함 된 기사만들었습니다 .

분명히이 이유는 Microsoft가 UWP 앱을 포 그라운드에 있지 않을 때 일시 중지하도록 선택했기 때문에 발생했습니다. 일부 스마트 폰 OS 관리와 매우 유사합니다. Windows 8 사용자는 앱이 화면에 표시되지 않으면 사용자가 다시 앱을 전환 할 때까지 실행되지 않는다는 것을 이해했을 것입니다. '전부 또는 전무'접근 방식이 Windows 10 으로 업데이트 되어 페이지 파일과 일반 페이징 활동 사이에 계층이 도입되었습니다. 이제 메모리 부족 문제가 발생하면 MM은 트리밍이라는 프로세스에서 수정 된 목록으로 이동할 페이지를 결정합니다.수정 된 목록은 대기 페이지 파일 목록을 백업하는 2 차 페이지 파일 목록입니다. 다른 프로세스가 대기 목록에서 메모리를 회수하고 원래 프로세스가 해당 페이지를 찾는 경우 백업 목록이 캡처됩니다. Windows 10 MM은 전부 또는 아예 대신 디스크에 쓰지 않고 사용하지 않은 페이지를 압축합니다. 적은 쓰기로 결과적으로 압축 덕분에 디스크 작업이 줄어들고 더 많은 데이터를 메모리에 저장할 수 있습니다.

여기에 이미지 설명을 입력하십시오

Windows 팀에 따르면 " 실제로 압축 메모리는 압축되지 않은 크기의 약 40 %를 차지하며 일반적인 작업을 실행하는 일반적인 장치의 결과로 이전 버전의 디스크보다 50 % 만 디스크에 페이지를 기록합니다 OS. 모든 계획에 따르면 Windows 사용자는 모든 장치의 대기 시간이 줄어들고 플래시 기반 하드 드라이브가있는 시스템의 수명이 연장 될 수 있습니다 .

감압은 Windows 10이 잘 수행하도록 설계된 것입니다. Windows 10은 병렬화와 순차적 읽기의 조합을 사용하여 호출되면 페이지를 메모리에 생성합니다. 새로운 압축 해제는 Windows 10이 동시에 여러 CPU를 사용하여 데이터 압축을 풀고 병렬로 읽는 것처럼 빠른 경험을 제공합니다. 이전 버전의 Windows는 디스크 간 전송 속도로 인해 느려질 수 있습니다.

Microsoft는 채널 9의 기능을 설명하는 비디오도 출시했습니다.

Windows 10 RTM의 메모리 압축
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

이 비디오에서 Mehmet Iyigun은 Windows 10의 시스템 프로세스가 왜 더 많은 메모리를 사용하는지 그리고 왜 좋은지에 대해 토론하는 데 시간을 보냈습니다. 더 많은 메모리를 사용하는 프로세스는 나쁜 것처럼 들립니다. 메모리 관리, 페이징 및 하드 / 소프트 페이지 결함에 대해 더 많이 이해할 때까지입니다. OS가 프로세스가 일부 메모리를 다듬을 수 있지만 반드시 디스크로 페이지를 넘길 필요는없는 영리한 최적화를 수행하고 있음이 밝혀졌습니다. 메모리는 RAM에 보존 될뿐만 아니라 압축되어 하드 페이지 결함을보다 드물게 만듭니다. 결과는보다 빠른 경험을 제공해야합니다.

최신 TH2 빌드에서 Microsoft는 작업 관리자의 설명을 업데이트했으며 이제 SYSTEM 프로세스가 다음을 호스팅 함을 보여줍니다 compressed memory.

여기에 이미지 설명을 입력하십시오

"높은"사용법에 대한 혼동을 피하기 위해.

2016 년 8 월에 릴리스 된 Window 10 Anniversary Update에서 Microsoft는 이제 압축이 압축 해제 된 의사 프로세스 Memory Compression에서 더 이상 SYSTEM을 사용하는 이유를 더 이상 사용자에게 혼동하지 않도록 하는 의사 프로세스로 표시되었습니다 .

여기에 이미지 설명을 입력하십시오

그러나 Taskmgr에이 프로세스가 표시되지 않는 것 같습니다. ProcessExplorer / ProcessHacker 만 표시 할 수 있습니다. Taskmgr은 개요에서 압축 된 메모리 양만 표시합니다.

여기에 이미지 설명을 입력하십시오

Taskmgr에서 사용 된 메모리 그래프 위로 마우스를 가져 가면 압축 된 데이터의 양을 표시하는 툴팁이 표시됩니다.

여기에 이미지 설명을 입력하십시오

이 데모에서는 388MB가 122MB로 압축되므로 압축시 267MB가 저장됩니다.


9
@Zaibis : 아이디어는 "1GB를 떨어 뜨리지 않는 것"이라고 생각합니다. 1GB는 Windows에서 예약했으며 할당에 사용됩니다. 당신은 기억을 잃지 않았습니다 .
궤도에서 가벼움 경주

12
"사용하지 않은 메모리는 메모리를 낭비합니다"는 오랫동안 OS X의 진언이었습니다. Windows도 탑재 된 것처럼 보입니다.
12

1
@ System Memory compression
magicandre1981

2
자세한 내용은 대답 할 수 없습니다. 나는 그것이 의도적으로 설계된 정보, 메모리 압축과 관련이있는 정보 만 얻었으며 이것은 블로그 포스트에 의해 설명 될 것입니다. 새로운 정보를 받으면 게시물을 업데이트합니다.
magicandre1981

2
@JosiahKeller "메모리 부족"대화창은 가상 메모리 부족에 관한 것입니다. 실제 메모리 (RAM)의 사용 또는 가용성과는 아무런 관련이 없습니다. 그것들은 모든 최신 데스크탑 OS에 의해 별도로 설명됩니다.
David Schwartz

0

높은 시스템 메모리 사용을 유발하는 특이한 사례를 발견했으며이 정보가 다른 사람에게 도움이되는 경우에 포함 시키려고했습니다.

Microsoft의 볼륨 스냅 샷 (하드웨어 스냅 샷이 아닌 소프트웨어 스냅 샷)을 많이 사용하는 경우 더 많은 스냅 샷을 데이터 변경 사항 과 결합하면 시스템에서 더 많은 RAM을 소비하게됩니다.

일반적으로 볼륨 스냅 샷에 사용되는 RAM의 양은 적으며 스냅 샷 사이에 테라 바이트 급 델타가있는 대용량 (예 : 64TB)이 없으면 알 수 없습니다. 기본적으로 스냅 샷은 쓰기 IO가 너무 높아지면 단순히 스스로 삭제하지만,이를 방지 할 수있는 방법이 있으므로 대규모 델타에 도달 할 수 있습니다.

다음은 13GB RAM을 사용하는 서버의 시스템 프로세스를 보여주는 극단적 인 경우입니다. 이 서버에는 15 일 간격으로 두 개의 볼륨 스냅 샷 만 있으며 각 스냅 샷 사이에 약 10TB의 데이터가 기록됩니다.

13GB의 시스템 메모리 사용량

위의 시스템 프로세스는 이전에 24GB를 사용했으며 다음 세 가지 동작이 관찰되었습니다.

  1. 재부팅 후 다시 로그인하면 바탕 화면이 나타날 때까지 빈 화면에서 일정 시간 동안 시스템이 정지됩니다.
  2. 이 중단 동안 작업 관리자 (CTRL-SHIFT-ESC)를 당겨 시스템 메모리 사용량이 증가한 것으로 나타났습니다.
  3. 이 중단 동안 볼륨 스냅 샷이있는 디스크는 성능 모니터에 표시되지 않은 많은 읽기를 수행했습니다. 디스크가 iSCSI를 사용했기 때문에 네트워크 카드는 약 200Mbps의 안정적인 읽기 스트림을 보여주었습니다.

볼륨 스냅 샷이 의심되어 가장 오래된 스냅 샷을 삭제하여 시스템 메모리 사용량을 24GB에서 13GB로 즉시 줄였습니다.

이러한 상황에서는 Microsoft에서이를 확인하지 않았지만 이는 정상적인 동작 일 수 있습니다. 그 동안 Snapshot 오버 헤드를 처리하기 위해이 서버에 추가 32GB의 RAM을 추가 할 예정입니다.

(참고 :이 서버는 64TB SSD iSCSI 드라이브가 연결된 Windows 2016을 실행하는 대용량 백업 서버입니다. 15 일마다 새로 생성 된 스냅 샷은 항상 평균 3 개의 볼륨 스냅 샷을 유지합니다. 각 스냅 샷 사이에 기록 된 데이터).


-1

: regedit를 키에 페처를 비활성화 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters당신은 아마이 Enable Prefetcher의 가치 2또는 3너무로 변경0

다음 Superfetch으로 서비스 에서 비활성화해야 합니다

  1. services.msc를 검색하십시오

  2. superfetch클릭 properties을 찾아서 설정 disabled하고 서비스를 중지하십시오.

나는이 단계를 수행하고 게임을 할 때 일반적으로 PC를 system사용 하고 프로세스는 28k 만 사용합니다


12
이것은 끔찍한 생각입니다. 프리 페치 / 슈퍼 페치는 이유로 사용됩니다. OS보다 메모리를 더 잘 관리 할 수 ​​있다고 생각하면 슬프게도 잘못입니다.
b1nary.atr0phy

프리 페치를 비활성화 (또는 "프리 페치 폴더 정리")하는 것은 매우 어리석은 생각입니다. 프리 페치는 시스템이 더 이상 RAM을 사용하지 않게합니다. exe 및 dll 을 시작한 후에 만 로드하는 속도를 높 입니다. 다시 SuperFetch, Microsoft는 Windows 드라이브 용 SSD가있는 시스템에서 기본적으로 SuperFetch를 비활성화합니다. 그들은 이익이 그만한 가치가 없다고 생각합니다. 개인적으로 SFD가 아닌 다른 드라이브, SSD가 아닌 다른 드라이브가 있기 때문에 활성화 상태를 유지합니다.
Jamie Hanrahan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.