การเรียกเก็บเงินเต็ม 100% แต่หน่วยความจำกายภาพเพียง 60% เมื่อไม่มีไฟล์เพจ


25

ฉันได้ปิดการใช้งานไฟล์หน้าในระบบของฉัน (ฮาร์ดดิสก์ช้าเกินไปไม่สามารถซื้อไฟล์ใหม่ได้ทันทีไม่สามารถย้ายไฟล์เพจไปยังพาร์ติชันอื่นได้) เมื่อฉันเห็นในการตรวจสอบทรัพยากรโดยใช้หน่วยความจำที่มีความต้องการแอปพลิเคชันระบบจะแสดงว่าการเรียกเก็บเงินเต็มเกือบ 100% ที่จริงแล้วถ้าฉันต้องการหน่วยความจำเพิ่มขึ้นเรื่อย ๆ โปรแกรมก็เริ่มทำงานผิดพลาดเนื่องจากการชาร์จมีประสิทธิภาพสูงถึง 100%

ในขณะเดียวกันระบบบอกว่าฉันใช้หน่วยความจำกายภาพเพียง 50-60% และมีหน่วยความจำประมาณ 1GB (ฟรี + สแตนด์บาย)

หากยอมรับการชาร์จคือหน่วยความจำทั้งหมดที่ร้องขอจริง ๆ แล้วทำไมระบบถึงบอกว่าหน่วยความจำนั้นว่างมาก Windows ไม่ได้ใช้หน่วยความจำกายภาพหรือไม่ กราฟหน่วยความจำผิดหรือเปล่า? ฉันพลาดอะไรไปรึเปล่า?

Commit charge graph กับกราฟหน่วยความจำฟิสิคัล ผู้จัดการงาน


2
คำตอบที่ดีอีกประการหนึ่งในหัวข้อที่นี่: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7
cnst

@cnst บทความที่ดีมาก มันช่วยให้ฉันเข้าใจวิธีนี้ดีขึ้นปัญหานี้ ทำไมคุณไม่โพสต์มันเป็นคำตอบ?
Jason Oviedo

2
โปรดอย่าปิดการใช้งานไฟล์หน้าคนของคุณ นี่เป็นความคิดที่โง่
Milney

@Milney ผมเห็นด้วยหนึ่งไม่ควรมักจะปิดการใช้งานไฟล์หน้า ในช่วงเวลาของคำถามมันสมเหตุสมผลสำหรับฉันเนื่องจากดิสก์ช้าเกินไปจนทำให้ระบบของฉันหมดอำนาจ มันมีประโยชน์จริง ๆ นอกเหนือจากการถามคำถามนี้ระบบตอบสนองทั่วไปดีขึ้นหลายครั้ง
Jason Oviedo

@JasonOviedo ไม่ควรเป็นอย่างนั้นและแสดงว่ามีบางอย่างผิดปกติ การให้ระบบมีตัวเลือกมากขึ้นไม่ควรทำให้ช้าลง ระบบไม่จำเป็นต้องใช้ไฟล์เพจเพียงเพราะมันมีหนึ่งไฟล์ (ซึ่งหมายความว่านี่อาจเป็นคำถาม XY คำถามที่ถูกต้องคือเหตุผลที่ไฟล์หน้าทำให้ระบบของคุณช้าลง)
David Schwartz

คำตอบ:


26

หมดขีด จำกัด การกระทำในขณะที่คุณยังคงมี RAM ที่มีอยู่มากมายไม่ผิดปกติ ทั้งขีด จำกัด การกระทำและการรับผิดชอบไม่เกี่ยวข้องโดยตรงกับ RAM ว่างหรือว่าง

กระทำขีด จำกัด = ขนาดหน้าแฟ้มปัจจุบัน + ขนาด RAM

เนื่องจากคุณไม่มีไฟล์หน้าขีด จำกัด การส่งข้อมูลจึงเล็กกว่านั้นหากคุณมีไฟล์หน้า มันไม่สำคัญเท่าใดของแรมคือฟรี สำหรับขีดจำกัดความรับผิดชอบเฉพาะจำนวน RAM ที่ ติดตั้งเท่านั้นที่สำคัญ คุณสามารถใช้งานได้ถึงขีด จำกัด แม้ 90% ของ RAM ว่างหรือว่าง

Commit charge เป็นจำนวนหน่วยความจำเสมือนไม่ใช่ทางกายภาพ สมมติว่าโปรแกรมของฉันขอให้มีการมอบหมาย 2 GB แต่จากนั้นจะเข้าถึงได้เพียง 0.5 GB เท่านั้น ส่วนที่เหลืออีก 1.5 GB จะไม่เกิดความผิดพลาดไม่เคยถูกกำหนดให้กับ RAM ดังนั้นการใช้ RAM จะไม่สะท้อนถึง 2 GB เพียง 0.5 GB เท่านั้น

แต่ถึงกระนั้น "ระบบกระทำ" เพิ่มขึ้น 2 GB เพราะระบบมี "มุ่งมั่น" ว่าจะมีสถานที่ที่จะถือ 2 GB ของฉันถ้าฉันต้องการจริงทั้งหมด ความจริงที่ว่าในการรันโปรแกรมใด ๆ ฉันไม่จำเป็นต้องลองใช้มันทั้งหมดไม่ได้ช่วยอะไร ฉันขอ 2 GB และผลตอบแทนที่ประสบความสำเร็จจากการโทรนั้นบอกฉันว่าระบบปฏิบัติการ "มุ่งมั่น" - คือสัญญา - ว่าฉันสามารถใช้พื้นที่ที่อยู่เสมือนจำนวนมาก ระบบปฏิบัติการไม่สามารถทำตามสัญญาได้เว้นแต่จะมีที่ให้เก็บทุกอย่างไว้

ดังนั้น: นำ pagefile ของคุณกลับมาเพิ่ม RAM เพิ่มเติมหรือเรียกใช้ข้อมูลน้อยลงในครั้งเดียว หรือการรวมกันของทั้งสาม นี่เป็นตัวเลือกสำหรับหลีกเลี่ยงข้อผิดพลาด "หน่วยความจำเหลือน้อย" และ "หน่วยความจำไม่เพียงพอ"

ดูคำตอบของฉันที่นี่ (นานกว่า) และที่นี่ (นานกว่า)


3
โดยเฉพาะก่อนที่ Windows จะจัดสรรหน่วยความจำมันต้องการที่จะรับประกันได้ว่าจะสามารถจัดสรรหน่วยความจำเหล่านี้ได้เมื่อมีการใช้งาน แม้ว่าการจัดสรรจะไม่ได้ใช้อย่างสมบูรณ์ Windows จะปฏิเสธที่จะจัดสรรเพิ่มเติมหากไม่สามารถรับประกันได้ ไฟล์หน้าไม่ว่าจะใช้หรือไม่ก็ตามจะมีพื้นที่เก็บข้อมูลสำรองเพิ่มเติม
Bob

4

เนื่องจากการทดสอบการจัดสรรหน่วยความจำในบทความที่http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/แสดงให้เห็นว่า Windows เป็นระบบที่จะล้มเหลวในการจัดสรรหน่วยความจำขนาดใหญ่ หากการจัดสรรดังกล่าวพร้อมกับการจัดสรรก่อนหน้านี้ทั้งหมด (แนวคิดที่ Microsoft เรียกว่า "ส่งมอบ") จะทำให้ยอดรวม "ส่งมอบ" เหนือผลรวมของหน่วยความจำกายภาพและผลรวมของไฟล์หน้าทั้งหมด (สลับ)

พิจารณาว่าการจัดสรรด้วยตัวเองไม่ได้ใช้หน่วยความจำจริงใด ๆ (ไม่ใช่ฟิสิคัลหรือแลกเปลี่ยน) ก่อนที่จะมีการอ่านหรือเขียนภายในพื้นที่ที่อยู่เสมือนของกระบวนการสำหรับการจัดสรรดังกล่าวข้างต้น เช่นการจัดสรร 2GB ด้วยตัวเองจะมีผลเฉพาะกับตัวเลข "Commit" (ในการพูดคุยของ Windows 7) โดยปล่อยให้ "หน่วยความจำกายภาพ" เพียงอย่างเดียว (จนกว่าจะอ่าน / เขียนภายในการจัดสรรดังกล่าวเกิดขึ้น)

เท่าที่การออกแบบระบบปฏิบัติการจะเป็นไปได้แนวทางที่เป็นทางเลือกคืออนุญาตให้มีการจัดสรรขนาดใดก็ได้ (เว้นแต่ว่าหน่วยความจำที่มีอยู่หมดไปแล้วอย่างสมบูรณ์) แล้วปล่อยให้แอปพลิเคชันล้มเหลวในการอ่าน / เขียนแทน ดู/cs/42877/when-theres-no-memory-should-malloc-or-read-write-failสำหรับรายละเอียดเพิ่มเติม


2
ใช่. อาร์กิวเมนต์สำหรับวิธีการของ Windows: มีเหตุผลที่คาดว่าโปรแกรมเมอร์จะตรวจสอบสถานะของ malloc (หรือใน Win32, VirtualAlloc) เมื่อการเรียกนั้นประสบความสำเร็จโปรแกรมสามารถวางใจได้ว่าการจัดสรร vas นั้นสามารถใช้งานได้และจะยังคงอยู่จนกว่าจะมีฟรีหรือ VirtualFree ที่สอดคล้องกัน วิธีอื่นการอ่านและเขียนหน่วยความจำปกติ (เช่นการยกเลิกการลงทะเบียนตัวชี้) สามารถเพิ่มข้อยกเว้นการเข้าถึงหน่วยความจำได้ แต่โปรแกรมเมอร์ไม่คาดว่าจะต้องตรวจสอบสถานะหลังจากตัวชี้ทุกข้อผิดพลาด พวกเขาจะไม่ส่งคืนสถานะดังนั้นจะต้องดำเนินการกับตัวจัดการข้อยกเว้น น่าเกลียด
Jamie Hanrahan

2

หน่วยความจำที่มีอยู่ไม่ใช่สิ่งที่คุณคิดว่ามันจะเป็น มันไม่ได้ใช้เป็นไฟล์แคชของกระบวนการที่ถูกยกเลิกเมื่อเร็ว ๆ นี้หรือกระบวนการที่ถูกตัดทอนซึ่งบังคับให้หน่วยความจำบางส่วนกับกระบวนการอื่น ๆ พวกเขาสามารถถูกเรียกกลับไปที่จุดประสงค์ดั้งเดิม ดูรายละเอียดเพิ่มเติม

http://support.microsoft.com/kb/312628

ในการที่จะไม่มีไฟล์หน้านี้มันแย่มาก Windows ลดระดับลงอย่างไม่ดีหากไม่มี โปรดจำไว้ว่าแม้กระทั่งไฟล์ที่เรียกใช้งานได้จะใช้เป็นไฟล์สวอปเมื่อไม่มีไฟล์หน้า แม้ว่าไดรฟ์จะช้ากว่าการมีไฟล์เพจจนกว่าคุณจะได้หน่วยความจำมากถึง 8 ถึง 16 กิ๊ก บางคนคิดว่าแม้แต่ windows 7 ก็ยังสามารถทำงานได้โดยที่ไม่มีใคร

ฉันให้เครื่องเก่าเป็นประจำโดยการทำบางสิ่ง ทำความสะอาดฮาร์ดไดรฟ์ให้ได้มากที่สุด คัดลอกสิ่งที่คุณสามารถลบออกชั่วคราวจากไดรฟ์ลงในการสำรองข้อมูล ลบแอปพลิเคชันที่คุณไม่ต้องการ ลบแอพสามารถติดตั้งใหม่

เมื่อสิ่งที่ทำเสร็จแล้วจัดเรียงข้อมูลบนฮาร์ดดิสก์ของคุณ ณ จุดนี้สร้างไฟล์หน้าของคุณใหม่ มันจะอยู่ใกล้กับด้านหน้าของไดรฟ์มากที่สุดเท่าที่จะเป็นไปได้ สร้างขนาดคงที่ประมาณ 1.5 เท่าของหน่วยความจำ ตามกฎของฉันฉันมักจะเห็นขนาดระหว่างหน่วยความจำ 1 ถึง 3 ครั้ง สิ่งนี้จะช่วยเพิ่มความเร็วเล็กน้อยในตำแหน่งปกติที่จะวางไว้

ฉันใช้ defusager ของ auslogic ฟรี (โฆษณาสำหรับเครื่องมือเพิ่มเติม) มีอีกหลายอย่างที่ทำเช่นนี้ด้วย ตรวจสอบ defragers ที่ portableapps.com มันปรับดิสก์โดยการวางไฟล์ที่เข้าถึงล่าสุดใกล้กับด้านหน้าของไดรฟ์เพื่อให้เข้าถึงได้เร็วขึ้น มันจะแสดงตำแหน่งของไฟล์หน้าเพื่อให้คุณสามารถดูว่าคุณย้ายไปไว้ที่ 25% สูงสุดของไดรฟ์หรือไม่

หลังจากนั้นติดตั้งแอพและคัดลอกข้อมูลของคุณกลับมา

ฉันจะบอกว่าคุณได้รับเพิ่ม 10 หรือ 20% แต่คุณค่าหลักคือความลังเลใจมากมายที่หายไปสำหรับประสบการณ์ที่ราบรื่น


3
ใช้การทดสอบบางอย่างมันชัดเจนสำหรับฉันว่าเมื่อดิสก์ช้าเกินไปการไม่มีไฟล์เพจจะทำให้ระบบเร็วขึ้น ฉันสามารถบอกความแตกต่างของหลายวินาทีในงานง่าย ๆ เช่นการสลับแอป
Jason Oviedo

@ Mark คุณเข้าใจผิด ระบบ Windows ส่วนใหญ่ทำงานด้วย pagefile (เพราะเป็นวิธีที่ Windows ใช้งานตามค่าเริ่มต้นด้วยเหตุผลที่ดีและเพียงพอ) และเกือบทั้งหมดใช้ดิสก์ความเร็วใกล้เคียงกัน และแทบไม่มีใครแสดงปัญหาดังกล่าว ปัญหาไม่ใช่ "หน้าไฟล์" นั่นเป็นเพราะคุณมี RAM ไม่เพียงพอ โปรดทราบว่าการกำจัด pagefile ไม่ได้เป็นการลบเพจจิ้งและจากดิสก์ - มันจะกำจัดหนึ่งในหลายร้อยไฟล์โดยทั่วไปที่เกี่ยวข้องกับเพจ
เจมี่ Hanrahan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.