จะเกิดอะไรขึ้นเมื่อการเชื่อมต่ออินเทอร์เน็ตเร็วกว่าความเร็วในการเขียนที่เก็บข้อมูล?


28

หากพยายามดาวน์โหลดไฟล์ด้วยความเร็ว 800 Mb / s (100 MB / s) ลงบนฮาร์ดไดรฟ์ที่มีความเร็วในการเขียน 500 Mb / s (62.5 MB / s) จะเกิดอะไรขึ้น ระบบจะ จำกัด ความเร็วในการดาวน์โหลดหรือไม่


5
นี่คือและได้รับตั้งแต่เริ่มต้นของเครือข่ายสถานการณ์ทั่วไปโดยสิ้นเชิงเมื่อคุณอยู่ในเครือข่ายที่รวดเร็วเช่นในมหาวิทยาลัยนอกเวลาไม่ว่าง
ปีเตอร์ - Reinstate Monica

4
เนื่องจากคุณสามารถตั้งโปรแกรมคุณสามารถสังเกตได้ด้วยตนเอง เขียนเซิร์ฟเวอร์และไคลเอนต์ TCP แบบง่าย (คุณควรจะสามารถหาตัวอย่างสำหรับซ็อกเก็ตไลบรารีของภาษาที่คุณเลือก) ให้บริการส่งข้อมูลเร็วเท่าที่จะทำได้และแก้ไขไคลเอนต์เพื่ออ่านข้อมูลที่ความเร็วที่ระบุเท่านั้น (นอนระหว่างการอ่าน) ตรวจสอบว่าได้รับข้อมูลครบถ้วน คุณสามารถสังเกตแพ็คเก็ตที่ส่งด้วย wireshark หรือคล้ายกัน
Carsten S

3
หลังจากมีประสบการณ์ตามที่อธิบายไว้ในโพสต์ของ @ PeterA.Schneider ฉันสามารถบอกคุณได้ว่าคุณต้องคำนึงถึงบัฟเฟอร์ RAM ของระบบปฏิบัติการ คุณจะสามารถเก็บข้อมูลที่ดาวน์โหลดไว้ไว้ที่ความเร็วของ RAM ได้จนกว่าจะเต็ม (โดยปกติเป็นพันเมกะไบต์ต่อวินาที)
ไม่มีใคร

@Nobody และแน่นอนว่ามีท่อไร้สาระที่ประกอบขึ้นเป็นกระดูกสันหลังของอินเทอร์เน็ตที่ส่งข้อมูลอย่างรวดเร็วจน RAM ในคอมพิวเตอร์ทั่วไปของคุณไม่สามารถรักษาได้!
Cort Ammon - Reinstate Monica

คอมพิวเตอร์ของคุณจะสร้างคำขอ ICMP บอกให้มันช้าลง อย่างไรก็ตามด้วยความเร็วที่น้อยคุณอาจได้รับ SSD หรือ M.2 ssd และตอนนี้ความเร็วในการเขียนของคุณสูงถึง 100mb / s จะง่าย M.2 บางตัวเป็น 1500MB / s เขียน ใส่ 2 หรือมากกว่าใน RAID และคุณสามารถเพิ่มความเร็วได้หลายครั้ง SSD ธรรมดาสามารถ 300-450MB / s ขึ้นอยู่กับความจุและยี่ห้อ storagereview.com/samsung_960_pro_m2_nvme_ssd_review
cybernard

คำตอบ:


41

โปรโตคอลจำนวนมากรวมถึง TCP ซึ่งเป็นโปรโตคอลที่ใช้กันอย่างแพร่หลายบนอินเทอร์เน็ตใช้สิ่งที่เรียกว่าการควบคุมการไหล โฟลว์คอนโทรลหมายถึงว่า TCP จะทำให้มั่นใจได้ว่าผู้ส่งไม่ได้รับสัญญาณมากเกินไปโดยการส่งแพ็คเก็ตเร็วกว่าที่จะทำให้บัฟเฟอร์ว่าง แนวคิดคือโหนดที่รับข้อมูลจะส่งข้อเสนอแนะบางอย่างไปยังโหนดที่ส่งข้อมูลเพื่อแจ้งให้ทราบเกี่ยวกับสภาพปัจจุบัน ดังนั้นข้อเสนอแนะสองทางช่วยให้ทั้งสองเครื่องใช้ทรัพยากรได้อย่างเหมาะสมและป้องกันปัญหาใด ๆ อันเนื่องมาจากความไม่ตรงกันของฮาร์ดแวร์

https://en.wikipedia.org/wiki/Flow_control_(data)


2
... นึกคิด Bufferbloatหมายความว่ามีความเป็นไปได้ที่สวิตช์หลายตัวจะถูกจัดเก็บและรอการส่งต่อกองของแพ็กเก็ตที่เพิ่มขึ้นเรื่อย ๆ
Eric Towers

3
คุณสามารถพูดถึงว่าสิ่งนี้แตกต่าง TCP (เฮ้มันมีการควบคุมในชื่อของมัน) จาก UDP ซึ่งจะมีความสุขในการส่งโดยไม่คำนึงถึงความจุของผู้บริโภค
Peter - Reinstate Monica

5
@Fabian นี่คือสิ่งที่เกิดขึ้นตลอดเวลาอยู่แล้ว แคชฮาร์ดไดรฟ์ของระบบปฏิบัติการอนุญาตให้มีการส่งข้อมูลไปยัง HDD ได้เร็วกว่าที่เขียนลงในแคชแรมและเขียนลงดิสก์โดยเร็วที่สุด ดังนั้นขึ้นอยู่กับปริมาณของ RAM (ไม่ได้ใช้) ในเครื่องของคุณระบบปฏิบัติการอาจบัฟเฟอร์หลายสิบถึงร้อย MB ของไฟล์ใน RAM ก่อนที่จะถึงดิสก์ ขนาดแคชนั้นเป็นเรื่องประนีประนอมเนื่องจากข้อมูลที่แอพพลิเคชั่นอาจพิจารณาว่าจะคงอยู่บนดิสก์อยู่อาจไม่ใช่เวลาที่แน่นอนซึ่งอาจทำให้ข้อมูลสูญหายโดยไม่คาดคิดในกรณีที่เกิดความล้มเหลว (พลังงาน) หรือคล้ายกัน
JimmyB

2
@Fabian: สิ่งนี้คุณสามารถเห็นได้ในกล่องโต้ตอบการคัดลอกไฟล์ใน Windows จาก 8.1 เป็นต้นไป ในโหมดขยายจะแสดงอัตราการถ่ายโอนและคุณสามารถสังเกตได้ว่าครึ่งแรกของวินาทีหรือเร็วกว่านั้นมากและหากไฟล์มีขนาดใหญ่กว่าที่ถ่ายโอนในระหว่างนั้นความเร็วจะลดลงอย่างมาก อัตราคงที่ ความเร็วที่รวดเร็วในตอนเริ่มต้นนั้นเกิดจากแคช หลังจากที่กรอกข้อมูลแล้วความเร็วจะลดลง
vsz

1
@EricTowers No บัฟเฟอร์bloatจะเกิดขึ้นก็ต่อเมื่อการเชื่อมต่อเครือข่ายเป็นคอขวด (คุณอาจเห็นรูปแบบของ bufferbloat ที่ฮาร์ดไดรฟ์ซึ่งจะทำให้การทำงานของฮาร์ดไดรฟ์อื่น ๆ ช้าลง แต่จะไม่มีผลกับการเชื่อมต่อเครือข่ายอื่น)
user253751

12

อะไรจะเกิดขึ้น?

  • ไบต์ที่ไม่สามารถเขียนลง HDD ได้ทันเวลาจะถูกบัฟเฟอร์ชั่วคราวที่ใดที่หนึ่ง มีโอกาสมากที่บางคนจะถูกบัฟเฟอร์ในแอปพลิเคชันที่ "แปลง" การรับส่งข้อมูลเครือข่ายเป็นการรับส่งข้อมูล HDD (เช่นเบราว์เซอร์ของคุณ) และในกรณีที่มีการติดขัดนานกว่านั้นส่วนล่างของสแต็ก PC) จะมีบัฟเฟอร์ที่ระดับต่ำกว่าเช่นกันซึ่งจะเติมจนเต็ม
  • ข้อมูลที่มาเร็วเกินไปจะแพร่กระจายกลับไปยังผู้ส่งในบางรูปแบบ ในกรณีของ TCP / IP นี่จะหมายความว่ามีส่วนหนึ่งของโปรโตคอล TCP ซึ่งบอกผู้ส่งว่าควรหยุดส่ง หน้า Wikipedia บน TCP / IP บอกว่าดีที่สุดเมื่อพูดว่า:

    ความรับผิดชอบ [TCP] ประกอบด้วยการถ่ายโอนข้อความแบบครบวงจรโดยไม่ขึ้นกับเครือข่ายพื้นฐานพร้อมกับการควบคุมข้อผิดพลาดการแบ่งส่วนการควบคุมการไหลการควบคุมความแออัดและ ...

  • ในตอนท้ายของวัน "ระบบ" (ไม่จำเป็นต้องใช้คอมพิวเตอร์ของผู้รับ แต่ระบบทั้งหมดประกอบด้วยผู้ส่งเครือข่ายและผู้รับ) ทางอ้อมจะ "จำกัด " ความเร็วในการดาวน์โหลด ถึงแม้ว่าจะไม่มีตัวแปร "ความเร็ว" ในการดำรงอยู่ ทั้งทราฟฟิกเครือข่ายและทราฟฟิก HDD นั้นอิงกับบล็อกนั่นคือความล่าช้าระหว่างบล็อคเหล่านั้นจะยาวพอ (บนเครือข่ายที่เร็วกว่า) จนกระทั่งเน็ต "ความเร็ว" (ปริมาณงาน) โดยเฉลี่ยเท่ากับความเร็วที่ช้าลงของคุณ HDD

ระบบจะ จำกัด ความเร็วในการดาวน์โหลดหรือไม่

ไม่อย่างแท้จริง เมื่อไม่กี่สิบปีก่อนคอมพิวเตอร์สื่อสารกับความเร็วแบบซิงโครนัส (เช่นโมเด็มที่มีการตั้งค่าความเร็วคงที่) นี่คือในระดับค่อนข้างต่ำก็เกิดขึ้นวันนี้เช่นกัน เช่น DSL หรือเคเบิลโมเด็มของคุณอาจจะมีความเร็วที่กำหนดซึ่งมันสื่อสารกับส่วนประกอบอัปลิงค์ทางกายภาพโดยตรง แต่ในปี 2560 ทั้งหมดนี้มีความซับซ้อนเพียงพอที่ส่วนประกอบเกือบทั้งหมดเป็นแบบไดนามิก ในสมัยก่อน ๆ โมเด็มมักจะพูดได้ด้วยความเร็วเพียงอย่างเดียวและต้องสร้างก่อนที่จะโทรเข้ามีโปรโตคอลเครือข่ายบางอย่างเช่น ATM ที่พยายามรับเครือข่ายบริเวณกว้างแบบซิงโครนัส แต่พวกเขาก็ไม่ได้ดีนักเมื่อเทียบกับ TCP / IP

วันนี้ความเร็วที่มีประสิทธิภาพมักจะมาถึงอย่างไม่แน่นอนโดยการบัฟเฟอร์การควบคุมการไหลและอื่น ๆ

โปรดทราบว่าในตัวอย่างของคุณอาจมีผู้เข้าร่วมมากขึ้น อินเทอร์เฟซเครือข่ายอาจทำงานได้มากขึ้น (การเชื่อมต่ออื่น ๆ กับพีซีของคุณ) เครือข่ายบางส่วนระหว่างทางอาจไม่ว่าง (สมาชิกในครอบครัวท่องเว็บหรือดูวิดีโอ) HDD อาจกำลังเขียนไฟล์ขนาดใหญ่ 3 ไฟล์ในเวลาเดียวกัน ดังนั้นจึงไม่มีเหตุผลที่จะตั้ง "ความเร็ว" เป็นพิเศษซึ่งสามารถต่อยอดได้


2

การดาวน์โหลดไฟล์ (ปกติ) เกิดขึ้นบนโปรโตคอลที่เรียกว่า TCP ใน TCP ผู้ส่งจะไม่ส่งข้อมูลใด ๆ จนกว่าผู้รับจะพร้อมรับ

สิ่งที่จะเกิดขึ้นคือคอมพิวเตอร์ของคุณจะสำรอง RAM จำนวนหนึ่งเพื่อเก็บข้อมูลที่ได้รับชั่วคราวก่อนที่จะเขียนลงในฮาร์ดไดรฟ์ของคุณ (ซึ่งเรียกว่าบัฟเฟอร์) จากนั้นจะถามผู้ส่งว่ามีข้อมูลเพียงพอที่จะเติมบัฟเฟอร์ เมื่อได้รับข้อมูลก็จะเริ่มเขียนข้อมูลจากบัฟเฟอร์ไปยังฮาร์ดไดรฟ์ - อย่างไรก็ตามจะไม่ขอข้อมูลเพิ่มเติมในขณะที่บัฟเฟอร์ใกล้เต็ม

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

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