ลดการใช้หน่วยความจำ“ Metafile” หรือไม่


8

คอมพิวเตอร์ในที่ทำงานของฉัน (Windows 7 64 บิต) ใช้เวลาในการแลกเปลี่ยนหน่วยความจำหลายครั้งเมื่อฉันสลับระหว่างโปรแกรม สิ่งนี้ทำให้ฉันประหลาดใจเพราะฉันมี RAM 4 GB และโปรแกรมที่ฉันใช้ไม่ได้เป็น RAM หิวมาก (Outlook, Emacs, p4win, Firefox, เครื่องมือสร้างต่าง ๆ ) ฉันดาวน์โหลดRAMMapและมันแสดงให้เห็นถึงหน่วยความจำกิกะไบต์ที่ใช้โดย "Metafile"

จากบล็อก Sysinternals :

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

ดังนั้นฉันจึงเข้าใจว่าข้อมูล "Metafile" คืออะไร ... ฉันทำงานกับงานบิลด์ขนาดใหญ่ซึ่งประกอบด้วยไฟล์หลายแสนไฟล์ (ไม่มีอะไรที่ใหญ่มาก แต่มันเพิ่มได้มากถึงหลายกิกะไบต์) คำถามของฉันคือฉันจะลดจำนวนหน่วยความจำที่ใช้โดย "Metafile" ได้อย่างไร ฉันไม่ได้ใช้งานไฟล์เหล่านั้นทั้งหมดในคราวเดียวดังนั้นทำไม Windows จึงต้องเก็บข้อมูลไว้ใน RAM? การรีสตาร์ทเครื่องของฉันทุกครั้งที่ฉันซิงค์การสร้างใหม่นั้นน่ารำคาญจริงๆ


4
บิวด์เป็นแบบเร่งรัด IO ดังนั้น Windows จึงเก็บแคชระบบไฟล์ขนาดใหญ่ไว้เพื่อปรับปรุงประสิทธิภาพ น่าเสียดายที่เครื่องมือสร้างยังใช้หน่วยความจำจำนวนมากเช่นกันและโดยทั่วไปจะมีหนามแหลมขนาดใหญ่ซึ่งอาจทำให้เกิดการพรุ เช่นนี้เป็นการแข่งขันกับแคชระบบ ทางออกที่ดีที่สุดอาจเพิ่มหน่วยความจำมากขึ้น
tgiphil

@tgiphil เป็นที่เข้าใจได้ว่ามีการใช้งานหน่วยความจำจำนวนมากเมื่อตรวจสอบหรือสร้าง อย่างไรก็ตามมันยังคงถูกใช้งานอยู่และยังคงทำให้เกิดการฟาดฟันในเวลาต่อมาเมื่อฉันเพิ่งทำงานในพื้นที่เล็ก ๆ น่าเสียดายที่มันจะไม่ทำให้ฉันมีความจำอีกต่อไป
Jay Conrod

ฉันคิดว่า Windows 7 กำลังเพิ่มประสิทธิภาพการทำงานของคุณด้วยการแคช ดังนั้นเพื่อเพิ่มหน่วยความจำและลด swap ให้ปิดแอปพลิเคชันที่ไม่จำเป็น คุณสามารถรับหน่วยความจำที่ดีได้โดยการปิด Outlook และ Firefox เช่น หากใช้ Visual Studio และจำเป็นต้องรวบรวมเท่านั้นให้ลองสร้างบรรทัดคำสั่งแทน ฉันหวังว่านี่จะช่วยได้. BTW ด้วยหน่วยความจำต่ำมาก (6Gb ต่ำกว่า $ 100) จึงเป็นการลงทุนที่คุ้มค่า
tgiphil

คำตอบ:


4

ฉันเชื่อว่าระบบแคชจะปล่อยหน่วยความจำเมื่อจำเป็น แต่ข้อผิดพลาดอาจเกิดขึ้นได้ ด้านล่างมีการระบุความเป็นไปได้บางอย่าง

ระบบ 64- บิตของคุณจัดสรรหน่วยความจำวิดีโอในหน่วยความจำ 4GB แรก ดังนั้นหากการ์ดวิดีโอของคุณมีหน่วยความจำจำนวนมากหน่วยความจำนั้นจะหายไปตามที่อธิบายไว้ใน:
หน่วยความจำที่ใช้งานได้อาจจะน้อยกว่าหน่วยความจำที่ติดตั้งบนคอมพิวเตอร์ที่ใช้ Windows 7

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

คุณยังสามารถลองและทำสิ่งที่ตรงกันข้ามกับที่อธิบายไว้ในบทความนี้:
เพิ่มขนาดแคชหน่วยความจำ FileSystem ใน Windows 7

นอกจากนี้คุณยังสามารถลองปิดการใช้งาน Windows 7 SuperFetch

หากไม่มีสิ่งใดจะช่วยคุณได้ที่จะโพสต์ภาพหน้าจอของแท็บตัวจัดการงานที่ชื่อว่าประสิทธิภาพ


+1 ใช้สำหรับ "ปิดใช้งาน Superfetch"

ไม่มีเกรดลดลง แต่ Superfetch มีแนวโน้มที่จะเพิ่มประสิทธิภาพการทำงานของเขา - ไม่ลดลง - เนื่องจากการปฏิบัติการที่สร้างขึ้นจะถูกดำเนินการบ่อยครั้งและจะได้รับประโยชน์จากการแคช สำหรับการ์ดวิดีโอที่มีผลต่อหน่วยความจำที่มีอยู่จะไม่สามารถใช้ได้กับ Windows 7 64 บิตที่มี 4Gb เท่านั้น การ์ดแสดงผลจะถูกแมปเหนือ 4Gb ในกรณีนี้
tgiphil

@tgiphil: จากบทความ Microsoft ที่อ้างถึงข้างต้น: "การ์ดแสดงผลที่มีหน่วยความจำออนบอร์ด 256 MB หน่วยความจำนั้นต้องถูกแมปภายในพื้นที่ที่อยู่ 4 GB แรก"
harrymc

ที่องค์กรของฉันเรามีไฟล์ขนาดเล็กมากมายและเมตาไฟล์ NTFS ขนาดใหญ่ในแรม จากสิ่งที่ฉันสามารถบอกได้ Windows ไม่ได้แคช Metafile เหมือนทุกอย่างและไม่ปล่อยจาก RAM จริงๆ คอมพิวเตอร์จะใช้งานหน่วยความจำได้สูงสุด 100% จากนั้นแอปพลิเคชันทั้งหมดของคุณจะหยุดทำงานเนื่องจากหน่วยความจำไม่เพียงพอ แน่นอนว่าไม่ใช่ Windows 7 แต่เป็น Windows Server 2008 R2
ฟิล

นอกจากนี้ลิงก์ "เพิ่มไฟล์หน่วยความจำแคช" ให้คำแนะนำสิ่งที่ไม่ได้ผล ดูtweakhound.com/blog/?p=1164
ฟิล

0

Windows Server 2008 R2 ประสบปัญหา "แคช" ของ metafile เหมือนกันว่าข้อมูล metafile มากเกินไปจะถูกเก็บไว้ในหน่วยความจำที่ใช้งานอยู่ดังนั้นฟังก์ชันแคชไม่ได้รับอนุญาตให้ปล่อยหน่วยความจำนี้เมื่อมีแรงกดดันหน่วยความจำ

ฉันได้เขียนสคริปต์ powershell บนหน้า serverfault.com การใช้งาน Windows Server 2008 R2 metafile RAMที่กำหนดหน่วยความจำที่ใช้งาน metafile สูงสุดให้อยู่ในระดับที่เหมาะสม ส่วนที่เหลือจะถูกย้ายไปที่หน่วยความจำสแตนด์บายและฟังก์ชั่นแคชปกติจะสามารถจัดลำดับความสำคัญได้อย่างเหมาะสม Windows 7 x64 และ Server 2008 R2 x64 ทั้งคู่มีขีด จำกัด สูงสุดของหน่วยความจำที่ใช้งานเริ่มต้นสำหรับข้อมูล metafile ที่ 1TB ใช่ TB ไม่ใช่ GB

ตอนนี้ทำงานเรียกใช้สคริปต์ที่เว็บไซต์ของเราทั้งหมดบนเซิร์ฟเวอร์ของเราที่จัดระเบียบการสำรองข้อมูลของเว็บไซต์ซึ่งจัดการกับไฟล์นับล้านในระหว่างรอบการสำรองข้อมูลทุกวัน เซิร์ฟเวอร์สำรองเหล่านี้ยังเรียกใช้โปรแกรมจาวาหนัก (VMware vSphere), เซิร์ฟเวอร์ SQL 2 เครื่องและ WSUS ด้วยเซิร์ฟเวอร์ SQL ของตัวเอง ด้วยซอฟต์แวร์สำรองข้อมูลจะอ่านข้อมูลเมตา (ชื่อ, ขนาด, วันที่แก้ไข, สิทธิ์, คุณสมบัติ ฯลฯ ) เพื่อกำหนดรายการของไฟล์ที่จะทำการสำรองข้อมูลในการส่งผ่านข้อมูลนั้น VERY จะเติมแคชเมตาไฟล์อย่างรวดเร็ว แม้แต่ทำทุกอย่างที่พวกเขาล่องเรือไปพร้อมกับ RAM เพียง 4GB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.