ฉันได้ดูร่องรอย xperf ของผู้ใช้หลายคนและที่นี่ฟังก์ชั่นntoskrnl.exe!SmKmStoreHelperWorker
ของเคอร์เนลเริ่มจัดสรรหน่วยความจำ
(คลิกที่ภาพเพื่อขยาย)
ผมค้นพบนี้ในsysinternals
ฉันถาม Microsoft เกี่ยวกับเรื่องนี้และคำตอบคือโดยการออกแบบ มันเกี่ยวข้องกับการบีบอัดหน่วยความจำระบบ
ในการประกาศของ Windows 10 Build 10525 Microsoft อธิบายเล็กน้อย :
ใน Windows 10 เราได้เพิ่มแนวคิดใหม่ในตัวจัดการหน่วยความจำที่เรียกว่าการบีบอัดที่เก็บซึ่งเป็นคอลเลกชันในหน่วยความจำของหน้าบีบอัด ซึ่งหมายความว่าเมื่อ Memory Manager รู้สึกถึงความกดดันหน่วยความจำจะบีบอัดหน้าที่ไม่ได้ใช้แทนที่จะเขียนลงดิสก์ วิธีนี้ช่วยลดปริมาณหน่วยความจำที่ใช้ต่อกระบวนการทำให้ Windows 10 สามารถบำรุงรักษาแอปพลิเคชันเพิ่มเติมในหน่วยความจำกายภาพในแต่ละครั้ง สิ่งนี้ยังช่วยให้การตอบสนองที่ดีขึ้นใน Windows 10 ที่เก็บการบีบอัดอยู่ในชุดการทำงานของกระบวนการของระบบเนื่องจากกระบวนการของระบบเก็บที่เก็บไว้ในหน่วยความจำชุดการทำงานของมันจึงใหญ่ขึ้นเมื่อหน่วยความจำนั้นพร้อมใช้งานสำหรับกระบวนการอื่น สามารถมองเห็นได้ในตัวจัดการงานและสาเหตุที่กระบวนการของระบบดูเหมือนจะใช้หน่วยความจำมากกว่ารุ่นก่อนหน้า
ดังนั้นแทนที่จะเขียนข้อมูลหน่วยความจำไปยัง pagefile มันบีบอัดพวกเขา และหน่วยความจำที่บีบอัดนี้จะแสดงในกระบวนการของระบบ
Microsoft ยังโพสต์รายละเอียดเพิ่มเติมในฮับด้านใน Winbeta สร้างบทความซึ่งรวมถึงรายละเอียดเพิ่มเติม
เห็นได้ชัดว่าเหตุผลนี้เกิดขึ้นกับ Microsoft ที่เลือกระงับแอป UWP เมื่อพวกเขาไม่ได้อยู่ในเบื้องหน้าคล้ายกับการจัดการระบบปฏิบัติการสมาร์ทโฟน ผู้ใช้ Windows 8 เข้าใจ (อาจไม่ใช่) ว่าหากแอปไม่ได้อยู่บนหน้าจอพวกเขาจะไม่ทำงานจนกว่าผู้ใช้จะเปลี่ยนกลับไปใช้ วิธี 'ทั้งหมดหรือไม่มีเลย' กำลังได้รับการอัปเดตด้วย Windows 10 แนะนำเลเยอร์ระหว่าง pagefile และกิจกรรมการเพจปกติ ตอนนี้เมื่อประสบกับปัญหาความดันหน่วยความจำ MM จะพิจารณาว่าควรย้ายหน้าใดไปยังรายการที่แก้ไขในกระบวนการที่เรียกว่าการตัดแต่งรายการที่แก้ไขคือรายการรองของ pagefiles ที่สำรองข้อมูลรายการของ pagefiles ที่สแตนด์บาย รายการสำรองข้อมูลจะถูกบันทึกไว้ในกรณีที่หน่วยความจำถูกเรียกคืนจากรายการสแตนด์บายโดยกระบวนการอื่นและกระบวนการต้นฉบับมาค้นหาหน้าของมัน แทนที่จะเป็นทั้งหมดหรือไม่มีอะไร Windows 10 MM จะบีบอัดหน้าที่ไม่ได้ใช้แทนที่จะเขียนลงในดิสก์ ด้วยการเขียนที่น้อยกว่าผลลัพธ์ควรมีการทำงานของดิสก์น้อยลงด้วยการบีบอัดและตอนนี้สามารถเก็บข้อมูลได้มากขึ้นในหน่วยความจำ
ตามที่ทีม Windows ระบุ“ ในทางปฏิบัติหน่วยความจำที่บีบอัดจะใช้ขนาดที่ไม่บีบอัดประมาณ 40% และเนื่องจากอุปกรณ์ทั่วไปที่ใช้งานปริมาณงานทั่วไป Windows 10 จะเขียนหน้าลงดิสก์เพียง 50% บ่อยเท่ารุ่นก่อนหน้า ระบบปฏิบัติการ ” ถ้าทุกอย่างเป็นไปตามแผนผู้ใช้ Windows อาจจะประสบครั้งลดการรอคอยสำหรับอุปกรณ์ทั้งหมดเช่นเดียวกับการขยาย lifespans ในระบบที่มีฮาร์ดไดรฟ์แฟลชตาม
การบีบอัดเป็นสิ่งที่ Windows 10 ออกแบบมาให้ทำดี Windows 10 ใช้การรวมกันของ parallelizability และการอ่านตามลำดับเพื่อสร้างเพจในหน่วยความจำทันทีที่เรียก การคลายการบีบอัดข้อมูลใหม่ควรส่งผลให้เกิดประสบการณ์ที่เร็วขึ้นเนื่องจาก Windows 10 กำลังคลายการบีบอัดข้อมูลและอ่านพร้อมกันโดยใช้ซีพียูหลายตัว Windows เวอร์ชั่นที่เก่ากว่าอาจรู้สึกอืดเพราะอัตราการถ่ายโอนระหว่างดิสก์
Microsoft ยังเผยแพร่วิดีโอใน channel9 ซึ่งอธิบายถึงคุณสมบัติ
การบีบอัดหน่วยความจำใน Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM
ในวิดีโอนี้เมห์เม็ตอีวายกุนใช้เวลาพูดคุยกันถึงสาเหตุที่กระบวนการของระบบใน Windows 10 ใช้หน่วยความจำเพิ่มขึ้นเล็กน้อยและทำไมมันถึงดี กระบวนการที่ใช้หน่วยความจำมากขึ้นฟังดูไม่ดีนั่นคือจนกว่าฉันจะเข้าใจเกี่ยวกับการจัดการหน่วยความจำการเพจและข้อบกพร่องของเพจที่แข็ง / นุ่ม ปรากฎว่าระบบปฏิบัติการกำลังทำการปรับแต่งที่ชาญฉลาดซึ่งอนุญาตให้กระบวนการของคุณตัดหน่วยความจำบางส่วน แต่ไม่จำเป็นต้องเพจออกไปยังดิสก์ ไม่เพียง แต่หน่วยความจำที่ถูกเก็บรักษาไว้ใน RAM เท่านั้น แต่ยังถูกบีบอัดด้วยทำให้การพิมพ์หน้าผิดพลาดเกิดขึ้นได้ยาก ผลลัพธ์ควรสร้างเพื่อประสบการณ์การตกปลา
ใน TH2 Builds ล่าสุด Microsoft ได้อัปเดตคำอธิบายในตัวจัดการงานและขณะนี้ยังแสดงให้เห็นว่ากระบวนการของระบบโฮสต์compressed memory
:
เพื่อหลีกเลี่ยงความสับสนเกี่ยวกับการใช้งาน "สูง"
ในการอัปเดต Window 10 Anniversary Update ซึ่งเปิดตัวในเดือนสิงหาคม 2559 Microsoft ได้ทำการบีบอัดการบีบอัดที่แสดงอยู่ในกระบวนการหลอกที่เรียกว่าMemory Compression
ไม่ทำให้ผู้ใช้สับสนอีกต่อไปว่าทำไมระบบมีการใช้หน่วยความจำขนาดใหญ่เช่นนี้:
แต่ดูเหมือนว่า Taskmgr จะไม่แสดงกระบวนการนี้มีเพียง ProcessExplorer / ProcessHacker เท่านั้นที่สามารถแสดงได้ Taskmgr แสดงจำนวนหน่วยความจำที่บีบอัดในภาพรวมเท่านั้น:
หากคุณเลื่อนเมาส์ไปเหนือกราฟหน่วยความจำที่ใช้ใน Taskmgr คุณจะเห็นคำแนะนำเครื่องมือที่แสดงจำนวนข้อมูลที่บีบอัด
ในตัวอย่างนี้ 388MB ถูกบีบอัดเป็น 122MB ดังนั้น 267MB จะถูกบันทึกด้วยการบีบอัด