ประสิทธิภาพที่ซบเซาในไดรฟ์ NTFS ที่มีไฟล์จำนวนมาก


12

ฉันกำลังดูการตั้งค่านี้:

  • Windows Server 2012
  • ไดรฟ์ NTFS 1 TB คลัสเตอร์ 4 KB เต็ม ~ 90%
  • ~ 10M ไฟล์ที่เก็บไว้ใน 10,000 โฟลเดอร์ = ~ 1,000 ไฟล์ / โฟลเดอร์
  • ไฟล์ส่วนใหญ่ค่อนข้างเล็ก <50 KB
  • ไดรฟ์เสมือนโฮสต์บนดิสก์อาร์เรย์

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

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

ฉันได้ทำตามคำแนะนำเกี่ยวกับ SO และ SF แล้วเพื่อให้ได้ตัวเลขเหล่านี้

จะทำอย่างไรกับเวลาอ่าน?

  • พิจารณาไฟล์ 60-100 ms ต่อไฟล์แล้วจะโอเค (ไม่ใช่หรือ?)
  • แนวคิดใดบ้างที่สามารถปรับปรุงการตั้งค่าได้
  • มีเครื่องมือตรวจสอบระดับต่ำที่สามารถบอกได้ว่าใช้เวลาเท่าไรหรือไม่?

UPDATE

  1. ดังที่ได้กล่าวไว้ในความคิดเห็นระบบรัน Symantec Endpoint Protection อย่างไรก็ตามการปิดใช้งานจะไม่เปลี่ยนเวลาอ่าน

  2. PerfMon มีขนาด 10-20 ms ต่อการอ่าน นี่หมายความว่าไฟล์ใด ๆ ที่อ่านจะใช้เวลาประมาณ ~ 6 I / O ในการอ่านใช่ไหม? นี่จะเป็นการค้นหาแบบ MFT และการตรวจสอบ ACL หรือไม่

  3. MFT มีขนาดประมาณ 8.5 GB ซึ่งมากกว่าหน่วยความจำหลัก


หากต้องการออกกฎบางอย่างคุณต้องการแบ่งปันภาพหน้าจอของRAMMapหรือไม่
Tomas Dabasinskas

คุณหมายถึงตารางสรุปไฟล์หรือไม่ ตอนนี้คุณพูดถึงมันแล้วฉันเห็นไฟล์ SYMEFA.DB ที่มีหน่วยความจำ 900 MB ซึ่งเตือนฉันว่า Symantec Endpoint Protection ถูกติดตั้งบนระบบ อาจเป็นผู้ร้าย ฉันจะพยายามหาข้อมูลเพิ่มเติม
พอลบี

ที่จริงแล้วฉันสนใจการใช้งาน Metafile มากขึ้น
Tomas Dabasinskas

ตกลงเข้าใจแล้ว Metafile แสดงรวม 250 MB, 40 ทำงาน, 210 สแตน ดูเหมือนจะเป็นเรื่องปกติหรือไม่?
พอลบี

ใช่ดูเหมือนดังนั้น
Tomas Dabasinskas

คำตอบ:


5

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

  • เซิร์ฟเวอร์แสดงหน่วยความจำ 2 GB ที่มีอยู่ในตัวจัดการงานและ RamMap ดังนั้น Windows จึงตัดสินใจว่าหน่วยความจำที่มีอยู่นั้นไม่เพียงพอที่จะเก็บส่วนที่มีความหมายของข้อมูล metafile หรือข้อ จำกัด ภายในบางอย่างไม่อนุญาตให้ใช้หน่วยความจำบิตสุดท้ายสำหรับข้อมูลเมตาไฟล์

  • หลังจากอัปเกรดตัวจัดการงาน RAM จะไม่แสดงหน่วยความจำเพิ่มเติมที่ใช้ อย่างไรก็ตาม RamMap รายงานข้อมูล metafile หลาย GB ที่ถูกเก็บไว้เป็นข้อมูลสแตนด์บาย เห็นได้ชัดว่าข้อมูลสแตนด์บายสามารถส่งผลกระทบอย่างมีนัยสำคัญ

เครื่องมือที่ใช้สำหรับการวิเคราะห์:

  • fsutil fsinfo ntfsinfo driveletter:การแสดงขนาด NTFS MFT (หรือNTFSInfo )
  • RamMapเพื่อแสดงการจัดสรรหน่วยความจำ
  • การตรวจสอบกระบวนการเพื่อแสดงว่าทุกไฟล์ที่อ่านถูกนำหน้าด้วยการดำเนินการอ่านประมาณ 4 ครั้งสำหรับไดรฟ์: \ $ Mft และไดรฟ์: \ $ Directory แม้ว่าฉันไม่สามารถหาคำจำกัดความที่แน่นอนของ $ Directory ได้ แต่ดูเหมือนว่าจะเกี่ยวข้องกับ MFTเช่นกัน

ดังนั้นการเพิ่มหน่วยความจำกายภาพทำให้เวลาตอบสนองดีขึ้นหรือไม่ คุณไม่ได้กำหนดการตั้งค่ารีจิสทรีใด ๆ
D-Klotz

1
ใช่. ก่อนหน้านี้ฉันเล่นด้วยการตั้งค่ารีจิสทรี แต่ในที่สุดก็ไม่จำเป็นต้องมีการเปลี่ยนแปลงหลังจากเพิ่มหน่วยความจำ
พอลบี

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