ฉันกำลังดูการตั้งค่านี้:
- Windows Server 2012
- ไดรฟ์ NTFS 1 TB คลัสเตอร์ 4 KB เต็ม ~ 90%
- ~ 10M ไฟล์ที่เก็บไว้ใน 10,000 โฟลเดอร์ = ~ 1,000 ไฟล์ / โฟลเดอร์
- ไฟล์ส่วนใหญ่ค่อนข้างเล็ก <50 KB
- ไดรฟ์เสมือนโฮสต์บนดิสก์อาร์เรย์
เมื่อแอปพลิเคชันเข้าถึงไฟล์ที่จัดเก็บในโฟลเดอร์สุ่มจะใช้เวลา 60-100 ms ในการอ่านแต่ละไฟล์ ด้วยเครื่องมือทดสอบดูเหมือนว่าความล่าช้าเกิดขึ้นเมื่อเปิดไฟล์ การอ่านข้อมูลจะใช้เวลาเพียงเล็กน้อยเท่านั้น
โดยสรุปนี่หมายความว่าการอ่าน 50 ไฟล์สามารถใช้เวลา 3-4 วินาทีซึ่งมากกว่าที่คาดไว้ เขียนเสร็จในแบทช์ดังนั้นประสิทธิภาพจึงไม่มีปัญหาที่นี่
ฉันได้ทำตามคำแนะนำเกี่ยวกับ SO และ SF แล้วเพื่อให้ได้ตัวเลขเหล่านี้
- การใช้โฟลเดอร์เพื่อลดจำนวนไฟล์ต่อโฟลเดอร์ (การจัดเก็บหนึ่งล้านภาพในระบบไฟล์ )
- เรียกใช้
contig
เพื่อจัดเรียงข้อมูลโฟลเดอร์และไฟล์ ( https://stackoverflow.com/a/291292/1059776 ) - 8.3 ชื่อและเวลาเข้าถึงล่าสุดปิดใช้งาน (การกำหนดค่าระบบไฟล์ NTFS เพื่อประสิทธิภาพ )
จะทำอย่างไรกับเวลาอ่าน?
- พิจารณาไฟล์ 60-100 ms ต่อไฟล์แล้วจะโอเค (ไม่ใช่หรือ?)
- แนวคิดใดบ้างที่สามารถปรับปรุงการตั้งค่าได้
- มีเครื่องมือตรวจสอบระดับต่ำที่สามารถบอกได้ว่าใช้เวลาเท่าไรหรือไม่?
UPDATE
ดังที่ได้กล่าวไว้ในความคิดเห็นระบบรัน Symantec Endpoint Protection อย่างไรก็ตามการปิดใช้งานจะไม่เปลี่ยนเวลาอ่าน
PerfMon มีขนาด 10-20 ms ต่อการอ่าน นี่หมายความว่าไฟล์ใด ๆ ที่อ่านจะใช้เวลาประมาณ ~ 6 I / O ในการอ่านใช่ไหม? นี่จะเป็นการค้นหาแบบ MFT และการตรวจสอบ ACL หรือไม่
MFT มีขนาดประมาณ 8.5 GB ซึ่งมากกว่าหน่วยความจำหลัก