Điều gì xảy ra khi kết nối internet nhanh hơn tốc độ ghi lưu trữ?


28

Nếu một người cố tải xuống một tệp với tốc độ 800 Mb / giây (100 MB / giây) vào ổ cứng với tốc độ ghi 500 Mb / giây (62,5 MB / giây), điều gì sẽ xảy ra? Hệ thống sẽ giới hạn tốc độ tải xuống?


5
Đây là, và đã có từ khi bắt đầu các mạng, một tình huống hoàn toàn phổ biến khi bạn ở trong một mạng nhanh, giống như trong một trường đại học ngoài giờ bận rộn.
Peter - Tái lập Monica

4
Vì bạn có thể lập trình, bạn có thể dễ dàng quan sát điều này. Viết một máy chủ và máy khách TCP đơn giản (bạn sẽ có thể tìm thấy các ví dụ cho thư viện ổ cắm của ngôn ngữ bạn chọn), để phục vụ phân phối dữ liệu nhanh nhất có thể và sửa đổi máy khách chỉ đọc dữ liệu đó ở tốc độ xác định (ngủ giữa đọc). Kiểm tra xem dữ liệu có được nhận nguyên vẹn không. Bạn thậm chí có thể quan sát các gói được gửi bằng wireshark hoặc tương tự.
Carsten S

3
Đã có một trải nghiệm như được mô tả trong bài đăng của @ PeterA.Schneider, tôi có thể nói với bạn rằng bạn phải tính đến bộ đệm RAM của hệ điều hành. Cho đến khi chúng được lấp đầy, bạn có thể lưu trữ dữ liệu đã tải xuống một cách hiệu quả với tốc độ của RAM. (Thường tính bằng hàng nghìn megabyte mỗi giây.)
Không ai vào

@Nobody Và, tất nhiên, luôn có những đường ống ngớ ngẩn tạo nên đường trục internet truyền dữ liệu nhanh đến mức RAM máy tính thông thường của bạn thậm chí không thể theo kịp!
Cort Ammon - Phục hồi Monica

Máy tính của bạn sẽ tạo ra yêu cầu ICMP để làm chậm nó. Tuy nhiên, với các tốc độ ít ỏi này, bạn cũng có thể nhận được SSD hoặc M.2 ssd và bây giờ tốc độ ghi của bạn rất cao 100mb / s sẽ dễ dàng. Một số M.2 là 1500MB / s ghi. Đặt 2 hoặc nhiều hơn vào một RAID và bạn có thể tăng tốc nhiều lần. SSD trơn có thể là 300-450 MB / s tùy thuộc vào dung lượng và thương hiệu. storagereview.com/samsung_960_pro_m2_nvme_ssd_review
cybernard

Câu trả lời:


41

Nhiều giao thức, bao gồm TCP, giao thức được sử dụng rộng rãi nhất trên Internet, sử dụng một thứ gọi là kiểm soát luồng. Điều khiển luồng đơn giản có nghĩa là TCP sẽ đảm bảo rằng người gửi không áp đảo người nhận bằng cách gửi các gói nhanh hơn khả năng làm trống bộ đệm của nó. Ý tưởng là một nút nhận dữ liệu sẽ gửi một số loại phản hồi đến nút gửi dữ liệu để cho nó biết về tình trạng hiện tại của nó. Vì vậy, phản hồi hai chiều cho phép cả hai máy sử dụng tối ưu tài nguyên của họ và ngăn chặn mọi sự cố do không khớp trong phần cứng của họ.

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


2
... Lý tưởng nhất. Bufferbloat có nghĩa là nhiều khả năng một số thiết bị chuyển mạch sẽ được lưu trữ và chờ đợi để chuyển tiếp một đống gói đang phát triển (có thể được giảm nhẹ phần nào bởi một giao thức chuyển giao đòi hỏi phải tiếp tục ACK).
Tháp Eric

3
Bạn có thể đề cập rằng điều này phân biệt TCP (hey, nó có quyền kiểm soát trong tên của nó) với UDP, nó sẽ vui vẻ tiếp tục gửi, bất kể năng lực của người tiêu dùng.
Peter - Phục hồi Monica

5
@Fabian Đây là những gì xảy ra mọi lúc. Bộ nhớ cache ổ cứng của HĐH cho phép dữ liệu được 'gửi' vào ổ cứng nhanh hơn nhiều so với mức có thể ghi, lấp đầy bộ đệm trong RAM và ghi vào đĩa càng sớm càng tốt. Vì vậy, tùy thuộc vào lượng RAM (chưa sử dụng) trong máy của bạn, HĐH có thể đệm khoảng vài chục đến hàng trăm MB tệp trong RAM trước khi đến đĩa. Tuy nhiên, kích thước bộ đệm là một sự thỏa hiệp, bởi vì dữ liệu mà ứng dụng có thể coi là đã tồn tại trên đĩa có thể không tồn tại trong một thời gian nhất định có thể gây mất dữ liệu không mong muốn trong trường hợp (mất nguồn) hoặc tương tự.
JimmyB

2
@Fabian: cái này bạn có thể thấy trong hộp thoại sao chép tệp trong Windows, từ 8.1 trở đi. Trong chế độ mở rộng, nó hiển thị tốc độ truyền và bạn có thể quan sát thấy rằng nửa đầu của giây trở lên rất nhanh và nếu tệp lớn hơn tốc độ có thể được chuyển trong thời gian đó, thì tốc độ giảm đáng kể, một tỷ lệ không đổi. Tốc độ nhanh lúc ban đầu là do bộ đệm. Sau khi được lấp đầy, tốc độ giảm.
vsz

1
@EricTowers Không, bộ đệm chỉ xảy ra khi kết nối mạng là nút cổ chai. (Bạn có thể thấy một hình thức đệm trên ổ cứng, điều này sẽ làm chậm các hoạt động khác của ổ cứng, nhưng nó sẽ không ảnh hưởng đến các kết nối mạng khác)
user253751

12

chuyện gì sẽ xảy ra?

  • Các byte không thể ghi vào ổ cứng kịp thời sẽ được đệm tạm thời ở đâu đó; rất có thể một số trong số chúng sẽ được đệm trong ứng dụng "chuyển đổi" lưu lượng mạng thành lưu lượng ổ cứng (tức là trình duyệt của bạn) và trong trường hợp tắc nghẽn lâu hơn, các phần cấp thấp hơn của ngăn xếp (tức là hệ thống con mạng của bạn PC) cũng sẽ có bộ đệm ở các cấp thấp hơn, sẽ lấp đầy cho đến khi đầy.
  • Thông tin dữ liệu đến quá nhanh sau đó sẽ truyền lại cho người gửi theo một cách thức nào đó. Trong trường hợp TCP / IP, điều này có nghĩa là có một phần của giao thức TCP thông báo cho người gửi rằng nó sẽ ngừng gửi. Trang Wikipedia trên TCP / IP nói tốt nhất khi nó nói:

    Trách nhiệm [TCP] của nó bao gồm chuyển tin nhắn từ đầu đến cuối độc lập với mạng bên dưới, cùng với kiểm soát lỗi, phân đoạn, kiểm soát luồng, kiểm soát tắc nghẽn và ...

  • Vào cuối ngày, "hệ thống" (không nhất thiết là máy tính của người nhận, nhưng toàn bộ hệ thống bao gồm người gửi, mạng và người nhận) sẽ gián tiếp "giới hạn" tốc độ tải xuống. Tuy nhiên, không có biến số "tốc độ" trong sự tồn tại. Cả lưu lượng mạng và lưu lượng ổ cứng đều dựa trên khối, nghĩa là độ trễ giữa các khối đó sẽ đủ dài (về phía mạng nhanh hơn) cho đến khi "tốc độ" mạng (thông lượng) trung bình giống như tốc độ chậm hơn của bạn Ổ cứng.

Hệ thống sẽ giới hạn tốc độ tải xuống?

Không theo nghĩa đen. Vài chục năm trước, máy tính thực sự giao tiếp với tốc độ đồng bộ (nghĩa là modem có cài đặt tốc độ cố định). Điều này, ở một số mức độ tương đối thấp, cũng xảy ra ngày hôm nay; tức là, DSL hoặc modem cáp của bạn có thể sẽ có một số tốc độ cài đặt mà tại đó nó giao tiếp với thành phần đường lên vật lý trực tiếp của nó. Nhưng trong năm 2017, tất cả những điều này đủ phức tạp mà hầu như tất cả các thành phần đều khá năng động. Vào thời xưa, các modem thường chỉ có thể nói một tốc độ nhất định và thậm chí phải được thiết lập trước khi quay số. Có một số giao thức mạng như ATM đã cố gắng để có được một mạng diện rộng đồng bộ, nhưng chúng không thành công lắm, so với TCP / IP.

Ngày nay, tốc độ hiệu quả thường luôn đạt được một cách ngầm định bằng cách đệm, kiểm soát dòng chảy, và như vậy.

Cũng lưu ý rằng trong ví dụ của bạn thậm chí có thể có nhiều người tham gia hơn. Giao diện mạng có thể có nhiều việc phải làm hơn (các kết nối khác với PC của bạn). Một số phần của mạng trên đường có thể bận rộn (một thành viên gia đình lướt web hoặc xem video). Ổ cứng có thể thực hiện ghi 3 tệp lớn cùng một lúc. Vì vậy, sẽ thật vô nghĩa khi đặt "tốc độ" cụ thể có thể bị giới hạn.


2

Tải xuống tệp (thường) xảy ra qua một giao thức gọi là TCP. Trong TCP, người gửi không gửi bất kỳ dữ liệu nào cho đến khi người nhận sẵn sàng nhận nó.

Điều gì sẽ xảy ra là máy tính của bạn sẽ dự trữ một lượng RAM để tạm thời giữ dữ liệu nhận được trước khi ghi nó vào ổ cứng của bạn (đây được gọi là bộ đệm). Sau đó, nó sẽ yêu cầu người gửi cho dữ liệu vừa đủ để điền vào bộ đệm. Khi nhận được dữ liệu, nó sẽ bắt đầu ghi dữ liệu từ bộ đệm vào ổ cứng - tuy nhiên, nó sẽ không yêu cầu thêm dữ liệu trong khi bộ đệm gần đầy.

Hiệu quả tổng thể là người gửi chỉ cần đợi người nhận bắt kịp trước khi tiếp tục gửi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.