ผ่านการเชื่อมต่อกิกะบิต Teracopy ทำได้ 31MB / s แต่ Windows 8 ทำได้ที่ ~ 109MB ต่อวินาทีหรือไม่
อะไรทำให้เกิดสิ่งนี้ และฉันสามารถเปิดใช้งานความเร็วดังกล่าวผ่าน Teracopy ได้หรือไม่? ฉันขุดคุณสมบัติพิเศษที่ Teracopy มีอยู่จริง ๆ แล้วจะพลาดทันที: D
สองคำ: การตรวจสอบและแคช
คำอธิบายทางเทคนิค
นี่เป็นขั้นตอนทั่วไปสำหรับการคัดลอกไฟล์ด้วย Windows Explorer:
- อ่านกลุ่มข้อมูลจากไดรฟ์ต้นทางไปยังหน่วยความจำ
- ส่งก้อนข้อมูลผ่านระบบ
- เขียนชิ้นข้อมูลลงในไดรฟ์ปลายทาง
- หากยังไม่เสร็จให้กลับไปที่ขั้นตอนที่ 1
ดูเหมือนง่ายและสั้นพอ ด้วยอัลกอริธึมการถ่ายโอนนี้แต่ละไบต์ของไฟล์จะได้รับการประมวลผลเพียงสองครั้ง: อ่านหนึ่งครั้งเขียนหนึ่งครั้ง
แต่นอกจากนี้ Windows ใช้หน่วยความจำ (เช่นเดียวกับไดรฟ์เอง) เพื่อแคชข้อมูลบางอย่าง ดังนั้นแทนที่จะรอให้ชิ้นก่อนหน้าเสร็จสิ้นการเขียนและจากนั้นอ่านกลุ่มถัดไปจะสามารถอ่านกลุ่มชิ้นใหม่ได้ในขณะที่กลุ่มก่อนหน้ายังคงถูกเขียนอยู่ เห็นได้ชัดว่านี่ไม่สามารถหยุดยั้งได้ตลอดไป แต่ Windows สามารถใช้หน่วยความจำว่างที่เหลือทั้งหมดเป็นบัฟเฟอร์ชั่วคราวเพื่อเก็บส่วนใหญ่ถ้าไม่ใช่ไฟล์ทั้งหมดที่กำลังอ่านในหน่วยความจำ
คุณสามารถเห็นการดำเนินการแคชได้โดยการคัดลอกไฟล์ขนาดใหญ่หรือโฟลเดอร์ที่มีไฟล์จำนวนมากจากไดรฟ์หนึ่งไปอีกไดรฟ์หนึ่งจากนั้นเปรียบเทียบทั้งสองทันที การเปรียบเทียบจะมากได้เร็วขึ้นที่จุดกว่าถ้าคุณทำมันได้ในภายหลังเพราะแฟ้ม (s) ยังคงอยู่ในหน่วยความจำที่จึงเป็นสิ่งที่ไม่จริงพวกเขาอ่านจากไดรฟ์ (s)
เนื่องจากหน่วยความจำเร็วมากและความเร็วในการอ่านมีแนวโน้มที่จะเร็วกว่าความเร็วในการเขียนเล็กน้อยดังนั้นอัตราการถ่ายโอนสูงสุดจึงถูก จำกัด ด้วยความเร็วในการเขียนของไดรฟ์ปลายทางเท่านั้น
Teracopy สามารถทำสองสิ่งที่อาจทำให้การถ่ายโอนไฟล์ช้าลงซึ่ง Explorer ไม่ทำ:
ซึ่งแตกต่างจาก Explorer ที่ตรวจสอบข้อผิดพลาดพื้นฐานระหว่างการถ่ายโอนเท่านั้น Teracopy สามารถตรวจสอบได้ว่าข้อมูลถูกเขียนอย่างถูกต้องไปยังไดรฟ์ปลายทางเพื่อป้องกันข้อมูลเสียหายที่อาจเกิดขึ้นเนื่องจากปัญหาในสื่อโอนถ่ายข้อมูล ) หรือตัวไดรฟ์ (เซกเตอร์เสียเป็นต้น) การทำเช่นนี้หมายความว่าจะต้องอ่านไฟล์จากปลายทางเพื่อเปรียบเทียบกับต้นฉบับ
ขึ้นอยู่กับอัลกอริธึมที่ใช้และขนาดของไฟล์การตรวจสอบสามารถปรับให้เหมาะสมต่ำสุด (แต่ไม่น้อยกว่า) การทำงานของไดรฟ์สามไฟล์สำหรับแต่ละไฟล์ / ไฟล์ -chunk เมื่อเทียบกับ Explorer ที่สอง: อ่านไฟล์จากแหล่งที่มา ไฟล์ไปยังปลายทางและอ่านไฟล์จากปลายทาง
ดูสิ่งที่เกิดขึ้นเมื่อคุณคัดลอกไฟล์ด้วย Teracopy (ด้วยอัลกอริทึมที่เหมาะกับ HDD):
- อ่านอันจากไดรฟ์ต้นทาง
- แฮชอันที่อ่านจากไดรฟ์ต้นทาง
- ส่งก้อนข้อมูลผ่านระบบ
- เขียนไปยังไดรฟ์ปลายทาง
- ล้างแคช
- อ่านกลุ่มข้อมูลจากไดรฟ์ปลายทาง
- แฮชอันจากไดรฟ์ปลายทาง
- เปรียบเทียบแฮช
- กำหนดขั้นตอนต่อไป
- หากแฮชไม่ตรงกันให้ข้อผิดพลาดและแจ้งให้ผู้ใช้ดำเนินการ
- หากแฮชตรงกันและไม่เสร็จให้กลับไปที่ขั้นตอนที่ 1
ปัญหาคือถ้าคุณแคชไฟล์ระหว่างการถ่ายโอนการเปรียบเทียบจะไม่มีประโยชน์เพราะคุณไม่ได้อ่านข้อมูลจริงในไดรฟ์ปลายทางคุณกำลังอ่านสำเนาที่แคชในหน่วยความจำจากแหล่งที่มา ดังนั้นเพื่อยืนยันอย่างถูกต้องคุณต้องล้างแคช ซึ่งสามารถทำได้หลังจากการอ่านและการเขียนแต่ละครั้ง (ซึ่งเป็นการดำเนินการพิเศษที่จะสิ้นสุดการทำเวลานับไม่ถ้วนสำหรับไฟล์ที่มีขนาดสำคัญใด ๆ ) หรือเพียงครั้งเดียวหลังจากถ่ายโอนไฟล์ทั้งหมด
ตามภาพหน้าจอด้านล่าง TeraCopy ทำการตรวจสอบความถูกต้องหลังจากถ่ายโอนไฟล์ไม่ใช่ระหว่างนั้น ซึ่งหมายความว่าจะใช้อัลกอริทึมการถ่ายโอน CPU / RAM ที่ปรับให้เหมาะสมนี้แทน:
- อ่านอันจากไดรฟ์ต้นทาง
- ส่งก้อนข้อมูลผ่านระบบ
- เขียนไปยังไดรฟ์ปลายทาง
- หากยังไม่เสร็จให้กลับไปที่ขั้นตอนที่ 1
- คัดลอกเสร็จแล้วจึงล้างแคชและตรวจสอบความถูกต้อง
- อ่านอันจากไดรฟ์ต้นทาง
- แฮชอันจากไดรฟ์ปลายทาง
- อ่านอันจากไดรฟ์ปลายทาง
- แฮชอันจากไดรฟ์ปลายทาง
- เปรียบเทียบแฮช
- กำหนดขั้นตอนต่อไป
- หากแฮชไม่ตรงกันให้ข้อผิดพลาดและแจ้งให้ผู้ใช้ดำเนินการ
- หากแฮชตรงกันและไม่เสร็จให้กลับไปที่ขั้นตอนที่ 6
ในขณะที่อัลกอริทึมนี้ทำให้เครียดน้อยกว่าเล็กน้อยบน CPU และ RAM มันยังทำให้เครียดมากขึ้นในไดรฟ์เพราะตอนนี้แต่ละไฟล์จะต้องดำเนินการสี่ครั้ง: อ่านไฟล์ทั้งหมดจากแหล่งที่มาเขียนไปยังปลายทาง จากนั้นอ่านอีกครั้งจากแหล่งที่มาและอีกครั้งจากปลายทาง
(หาก TeraCopy ได้รับการปรับให้เหมาะสมสำหรับการถ่ายโอนเครือข่ายก็สามารถหลีกเลี่ยงการส่งไฟล์ทั้งหมดเป็นครั้งที่สองสำหรับการตรวจสอบและส่งเฉพาะแฮชที่มีขนาดเล็กกว่ามาก แต่ไม่ปรากฏว่าเป็นกรณีนี้และไดรเวอร์เครือข่าย เป็นไดรฟ์ในเครื่องดังนั้นจึงอ่านแหล่งที่มาอีกครั้ง)
ตามค่าเริ่มต้น TeraCopy จะไม่ตรวจสอบหรือใช้แคช การไม่ตรวจสอบจะทำให้การถ่ายโอนเร็วขึ้น (หรือมากกว่านั้นถูกต้องไม่ช้าลง) ในขณะที่การไม่ใช้แคชจะทำให้การถ่ายโอนช้าลง
ใบสมัคร
ในการกำหนดผลลัพธ์ความเร็วเฉพาะของคุณคุณจะต้องตรวจสอบการตั้งค่าของคุณเพื่อดูว่าคุณได้ทำการเปลี่ยนแปลงหรือไม่ จากนั้นคุณสามารถลองประมาณความเร็วที่คุณจะได้รับด้วยการตั้งค่าที่แตกต่างกัน (โปรดทราบว่าพวกมันอาจจะมีปฏิกิริยาโต้ตอบดังนั้นจึงไม่ใช่เรื่องง่ายในการเพิ่มหรือลบ)
ที่กล่าวมาลองคำนวณคร่าวๆโดยใช้หมายเลขของคุณ:
- การถ่ายโอนไฟล์ในเครื่อง: 875Mbps (เช่นความเร็วของไดรฟ์)
- ความเร็วเครือข่าย: 1Gbps = 119.21 MBps
- คัดลอกผ่าน Windows Explorer: 109MBps
- คัดลอกผ่าน TeraCopy: 34MBps
ทันทีที่เราพบว่าการถ่ายโอนไฟล์ของ Explorer ใกล้จะถึงปริมาณงานของเครือข่ายของคุณแล้ว ลิงก์ 1Gbps เท่ากับ 1,000,000,000 บิตต่อวินาทีซึ่งในหน่วยไบนารี่ไบต์ของไบต์คือ 119MBps Explorer กำลังตอกบัตร 109MBps และ 10MBps ที่เหลือ (ซึ่งเพียงพอสำหรับค่าสูงสุด ก่อนหน้าของคุณ:^Þ
) ที่สามารถทำได้โดยง่ายโดยใช้โอเวอร์เฮดโหลดพื้นหลังและการแตกแฟรกเมนต์
(เนื่องจากอัตราการถ่ายโอนใกล้เคียงกับความเร็วเครือข่ายเราจึงสามารถคาดการณ์ได้ว่าการถ่ายโอนไฟล์ของ Explorer เป็นแบบทางเดียวและส่งสำเนาไฟล์แต่ละไฟล์เพียงไฟล์เดียว) Explorer ได้รับ 110MBps ต่อการเข้าถึงไฟล์สองไฟล์ต่อไฟล์
ตอนนี้สำหรับ TeraCopy ดูเหมือนว่า TeraCopy จะได้ความเร็วเกือบหนึ่งในสามของ Explorer
ขึ้นอยู่กับว่ากล่องโต้ตอบการตั้งค่าของมันถูกต้องระบุอัลกอริทึมที่ใช้แล้ว TeraCopy จริง ๆ แล้วสามารถส่งไฟล์ต้นฉบับทั้งหมดสองครั้งเพื่อให้สามารถตรวจสอบการคัดลอก ทันทีนี้จะลดปริมาณงานลงครึ่งหนึ่ง ถ้าแคชเปิดอยู่นั่นก็จะลดความเร็วลงเช่นกันเพราะต้องรอให้การเขียนแต่ละครั้งเสร็จสิ้นก่อนจึงจะสามารถส่งก้อนใหม่ได้ เมื่อรวมกับการตรวจสอบก็สามารถทำให้มันลดลงมากยิ่งขึ้น
อัตราการถ่ายโอนของคุณที่ 34MBps นั้นสมเหตุสมผลถ้าคุณมีการยืนยันและแคช หากคุณปิดการตรวจสอบและแคชคุณควรได้รับเช่นเดียวกับ Explorer (คุณยังอาจได้รับน้อยกว่าหรือเล็กน้อยขึ้นอยู่กับรหัสการถ่ายโอนไฟล์ที่ TeraCopy ใช้แตกต่างจากที่ใช้ใน Explorer)
หากคุณอยู่ในอารมณ์ที่จะถ่ายโอนข้อมูลเกือบ 10GB คุณสามารถลองเปลี่ยนการตั้งค่าและทำซ้ำการถ่ายโอนสำหรับการเปลี่ยนลำดับแต่ละสี่ครั้งและจดบันทึกความเร็วที่คุณได้รับ (เพื่อความปลอดภัยสั่งซื้อเพื่อให้แคชนั้น ระหว่างวิ่ง: V+C+, V+C-, V-C+, V-C-
)