ไม่มีโอกาสมากที่จะเป็นคอขวด มีค่าใช้จ่ายบางอย่างที่เกี่ยวข้องกับการเชื่อมต่อระบบไฟล์ NTFS แต่ในสถานการณ์ของคุณมันควรจะเล็กน้อย
คุณสามารถกำจัดค่าใช้จ่ายได้ด้วยการย้ายข้อมูลไปยัง SSD และไม่ใช้ junctions เลย (ซึ่งน่าจะเป็นประเด็นหลักของคำถามของคุณกับฉัน) แต่ฉันสงสัยว่าคุณสามารถวัดความแตกต่างได้
ทางแยกถูกเก็บและแคชไว้ที่ไหน
Junctionsเป็นประเภทของจุดแยกวิเคราะห์ใหม่ซึ่งเก็บไว้ใน$Extend\$Reparse
metafile (อีก metafile ที่มีชื่อเสียงมากกว่าคือ$MFT
)
เมื่อไฟล์หรือไดเรกทอรีมีจุดแยกวิเคราะห์ใหม่ที่เกี่ยวข้องกับมัน NTFS สร้างแอตทริบิวต์ชื่อ$Reparse
สำหรับจุดแยกวิเคราะห์ใหม่ แอ็ตทริบิวต์นี้เก็บรหัสการแยกวิเคราะห์ข้อมูลและข้อมูลใหม่ เพื่อให้ NTFS สามารถค้นหาจุดแยกวิเคราะห์ใหม่ได้อย่างง่ายดายบนไดรฟ์ข้อมูลแฟ้มข้อมูลเมตาที่
\$Extend\$Reparse
เก็บรายการที่เชื่อมต่อไฟล์จุดแยกวิเคราะห์ใหม่และหมายเลขรายการไดเรกทอรี MFT ไปยังรหัสจุดแยกวิเคราะห์ใหม่ที่เกี่ยวข้อง NTFS เรียงลำดับรายการตามหมายเลขรายการ MFT ใน$R
ดัชนี
แหล่งที่มา: Inside Win2K NTFS ตอนที่ 1 โดย Mark Russinovich
แผนภาพหยาบ
แหล่งที่มา: Inside Win2K NTFS ตอนที่ 1 โดย Mark Russinovich
มีความคิดเห็นที่ทางแยกถูกเก็บไว้ใน MFT และ MFT นั้นถูกแคช ตอนนี้เมื่อเรารู้ว่าทางแยกถูกเก็บไว้ที่ไหนฉันจะต้องมีแหล่งข้อมูลที่น่าเชื่อถือเพื่อสนับสนุนการเรียกร้องแคช ซึ่งฉันหาไม่เจอ
ดังนั้นฉันไม่รู้ แต่ฉันไม่คิดว่ามันสำคัญ
มีสถานการณ์ที่บันทึกไว้เมื่อ cross junction ลดประสิทธิภาพลงหรือไม่?
ใช่ARFมีปัญหาเช่นนี้ เขากำลังทำการเปรียบเทียบการลบแบตช์ไฟล์ขนาดเล็กและเมื่อการดำเนินการข้ามทางแยกปัจจัย จำกัด ไม่ได้เป็น IO (ตามที่คาดไว้) แต่เป็นซีพียูอีกต่อไป มาตรฐานนี้ยังได้รับการกล่าวถึงในรายละเอียดเกี่ยวกับGitHub