ฟีเจอร์ Memory Compression ใน Windows 10 และ 11 ใช้เพิ่มประสิทธิภาพการใช้ Physical RAM โดยการบีบอัด Page บางส่วนใน RAM ด้วย Process Memory Compression สามารถเก็บ Process มากขึ้นใน Physical Memory ได้โดยไม่ต้อง Paging ไปที่ดิสก์ ข้อมูลที่ต้องการดึงจาก RAM เร็วกว่า แม้จะใช้ CPU Resources เพิ่มในการ Compress/Decompress ด้วย Memory Compression ช่วยลดการใช้ RAM, ลดโหลดฮาร์ดดิสก์จากการลด I/O Operations และประหยัดทรัพยากร SSD
Microsoft นำ Memory Compression มาใช้ครั้งแรกโดย Memory Manager (MM) Process ใน Windows 10 และ Windows Server 2016 บทความนี้จะดูวิธีดูสถิติการใช้ Compressed Memory ใน Windows วิธี Enable หรือ Disable RAM Compression (หากคอมพิวเตอร์ช้าจากโหลดสูงของ Process Memory Compression)
Compressed Memory ใน Windows 10 และ 11
เมื่อ Windows Memory Manager ตรวจพบว่าหน่วยความจำน้อย จะพยายามบีบอัด Unused Pages ของ Memory แทนที่จะเขียนไปที่ Paging File บนดิสก์ เพื่อ釋放 RAM ให้ Process อื่น
เดิม Process System and compressed memory อยู่ภายใน System Process ซึ่งไม่สะดวกสำหรับ Troubleshooting ใน Windows Build ใหม่ (Win 10 20H2 และ Windows 11) ฟังก์ชันนี้แยกออกมาเป็น Process Memory Compression แยกต่างหาก ซ่อนอยู่จาก Task Manager สามารถดูข้อมูล Process นี้ด้วย Get-Process PowerShell Cmdlet:
Get-Process -Name "Memory Compression"
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 1548 380920 1,104.59 1764 0 Memory Compression

ดูระดับการใช้ Memory Compression ปัจจุบันได้เฉพาะใน Windows Task Manager
ไปที่แท็บ Performance เลือก Section Memory ค่าปัจจุบันของ Compressed Memory Usage แสดงในพารามิเตอร์ In use (Compressed) ในตัวอย่าง ใช้ 4.5 GB ซึ่ง 373 MB เป็น Compressed เพื่อเข้าใจปริมาณ Memory เริ่มต้นที่ถูกบีบอัด ให้ Hover เมาส์เหนือกราฟ Memory composition:
In use compressed (373 MB). Compressed memory stores an estimated 1549 MB of data, saving the system 1176 MB of memory.
เห็นว่า Memory Compression Level เกือบ 315% ประหยัด RAM ได้มาก

ดู CPU Usage จริงและขนาด Memory ที่ Process Memory Compression ใช้ใน Windows 11/10 ด้วย Process Explorer
รัน Process Explorer หา Process Memory Compression ใน System Process Tree

Process Memory Compression ได้รับบริการจาก Service SysMain (ก่อนหน้านี้ชื่อ SuperFetch) SysMain ลด Disk Writes (Paging) โดยการบีบอัดและรวม Memory Pages หาก Service นี้หยุด Windows จะไม่ใช้ RAM Compression
ตรวจสอบสถานะ SysMain Service ด้วย PowerShell:
get-service sysmain

ในกรณีส่วนใหญ่ หากคอมพิวเตอร์ทำงานปกติและมี RAM พอ Process Compressed Memory ทำงานได้ดี ไม่ต้องมีการดำเนินการจาก Admin
Process System and Compressed Memory ใช้ CPU และ RAM สูง
SysMain Service และ Memory Compression Process ใช้เพื่อปรับปรุงประสิทธิภาพคอมพิวเตอร์ แต่บางครั้ง Process Memory Compression เริ่มโหลด CPU หรือ Hard Drive มาก (ถึง 100% เห็นได้ใน Task Manager) หรือใช้ RAM Resources มากเกินไป ทำให้คอมพิวเตอร์ช้า หรือค้าง

สามารถทำได้ดังนี้:
- ลองปิด Page File ชั่วคราว (No paging file Option) Restart Computer เปิด Page File กลับ (Automatically manage paging file size for all drives Option) และ Reboot อีกครั้ง
- หากปัญหาโหลดสูงของ Compressed Memory Process เกิดขึ้นเฉพาะหลัง Wake จาก Sleep หรือ Hibernate Modes (และหายหลัง Restart) ลองดาวน์โหลดและติดตั้ง Driver ล่าสุดสำหรับ Storage Controllers (ACPI/AHCI/RAID/SCSI), Hard Drives และ Video Card จากเว็บไซต์ทางการ หลังจากนั้นแนะนำให้ปิด Automatic Driver Update

หากวิธีเหล่านี้ไม่ช่วย สามารถลองปิดไม่ให้ Windows ใช้ Compressed Memory ได้
วิธีปิด Memory Compression ใน Windows 10 และ 11
หากต้องการให้ Windows 10 ทำงานเสถียรโดยไม่ใช้ Compressed Memory สามารถปิด Feature นี้ชั่วคราวได้ เปิด PowerShell แบบ Elevated ตรวจสอบว่า Compressed Memory เปิดอยู่:
Get-mmagent
ApplicationLaunchPrefetching : True ApplicationPreLaunch : True MaxOperationAPIFiles : 512 MemoryCompression : True OperationAPI : True PageCombining : True
Parameter MemoryCompression: True แสดงว่า Compressed Memory เปิดอยู่
ปิด Compressed Memory ใน Windows:
Disable-MMAgent –MemoryCompression
และ Restart Computer:
Restart-Computer

ตรวจสอบว่า Overall System Performance เปลี่ยนแปลงหลังปิด Compressed Memory หรือไม่ หาก Performance ดีขึ้น สามารถปล่อยให้ Windows 10 ทำงานกับ Compressed Memory ปิดอยู่ได้
ในบางกรณี แนะนำให้แก้ปัญหา Compressed Memory ด้วย:
- ปิด Service SysMain (ก่อนหน้า SuperFetch) (
services.msc→ SysMain → Startup type: Disabled) จะปิด Windows 10/11 Memory Optimization Processes ใน Memory Manager - ปิด Full Memory Diagnostic Task RunFullMemoryDiagnostic ใน Task Scheduler (Task Scheduler → Task Scheduler Library → Microsoft → Windows → MemoryDiagnostic → RunFullMemoryDiagnostic (Detects and mitigates problems in physical memory – RAM) → Disable

- ลองปิด Network Activity Monitoring Driver (Network Data Usage, NDU) (อธิบายในบทความ Non-paged Memory Pool ใน Windows)
- ปิด Real-time Protection ใน Antivirus อาจไม่ทำงานถูกต้องกับ Compressed Memory
- ตรวจสอบ System Files ของ Windows Image ด้วย DISM และ SFC
เคล็ดลับเหล่านี้ช่วยแก้ปัญหาโหลดสูงของ Compressed Memory Process แต่การปิด Feature การเพิ่มประสิทธิภาพ Windows พื้นฐานอาจส่งผลต่อ Overall Performance ของอุปกรณ์โดยรวม
วิธีเปิด Memory Compression บน Windows Server 2016/2019/2022 หรือ Windows 10
Memory Compression ปิดอยู่โดยค่าเริ่มต้นในทุก Version ของ Windows Server
รันคำสั่ง Get-mmagent ตรวจสอบว่า Compressed Memory ปิดอยู่ ใน Screenshot ด้านล่าง แสดงว่าใน Windows Server 2022 ค่า Memory Compression = False

เพื่อให้ Windows ใช้ Memory Compression ต้องมีเงื่อนไข:
- Paging File ต้องเปิดอยู่ (อย่างน้อยขนาดขั้นต่ำ 16 MB)
- SysMain Service ต้องทำงานอยู่
- ใช้ Windows 10/11 หรือ Windows Server 2016+
เปิด Memory Compression ใน Windows:
Enable-MMAgent -MemoryCompression
Reboot Computer
การเปิด Memory Compression จะเปิดฟีเจอร์ SysMain อีกอย่างคือ Page Aggregation ฟังก์ชัน Memory Manager นี้ใช้ Merge Memory Pages ที่มีเนื้อหาเหมือนกัน (ชนิดหนึ่งของ RAM Deduplication)
โดยทั่วไป Memory Compression Feature ใน Windows 10 และ 11 ทำงานได้ค่อนข้างมีประสิทธิภาพ และไม่ต้องการการแทรกแซง หาก Memory Compression ก่อให้เกิดปัญหาบนคอมพิวเตอร์ของคุณ น่าจะเป็นเพราะปัญหา System Settings, Hardware, หรือ Drivers หากจำเป็น สามารถปิด Memory Compression ได้ทั้งหมด