나는 이 Windows 기능의 비활성화를 중단했고, 잃어버린 줄 알았던 성능을 되찾았다
나는 윈도우를 충분히 다뤄본 경험이 있어서 대부분의 사람들이 절대 건드리지 않는 설정도 잘 알고 있다. 메모리 압축은 내가 항상 잘 이해하고 있어서 그냥 두었던 기능 중 하나였다. 그러나 작년에는 호기심이 나를 이기게 했다. 질문은 간단했다: 메모리 압축이 CPU 사이클을 RAM 효율과 바꾸는 것이라면, 충분한 RAM을 가진 시스템은 실제로 이를 사용하지 않을 때 더 잘 작동할까?
확인할 수 있는 방법은 하나뿐이었다. 나는 PowerShell을 관리자 권한으로 열고, 기능이 켜져 있는지 확인하기 위해 Get-MMAgent를 실행한 다음, Disable-MMAgent -mc를 실행하고 PC를 재시작했다. 하지만 그 후 나타난 것은 내가 바라던 성능 향상과는 거리가 있었다. 사실, 시스템은 부하가 걸릴 때 미묘하게 더 느려진 듯했고, 그로 인해 나는 더 깊이 파고들게 되었고, 결국 모든 것이 시작된 명령어로 다시 돌아오게 되었다: Enable-MMAgent -mc.
메모리 압축을 비활성화하는 것은 들리는 것만큼 성능 향상 조정이 아니다
배경 압축에 대한 옹호
제 작은 실험의 배경이 된 생각은 메모리 압축이 데이터를 RAM에 저장하기 전에 압축한다는 것이었습니다. 즉, 동일한 물리적 공간에 더 많은 데이터를 저장할 수 있고 페이지 파일에 덜 의존하게 된다는 의미죠. 문제는 CPU가 추가 작업을 해야 한다는 점입니다. 데이터를 입력할 때 압축하고, 다시 필요할 때 해제해야 하니까요. 그래서 RAM이 충분한 시스템에서는 이게 다소 불필요하게 느껴지기 시작합니다. 이미 충분한 공간이 있다면, 굳이 뭘 압축할 필요가 있겠습니까?
그런 사고방식은 메모리가 가득 차기 시작할 때 실제로 일어나는 일을 놓치고 있습니다. 윈도우는 데이터를 즉시 디스크로 내보내지 않습니다. 먼저 비활성 메모리를 압축하여 RAM에 보관합니다. 그 압축된 공간이 부족해질 때만 데이터를 디스크로 밀기 시작합니다. 그리고 실제로 성능을 느리게 하는 것은 압축이 아니라 페이지 파일입니다. CPU가 지금은 매우 빠르기 때문에, 이미 RAM에 있는 데이터를 압축 해제하는 것은 빠르게 일어납니다. 같은 데이터를 페이지 파일에서 가져오는 것은 빠른 SSD에서도 몇 마이크로초가 걸립니다. 이는 대략 1,000배 정도의 응답 시간 차이이며, 가장 빠른 SSD도 CPU 옆에 있는 RAM과는 경쟁할 수 없습니다.
숫자로 설명하자면, 16GB 시스템에서 RAM에 14GB의 활성 데이터가 있다고 상상해 보세요. 압축이 활성화된 상태에서는 Windows가 비활성 상태이고 압축이 많이 가능한 데이터(브라우저 세션, 백그라운드 앱 상태, 캐시 파일) 3GB를 약 1.5GB로 줄여서 총 메모리 사용량을 대략 15.5GB로 유지할 수 있으며, 이는 물리적 RAM 내에서 충분히 수용 가능합니다. 압축이 없으면 동일한 3GB가 압축되지 않은 채로 남아 총 메모리 사용량이 17GB에 가까워지고, 그만큼 페이지 파일로 오버플로우가 발생하게 됩니다. 일부 사용자들은 가상 메모리를 완전히 끄는 것을 주장하지만, 사실 페이지 파일을 비활성화하면 Windows가 더 불안정해지기 때문에 오버플로우는 피할 수 없습니다. 최종 결과는 미묘하지만 눈에 띄었습니다. 멀티태스킹은 더 무겁게 느껴졌고, 이전에 열었던 앱으로 돌아갈 때 가끔 이전에는 없었던 잠깐의 지연이 발생했습니다.
이 과정을 실시간으로 확인하려면 Ctrl + Shift + Esc로 작업 관리자를 열고, 성능 탭으로 이동한 후 메모리를 선택하면 됩니다. (더 자세한 분석을 원한다면 작업 관리자 대신 리소스 모니터를 사용하는 것이 어떤 프로그램이 RAM을 소모하는지 정확히 이해하는 데 도움이 되지만, 작업 관리자도 빠르게 확인하는 데 충분히 잘 작동합니다.) “사용 중(압축됨)” 수치는 현재 RAM 중 얼마나 많은 부분이 압축 데이터를 저장하고 있는지를 보여줍니다. 시스템이 바쁠 경우, 이 수치는 메모리 압축이 실제로 작업을 디스크로 이전하지 않고 유지하고 있음을 나타냅니다. 제가 PowerShell을 통해 기능을 비활성화하고 재부팅하자, 해당 값은 0으로 떨어졌습니다. 그 결과, 열려 있는 애플리케이션의 전체 메모리 사용량은 데이터가 본래 크기로 "확장"되면서 눈에 띄게 증가했고, 페이지 파일이 시스템을 안정적으로 유지하기 위해 그 부담을 대신하게 되었습니다.
스위치를 켤 때와 그대로 둘 때를 아는 것
증상이 아니라 질병을 치료하라
압축을 사용하지 않고 2주를 보내며 별다른 성과가 없었던 후, 저는 그 기능을 다시 활성화했습니다. 관리자 권한으로 PowerShell을 열고, Enable-MMAgent -mc를 실행한 다음, 재시작하고, 바탕화면으로 돌아와 Get-MMAgent로 변경 사항을 확인했습니다. 차이는 극적이지는 않았지만, 느려짐이 느껴지던 것과 같은 미묘한 방식으로 즉시 나타났습니다. 디스크 활동이 안정되었고, 이전에 열어둔 앱들이 더 빨리 다시 실행되었으며, 브라우저 탭도 더 자주 새로고침되지 않았습니다. 무거운 멀티태스킹을 하는 동안 시스템이 다시 가벼워진 느낌이 들어, 압축을 비활성화한다고 해서 얻을 수 있었던 성능 향상은 처음부터 실제로 존재하지 않았음을 분명히 알 수 있었습니다.
압축을 비활성화한 상태로 두는 것이 타당한 경우는 최소 32GB 이상의 RAM을 가진 시스템에서만 실질적인 의미가 있으며, 이 경우에는 '메모리 압박'이 거의 발생하지 않습니다. 그렇다 해도, 그 이점은 프로세서의 능력과 실행되는 작업 부하의 성격에 따라 달라집니다. 이미 성능이 낮거나 낡은 CPU가 거의 최대 용량으로 작동 중인 경우, 압축 오버헤드를 제거하면 약간의 여유 공간을 만들 수 있습니다. 하지만 16GB RAM과 성능 좋은 최신 프로세서를 사용하는 제 시스템에서는 압축을 비활성화해도 애플리케이션 실행 속도, 브라우저 탭 전환, 파일 추출 속도가 개선되는 것을 관찰하지 못했습니다. 오히려 시스템이 메모리 압박을 완화하여 처리하는 능력을 잃게 되었습니다.
이 규칙에 대한 유일한 주목할 만한 예외는 가상 머신(VM) 내에서 발생합니다. 가상화 환경에서는 '게스트' OS 내에서 압축을 비활성화하고, '호스트' 하이퍼바이저가 메모리 중복 제거와 할당을 보다 효율적으로 관리하도록 하는 것이 종종 더 좋습니다. 하지만 일반적인 데스크탑이나 게이밍 장비의 경우, 압축된 메모리 때문에 속도가 느려진다면, 기능을 비활성화하고 페이지 파일이 차이를 흡수하게 하는 것보다 물리적 RAM을 더 설치하는 것이 해결책입니다. 또한 Windows 페이지 파일을 올바른 드라이브로 이동시키는 것도 시스템 지연을 완화하는 또 다른 대안입니다. 압축을 비활성화하는 것은 단지 증상을 처리할 뿐, 근본적인 성능 문제를 악화시킬 뿐입니다.
조정을 되돌리면서 성능을 되찾았습니다
그 실험은 해볼 가치가 있었습니다. 이는 최적화 모드에 깊이 빠져 있을 때 쉽게 잊어버리기 쉬운 것을 확인시켜 주었습니다: Windows의 기본 메모리 동작은 우연이 아닙니다. 실제 조건에서 견디는 이유는 바로 이러한 조건을 중심으로 설계되었기 때문이며, 이론상으로 더 똑똑한 방법이 제시되더라도 그렇습니다.
호기심은 보통 따라갈 가치가 있으며, 특히 그것이 유익한 곳으로 이어질 때 더욱 그렇습니다. 나의 압축 실험은 더 빠른 성능을 제공하지 않았지만, 그 기능이 정확히 무엇을 하고 있는지, 그리고 그것을 제거했을 때 시스템이 더 나빠지지 않고 약간 더 나쁘게 느껴지는 이유를 테스트하며 이해할 수 있게 해주었습니다. 메모리 압축을 비활성화함으로써 얻었다고 생각했던 성능은, 그 기능과 싸우지 않고 Windows가 설계된 대로 메모리를 다루도록 했을 때 비로소 실제로 돌아왔습니다.






