インターネット接続がストレージの書き込み速度より速い場合はどうなりますか?


28

800 Mb / s(100 MB / s)の速度で500 Mb / s(62.5 MB / s)の書き込み速度でハードドライブにファイルをダウンロードしようとした場合、どうなりますか?システムはダウンロード速度を制限しますか?


5
これは、ネットワークの開始以来であり、忙しい時間外の大学のように高速ネットワークにいるときの全く一般的な状況です。
ピーター-モニカの復活

4
プログラムできるので、自分で簡単に観察できます。シンプルなTCPサーバーとクライアントを作成し(選択した言語のソケットライブラリの例を見つけることができるはずです)、できるだけ早くデータを配信するようにし、指定された速度でのみデータを読み取るようにクライアントを変更します(読み取り間でスリープ)。データがそのまま受信されていることを確認します。Wiresharkなどで送信されたパケットを確認することもできます。
カールステンS

3
@ PeterA.Schneiderの投稿で説明されているような経験があったので、オペレーティングシステムのRAMバッファーを考慮する必要があることを伝えます。いっぱいになるまで、ダウンロードしたデータをRAMの速度で効果的に保存できます。(通常は1秒あたり数千メガバイト)
誰も

@Nobodyそして、もちろん、インターネットバックボーンを構成する不条理なパイプは常に存在し、通常のコンピューターのRAMに対応できないほど高速にデータを送信します。
コートアンモン-復活モニカ

お使いのコンピューターはICMPリクエストをスローダウンするように要求します。ただし、これらのわずかな速度では、SSDまたはM.2 ssdを取得することもでき、書き込み速度が非常に高速になり、100 mb / sが簡単になります。一部のM.2は1500MB / sの書き込みです。RAIDに2つ以上を入れると、その速度を何倍も何度も繰り返すことができます。プレーン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は、複数のスイッチが、増え続けるパケットの山を格納し、転送を待機している可能性が高いことを意味します(継続的にACKを要求する転送プロトコルによって多少緩和される可能性があります)。
エリックタワーズ

3
これにより、消費者のキャパシティに関係なく、喜んで送信を続けるUDPとTCP(その名前に制御がある)が区別されることに言及できます。
ピーター-モニカの復活

5
@Fabianこれはとにかくいつも起こることです。OSのハードドライブキャッシュにより、データを書き込みよりもはるかに高速にHDDに「送信」でき、RAM内のキャッシュがいっぱいになり、できるだけ早くディスクに書き込みます。そのため、マシンの(未使用の)RAMの量に応じて、OSはディスクに到達する前にRAMに数十から数百MBのファイルをバッファリングする場合があります。ただし、アプリケーションがディスク上にすでに永続的であると見なす可能性のあるデータが一定の時間にわたっていない場合があり、(電源)障害などの場合に予期しないデータ損失を引き起こす可能性があるため、キャッシュサイズは妥協です。
JimmyB

2
@Fabian:これは、Windows 8.1以降のファイルコピーダイアログに表示されます。拡張モードでは、転送速度が表示され、1秒の半分程度が非常に高速であることがわかります。ファイルがその間に転送されたはずのものよりも大きい場合、速度は大幅に低下します。一定のレート。最初の高速は、キャッシュが原因でした。いっぱいになると、速度が低下します。
vsz

1
@EricTowersいいえ、bufferbloatはネットワーク接続がボトルネックの場合にのみ発生します。(他のハードドライブの動作を遅くしますが、他のネットワーク接続には影響しません)ハードドライブでbufferbloatのフォームが表示される場合があります)
-user253751

12

どうなるの?

  • 時間内にHDDに書き込めないバイトは、一時的にどこかにバッファリングされます。ネットワークトラフィックをHDDトラフィック(つまり、ブラウザー)に「変換」するアプリケーションでバッファーの一部がバッファリングされる可能性が高く、輻輳が長い場合は、スタックの低レベル部分(つまり、ネットワークのサブシステム) PC)にも低いレベルのバッファーがあり、いっぱいになるまでいっぱいになります。
  • データが速すぎるという情報は、何らかの方法で送信者に伝播します。TCP / IPの場合、これは送信を停止する必要があることを送信者に伝えるTCPプロトコルの一部があることを意味します。TCP / IPのウィキペディアのページは、次のように述べている場合に最適です。

    その[TCP]の責任には、エラー制御、セグメンテーション、フロー制御、輻輳制御などとともに、基礎となるネットワークに依存しないエンドツーエンドのメッセージ転送が含まれます。

  • 一日の終わりに、「システム」(必ずしも受信者のコンピューターではなく、送信者、ネットワーク、および受信者で構成されるシステム全体)が間接的にダウンロード速度を「制限」します。ただし、存在する「速度」変数はありません。ネットワークトラフィックとHDDトラフィックは両方ともブロックベースです。つまり、これらのブロック間の遅延は、ネットの「速度」(スループット)が平均して低速の速度と同じになるまで(より高速なネットワーク側で)長くなりますHDD。

システムはダウンロード速度を制限しますか?

文字通りではありません。数十年前、コンピューターは実際に同期速度(つまり、固定速度設定のモデム)で通信していました。これは、比較的低いレベルで、今日も起こっています。つまり、DSLまたはケーブルモデムは、直接物理アップリンクコンポーネントと通信する速度が設定されている可能性があります。しかし、2017年には、これらのすべてが非常に複雑になるため、ほとんどすべてのコンポーネントは非常に動的です。古き良き時代には、モデムは物理的に特定の速度しか話せなかったことが多く、ダイヤルインする前に確立する必要さえありました。同期ワイドエリアネットワークを取得しようとしたATMなどのネットワークプロトコルがありました。しかし、彼らはTCP / IPと比較してそれほどうまくいっていませんでした。

今日、通常、バッファリング、フロー制御などにより、有効速度に常に暗黙的に到達します。

また、あなたの例では、さらに多くの参加者がいることに注意してください。ネットワークインターフェイスには、さらに作業が必要な場合があります(PCへの他の接続)。途中でネットワークの一部が混雑する可能性があります(家族がサーフィンやビデオを見る)。HDDは、同時に3つの大きなファイル書き込みを行っている可能性があります。したがって、上限を設定できる「速度」を具体的に設定することは意味がありません。


2

ファイルのダウンロード(通常)は、TCPと呼ばれるプロトコルを介して行われます。TCPでは、受信者がデータを受信する準備ができるまで、送信者はデータを送信しません。

発生するのは、コンピューターがハードドライブ(バッファーと呼ばれる)に書き込む前に、受信したデータを一時的に保持するためにある程度のRAMを予約することです。次に、送信者にバッファを埋めるのに十分なデータを要求します。データを受信すると、バッファからハードドライブへのデータの書き込みを開始しますが、バッファがほぼいっぱいになっている間は、それ以上のデータを要求しません。

全体的な効果は、送信者が送信を続ける前に、受信者が追いつくのを単に待つことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.