ประสิทธิภาพที่ซบเซาในไดรฟ์ 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.