แคชระบบไฟล์ทำอะไรใน Windows 7


16

การวินิจฉัยสาเหตุที่ Git เป็นบทความที่ช้ามากมีรายการที่น่าสนใจอยู่ในนั้น:

เปิดใช้งานแคชระบบไฟล์

เลเยอร์ระบบไฟล์ของ Windows นั้นแตกต่างจากลินุกซ์อย่างแท้จริง (ซึ่งการเข้าถึงระบบไฟล์ของ Git นั้นเหมาะสมที่สุด) ในฐานะที่เป็นวิธีแก้ปัญหา Git สำหรับ Windows นำเสนอแคชของระบบไฟล์ซึ่งช่วยเร่งการทำงานในหลาย ๆ กรณีหลังจาก "เริ่มต้นการอุ่นเครื่อง" คุณสามารถเปิดใช้งานแคชระบบไฟล์ต่อที่เก็บ:

git config core.fscache true

หากฉันเปิดใช้งานตัวเลือกนี้ใน Git จะมีอะไรเปลี่ยนแปลงจริงบ้าง แคชของระบบไฟล์ใน Windows 7 มีลักษณะอย่างไรและแคชอะไรบ้าง "อุ่นเครื่องครั้งแรก" มีอะไรบ้าง?

คำตอบ:


10

นี่คือสิ่งที่git config --helpพูดว่า:

core.fscache
เปิดใช้งานการแคชข้อมูลระบบไฟล์เพิ่มเติมสำหรับการดำเนินการบางอย่าง

Git สำหรับ Windows ใช้สิ่งนี้เพื่ออ่านข้อมูลจำนวนมากและแคช lstat ของไดเรกทอรีทั้งหมด (แทนที่จะทำไฟล์ lstat ตามไฟล์)

แทนที่จะทำคำขอระบบไฟล์จำนวนมากคอมไพล์จะทำเพียงหนึ่งคำขอเพื่อรับข้อมูลเกี่ยวกับไฟล์ทั้งหมดในไดเรกทอรี

คำอธิบายทางเทคนิคเพิ่มเติมสามารถพบได้ในการคอมมิชชันที่นำมาใช้fscache:
Win32: เพิ่มแคชด้านล่างการใช้ lstat และ dirent ของ mingw

การตรวจสอบสถานะต้นไม้ทำงานค่อนข้างช้าใน Windows เนื่องจากการจำลอง lstat ช้า (git เรียก lstat หนึ่งครั้งสำหรับแต่ละไฟล์ในดัชนี) API ระบบปฏิบัติการ Windows ดูเหมือนจะดีกว่ามากในการสแกนสถานะของไดเรกทอรีทั้งหมดกว่าการตรวจสอบไฟล์เดียว

เพิ่มการใช้ lstat ที่ใช้แคชสำหรับข้อมูล lstat แคชหายไปอ่านไดเรกทอรีหลักทั้งหมดและเพิ่มลงในแคช การเรียก lstat ครั้งต่อ ๆ ไปสำหรับไดเรกทอรีเดียวกันจะได้รับบริการโดยตรงจากแคช

ยังใช้ opendir / readdir / closir เพื่อให้พวกเขาสร้างและใช้รายการไดเรกทอรีในแคช

แคชไม่ได้ติดตามการเปลี่ยนแปลงของระบบไฟล์และไม่ได้เสียบเข้ากับไฟล์ API ที่ปรับเปลี่ยนใด ๆ ดังนั้นจึงต้องเปิดใช้งานอย่างชัดเจนสำหรับฟังก์ชั่น git ที่ไม่ได้แก้ไขสำเนาการทำงาน

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