Apa yang terjadi ketika koneksi internet lebih cepat dari kecepatan tulis penyimpanan?

28

Jika seseorang mencoba mengunduh file dengan kecepatan 800 Mb / s (100 MB / s) ke hard drive dengan kecepatan tulis 500 Mb / s (62,5 MB / s), apa yang akan terjadi? Apakah sistem membatasi kecepatan pengunduhan?

yulki
sumber
5
Ini, dan telah sejak awal jaringan, situasi yang sama sekali umum ketika Anda berada di jaringan yang cepat, seperti di universitas di luar jam sibuk.
Peter - Reinstate Monica
4
Karena Anda dapat memprogram, Anda dapat dengan mudah mengamati ini sendiri. Tuliskan server dan klien TCP sederhana (Anda harus dapat menemukan contoh untuk perpustakaan soket bahasa pilihan Anda), biarkan layanan mengirimkan data secepat mungkin, dan memodifikasi klien untuk membaca data hanya pada kecepatan yang ditentukan (tidur antara membaca). Periksa apakah data diterima dengan utuh. Anda bahkan dapat mengamati paket yang dikirim dengan wireshark atau yang serupa.
Carsten S
3
Setelah memiliki pengalaman seperti yang dijelaskan dalam posting @ PeterA.Schneider, saya dapat memberitahu Anda bahwa Anda harus memperhitungkan buffer RAM dari sistem operasi. Sampai mereka diisi, Anda secara efektif dapat menyimpan data yang diunduh dengan kecepatan RAM. (Biasanya dalam ribuan megabyte per detik.)
Tidak ada yang
@Nobody Dan, tentu saja, selalu ada pipa absurd yang membentuk tulang punggung internet yang mentransmisikan data begitu cepat sehingga RAM komputer Anda bahkan tidak bisa mengikuti!
Cort Ammon - Reinstate Monica
Komputer Anda akan membuat permintaan ICMP memberitahukannya agar melambat. Namun, pada kecepatan yang sedikit ini Anda mungkin juga mendapatkan SSD atau M.2 ssd dan sekarang kecepatan menulis Anda begitu tinggi 100mb / s akan mudah. Beberapa M.2 adalah 1500MB / s tulis. Masukkan 2 atau lebih dalam RAID dan Anda dapat menggandakan kecepatan itu berkali-kali. SSD biasa bisa 300-450MB / s tergantung pada kapasitas dan merek. storagereview.com/samsung_960_pro_m2_nvme_ssd_review
cybernard

Jawaban:

41

Banyak protokol, termasuk TCP yang merupakan protokol yang paling banyak digunakan di Internet, menggunakan sesuatu yang disebut flow control. Kontrol aliran berarti bahwa TCP akan memastikan bahwa pengirim tidak membanjiri penerima dengan mengirimkan paket lebih cepat daripada yang dapat mengosongkan buffernya. Idenya adalah bahwa simpul yang menerima data akan mengirim semacam umpan balik ke simpul yang mengirim data untuk memberi tahu tentang kondisi saat ini. Jadi, umpan balik dua arah memungkinkan kedua mesin untuk secara optimal menggunakan sumber dayanya dan mencegah masalah karena ketidakcocokan dalam perangkat keras mereka.

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

Sigma
sumber
2
... idealnya. Bufferbloat berarti kemungkinan beberapa sakelar akan menyimpan dan menunggu untuk meneruskan setumpuk paket yang terus tumbuh (yang mungkin agak dikurangi dengan protokol transfer yang membutuhkan ACK sesekali untuk melanjutkan).
Eric Towers
3
Anda dapat menyebutkan bahwa ini membedakan TCP (hei, ia memiliki kendali atas namanya) dari UDP yang akan dengan senang hati terus dikirim, terlepas dari kapasitas konsumen.
Peter - Pasang kembali Monica
5
@Fabian Inilah yang terjadi sepanjang waktu. Cache hard drive OS memungkinkan data untuk 'dikirim' ke HDD jauh lebih cepat daripada yang dapat ditulis, mengisi cache dalam-RAM dan menulis ke disk sesegera mungkin. Jadi, tergantung pada jumlah (tidak terpakai) RAM di mesin Anda, OS dapat buffer beberapa hingga ratusan MB file dalam RAM sebelum mencapai disk. Namun ukuran cache adalah kompromi, karena data yang aplikasi mungkin anggap sudah ada pada disk mungkin tidak untuk waktu tertentu yang dapat menyebabkan kehilangan data yang tidak terduga jika terjadi kegagalan (daya) atau sejenisnya.
JimmyB
2
@Fabian: ini dapat Anda lihat dalam dialog salin file di Windows, mulai dari 8.1 dan seterusnya. Dalam mode diperluas, ini menunjukkan laju transfer, dan Anda dapat mengamati, bahwa paruh pertama dari satu detik atau lebih sangat cepat, dan jika file lebih besar dari apa yang bisa ditransfer selama itu, maka kecepatan turun secara signifikan, untuk tingkat yang konstan. Kecepatan cepat di awal adalah karena cache. Setelah diisi, kecepatan berkurang.
vsz
1
@EricTowers Tidak, bufferbloat hanya terjadi ketika koneksi jaringan menjadi hambatan. (Anda mungkin melihat bentuk bufferbloat di hard drive, yang akan memperlambat operasi hard drive lain, tetapi itu tidak akan mempengaruhi koneksi jaringan lainnya)
user253751
12

apa yang akan terjadi?

  • Bytes yang tidak dapat ditulis ke HDD pada waktunya akan disangga sementara di suatu tempat; sangat mungkin beberapa dari mereka akan disangga dalam aplikasi yang "mengubah" lalu lintas jaringan menjadi lalu lintas HDD (yaitu, browser Anda), dan dalam kasus kemacetan yang lebih lama, bagian tingkat yang lebih rendah dari tumpukan (yaitu, subsistem jaringan dari Anda PC) akan memiliki buffer di level yang lebih rendah juga, yang akan mengisi hingga penuh.
  • Informasi bahwa data datang terlalu cepat akan menyebar kembali ke pengirim dengan cara tertentu. Dalam kasus TCP / IP, ini berarti ada bagian dari protokol TCP yang memberi tahu pengirim bahwa ia harus berhenti mengirim. Halaman Wikipedia tentang TCP / IP mengatakan yang terbaik ketika mengatakan:

    Tanggung jawab [TCP] termasuk transfer pesan ujung ke ujung yang independen dari jaringan yang mendasarinya, bersama dengan kontrol kesalahan, segmentasi, kontrol aliran, kontrol kemacetan, dan ...

  • Pada akhirnya, "sistem" (tidak harus komputer penerima, tetapi sistem total yang terdiri dari pengirim, jaringan, dan penerima) secara tidak langsung akan "membatasi" kecepatan pengunduhan. Tanpa titik adalah variabel "kecepatan" dalam keberadaan, meskipun. Lalu lintas jaringan dan lalu lintas HDD berbasis blok, yaitu, penundaan di antara blok-blok itu akan cukup lama (di sisi jaringan yang lebih cepat) sampai rata "kecepatan" (throughput) rata-rata sama dengan kecepatan yang lebih lambat dari kecepatan Anda. HDD.

Apakah sistem membatasi kecepatan pengunduhan?

Tidak secara harfiah. Beberapa lusin tahun yang lalu, komputer memang dikomunikasikan dengan kecepatan sinkron (yaitu, modem dengan pengaturan kecepatan tetap). Ini, pada tingkat yang relatif rendah, juga terjadi hari ini; yaitu, DSL atau modem kabel Anda mungkin akan memiliki kecepatan tertentu di mana ia berkomunikasi dengan komponen uplink fisik langsungnya. Tetapi pada tahun 2017, semua ini cukup rumit sehingga hampir semua komponen cukup dinamis. Di masa lalu yang indah, modem seringkali secara fisik hanya mampu berbicara dengan kecepatan tertentu, dan itu bahkan harus ditetapkan sebelum melakukan panggilan. Ada beberapa protokol jaringan seperti ATM yang mencoba untuk mendapatkan jaringan area lebar yang sinkron, tetapi mereka tidak berjalan dengan baik, dibandingkan dengan TCP / IP.

Saat ini, kecepatan efektif biasanya selalu secara implisit dicapai dengan buffering, kontrol aliran, dan semacamnya.

Perhatikan juga bahwa dalam contoh Anda bahkan bisa ada lebih banyak peserta. Antarmuka jaringan dapat memiliki lebih banyak pekerjaan yang harus dilakukan (koneksi lain ke PC Anda). Beberapa bagian dari jaringan di sepanjang jalan bisa sibuk (anggota keluarga berselancar atau menonton video). HDD mungkin sedang menulis 3 file besar secara bersamaan. Jadi tidak masuk akal untuk secara khusus mengatur "kecepatan" yang dapat dibatasi.

AnoE
sumber
2

Unduhan file (biasanya) terjadi melalui protokol yang disebut TCP. Dalam TCP, pengirim tidak mengirim data apa pun sampai penerima siap menerimanya.

Apa yang akan terjadi adalah bahwa komputer Anda akan mencadangkan sejumlah RAM untuk menahan data yang diterima sementara sebelum menuliskannya ke hard drive Anda (ini disebut buffer). Kemudian ia akan meminta pengirim data yang cukup untuk mengisi buffer. Saat menerima data, ia akan mulai menulis data dari buffer ke hard drive - namun, ia tidak akan meminta lebih banyak data saat buffer hampir penuh.

Efek keseluruhannya adalah pengirim hanya menunggu penerima untuk mengejar ketinggalan sebelum melanjutkan pengiriman.

pengguna253751
sumber