หลังจากการคัดลอกไม่กี่นาทีก็จะช้าลงเรื่อย ๆ ทำไม?
เช่นเริ่มต้นด้วย 20 MByte / วินาทีและเมื่อมันเสร็จแล้วมันจะอยู่ที่ 10 MByte / s
ไฟล์ต่างๆ, ใหญ่, เล็ก, ฯลฯ
UPDATE: คำถามเกี่ยวกับระบบปฏิบัติการต่าง ๆ ดังนั้นจึงเป็น "คำถามทั่วไป"
หลังจากการคัดลอกไม่กี่นาทีก็จะช้าลงเรื่อย ๆ ทำไม?
เช่นเริ่มต้นด้วย 20 MByte / วินาทีและเมื่อมันเสร็จแล้วมันจะอยู่ที่ 10 MByte / s
ไฟล์ต่างๆ, ใหญ่, เล็ก, ฯลฯ
UPDATE: คำถามเกี่ยวกับระบบปฏิบัติการต่าง ๆ ดังนั้นจึงเป็น "คำถามทั่วไป"
คำตอบ:
พฤติกรรมนี้ไม่เฉพาะเจาะจงกับแฟลชไดรฟ์ของคุณคุณสามารถดูได้จากฮาร์ดไดรฟ์เช่นกัน มันเกี่ยวข้องกับกลไกการแคชระบบปฏิบัติการและดิสก์ส่วนใหญ่ใช้เพื่อเร่งความเร็วในการเขียนขนาดเล็ก
20mb / s ที่คุณเห็นคือข้อมูลที่ถูกเขียนไปยังดิสก์แคช (โดยปกติจะรวดเร็ว แต่มีหน่วยความจำขนาดเล็ก) เมื่อแคชนี้เต็มแล้วจะต้องถูกฟลัชไปที่ดิสก์ - และตอนนี้คุณกำลังถูกคอขวดโดยดิสก์ที่ช้ากว่า
ตัวอย่างที่ 1: เอฟเฟกต์นั้นเด่นชัดจริงๆเมื่อคุณมีคอนโทรลเลอร์ที่มีแคชขนาดใหญ่ (เช่นคอนโทรลเลอร์ RAID5 ที่ดี) ซึ่งสามารถแคชข้อมูลได้ ~ 500mb อย่างรวดเร็วก่อนที่จะต้องล้างข้อมูลลงดิสก์
ตัวอย่างที่ 2: คุณสามารถดูแคชขณะเล่นหากคุณดึงแฟลชไดรฟ์ออกในเวลาเดียวกันการคัดลอกไฟล์ "เสร็จสิ้น" ในเวลานี้ไฟล์ของคุณจะถูกแบ่งระหว่างดิสก์และแคชดังนั้นจึงมีการคัดลอก "เสร็จสิ้น" เท่าที่ระบบปฏิบัติการกังวล แต่ตัวควบคุมดิสก์ยังคงต้องเขียนสิ่งที่เหลืออยู่ในแคชลงในดิสก์ หากคุณใส่แฟลชไดรฟ์กลับเข้าไปใหม่และตรวจสอบไฟล์คุณจะเห็นว่ามันไม่ได้มีแค่นั้น
คำเตือน: ตัวอย่างเหล่านี้จะไม่ทำงานหากคุณไม่ได้เปิดใช้งานแคชการเขียนในระบบปฏิบัติการ / บนดิสก์
เพิ่มเติมหากไม่ใช่การแคชดิสก์ในที่ทำงานอาจเป็นไปได้ว่าสิ่งที่คุณเห็นคือผลกระทบของการแตกแฟรกเมนต์ ในขณะที่ดิสก์มีพื้นที่ว่างที่ต่อเนื่องน้อยกว่าและฟูลเลอร์มีขนาดฟูลเลอร์น้อยลงและระบบไฟล์ต้องทำงานหนักขึ้นเพื่อค้นหาตำแหน่งที่จะวางไฟล์ของคุณ
ในขณะที่การแคชจะทำให้บางสิ่งนี้มันไม่ได้เป็นเพียงปัจจัยเดียว หากการแคชเป็นเพียงปัจจัยเดียวเราคาดว่าความเร็วในการเขียนจะลดลงอย่างรวดเร็วจากหลายร้อย MB / s ไปที่ความเร็วการเขียนที่แท้จริงของไดรฟ์อย่างรวดเร็วมากและอยู่ที่นั่นตลอดเวลาที่เหลือของการเขียน อย่างไรก็ตามนี่ไม่ใช่สิ่งที่ฉันสังเกตเห็นเมื่อทำการถ่ายโอนจำนวนมากไปยังและจากดิสก์ (เช่นการเบิร์นอิมเมจสำหรับบูต) สิ่งที่ฉันสังเกตคือความเร็วจะลดลงตลอดระยะเวลาการทำงานทั้งหมด
การชะลอตัวนี้เกิดจากการ remanence ข้อมูลบนชิปแฟลชที่ใช้ในการจัดเก็บข้อมูลที่จำเป็นที่บล็อกบางส่วนจะถูกเขียนไปมากกว่าหนึ่งครั้ง
ภายในชิปแฟลชมีบล็อกข้อมูลที่สามารถเขียนได้ เมื่อเขียนมีเพียงสองสิ่งที่คอมพิวเตอร์ทำได้: มันสามารถลบทั้งบล็อกหรือเปลี่ยนบางส่วน (หรือทั้งหมด) ของบิตในบล็อกจาก 0 เป็น 1
อย่างไรก็ตามบล็อกเหล่านั้นบางส่วนนั้นดีกว่าบล็อกอื่นโดยเฉพาะอย่างยิ่งในแฟลชไดรฟ์คุณภาพต่ำและดังนั้นเมื่อเขียนข้อมูลใหม่ลงไปบางบิตอาจเปลี่ยนกลับเป็น 0 ด้วยตนเองหลังจากเขียนเสร็จและไม่ ไม่ต้องเปลี่ยน ดังนั้นเมื่อเขียนไปยังบล็อกระบบปฏิบัติการจำเป็นต้องตรวจสอบเพื่อให้แน่ใจว่าข้อมูลทั้งหมดถูกเขียนอย่างถูกต้องและถ้ามันไม่ได้มีการทำซ้ำบล็อกโดยการเขียนข้อมูลเดียวกันไปยังบล็อกเดียวกันสองหรือสามครั้ง จนกระทั่งข้อมูลติด
ดังนั้นเมื่อคอมพิวเตอร์ของคุณกำลังเขียนข้อมูลจำนวนมากไปยังแฟลชไดรฟ์นี่คือคำอธิบาย (ไม่แม่นยำอย่างสมบูรณ์ แต่ดีพอ) สำหรับวิธีการ:
เมื่อคอมพิวเตอร์เขียนไปยังไดรฟ์จะมีการรายงานอัตราการเขียนบล็อกลงในไดรฟ์เป็นครั้งแรก เนื่องจากมันจะต้องเขียนบล็อกก่อนหน้านี้ใหม่ในเวลาเดียวกันปริมาณงานทั้งหมดที่สามารถใช้สำหรับบล็อก Virgin จะลดลงตามจำนวนของการเขียนซ้ำที่ต้องเพิ่มขึ้นอีกด้วย ดังนั้นความเร็วในการเขียนจะลดลงเมื่อเวลาผ่านไป
เมื่อไฟล์ถูกเขียนไปยังไดรฟ์ไม่ว่าจะเป็นแฟลชไดรฟ์ USB หรือฮาร์ดไดรฟ์ข้อมูลจะไม่ / ไม่เคยอ่านกลับเพื่อดูว่ามันตรงกับ ที่จะใช้เวลาตลอดไป การตรวจสอบการเขียนจะกระทำโดยฮาร์ดแวร์ (การตรวจสอบความซ้ำซ้อนแบบวนซ้ำ) และหากเกิดข้อผิดพลาดจะมีการโพสต์กลับไปที่แอปพลิเคชันจากฮาร์ดแวร์ที่ตรวจพบข้อผิดพลาด การหยุดกลางคันที่เกิดขึ้นและช้าลง (แม้กระทั่งหยุดชั่วคราว) เกิดจากการเขียน CPU เร็วกว่าอุปกรณ์ที่สามารถจัดการได้ คุณจะไม่พบสิ่งนี้เกิดขึ้นกับฮาร์ดไดรฟ์ภายใน คุณจะไม่เห็นสิ่งที่เกิดขึ้นจริงบน Windows OS แต่บน Linux คุณจะเห็นว่า CPU หยุดชั่วคราวจนกว่าฮาร์ดแวร์ USB จะบอกว่าตกลงเพื่อดำเนินการต่อ