"T1 (1.544 mbps)からT3 (44.736 mbps)にアップグレードしたばかりなのに、なぜそのファイルをコピーするのに90分もかかるのか?"
簡単な答えは、容量が増えることとバイトが速くなることは同じではないということです。容量をほぼ29倍(44.736 / 1.544)に増やした場合、同じ90分で29個のファイルをコピーすることができるかもしれませんが、おそらくその1個のファイルをこれ以上速くコピーすることはできないでしょう。昨年の「アプリケーションのパフォーマンス問題と遅延」というブログでも触れましたが、ファイル転送とcopy_fileにはもっとフォーカスしたブログが必要だと思います。
つまり、送信側のホスト/アプリケーションが、受信側のホスト/アプリケーションからの確認応答を停止して待つことなく、どれだけのバイト数を送信できるかということです。FTP のようなアプリケーションの中には、アプリケーション層の確認応答を持たず、TCP に依存しているものがあります。この場合、ウィンドウサイズは、リモートホストのTCPレイヤがアドバタイズしているものに基づいており、STCPがサポートしている最大64Kバイトまでとなります。アプリケーションの中には、アプリケーション層のウィンドウを持つものもありますが、これらのアプリケーションでは、制限ウィンドウは TCP とアプリケーションのどちらか小さい方になります。windows.
最大スループットは、次のように計算されます。
W / RTT = T
どこにあるか
W はウィンドウのサイズをバイト単位で表します。
RTTは往復時間を秒単位で表したものです。
Tは1秒あたりのバイト数でのスループット
往復時間とは、データを送信して確認応答を得るまでにかかる時間のことです。大きな距離、すなわちクロスカントリーの場合、その時間は主にバイトが移動しなければならない距離と、エンドポイント間のすべてのネットワーク機器の処理速度に基づいています。受信ホストの処理速度、パケットサイズ(TCP MSS値は、"サブネット間のスループットを向上させるための簡単な方法"を参照してください)ともちろん、最も遅いリンクの帯域幅は、より小さな役割を果たしています。
例えば、RTT が 0.050 秒、ウィンドウが 64K の場合、最大スループットは 1,310,720 バイト/秒 (64 * 1024 / 0.050) になります。リンクの未使用容量がスループットよりも大きい限り、容量を増やしても転送時間は速くなりません。
T は可能な最大スループットです。何をしても(ウィンドウを増やしたり RTT を減らしたりする以外は)物事をより速くすることはできませんが、敵対的なネットワーク条件は物事をかなり遅くすることがあります。
転送時間の見積もりは、ファイルサイズをスループットで割っただけのものです。
F/ W * RTT = Ti
どこにあるか
Fはファイルサイズをバイト単位で表します。
W はウィンドウのサイズをバイト単位で表します。
RTTは往復時間を秒単位で表したものです。
Tiはファイルを転送する時間を秒単位で表しています。
OSLはアプリケーションウィンドウのサイズが4Kで、OpenVOSファイルシステムはファイルサイズを4Kバイトのブロックで報告していますので、copy_fileコマンドを使って2つのOpenVOSシステム間でファイルをコピーする時間を見積もるには、単に
F * RTT = Ti
どこにあるか
Fはブロック単位のファイルサイズ
RTTは往復時間を秒単位で表したものです。
Tiはファイルを転送する時間を秒単位で表しています。
0.050秒のRTTを持つリンクでは、OSLは50,000ブロックのファイルをコピーするのに41分強かかります(50,000 * 0.05)。最大スループットは81,920バイト/秒(4096 / 0.050)になります。リンクの未使用ネットワーク容量が81,920バイト/秒を超えている限り、容量を追加してもファイルのコピーにかかる時間は短縮されません。
往復時間を計測する最も簡単な方法はpingです。残念ながらpingではRTTの数字は1つではなく、複数の数字が出てきて、例えば数字が大きく変わることがあります。
ping 172.16.1.80 Pinging host 172.16.1.80 : 172.16.1.80 ICMP Echo Reply:TTL 53 time = 418 ms ICMP Echo Reply:TTL 53 time = 107 ms ICMP Echo Reply:TTL 53 time = 91 ms ICMP Echo Reply:TTL 53 time = 100 ms Host 172.16.1.80 replied to all 4 of the 4 pings ready 12:03:15 |
可能な限りの最高のスループットを計算することに興味がある場合は、最低の数字を使用してください。あなたが期待すべきことの合理的な見積もりに興味がある場合は、10のpingカウントを使用して、2つの最も高い数字と2つの最も低い数字を捨てて、残りの部分を平均化します。
ping 172.16.1.80 -count 10 Pinging host 172.16.1.80 : 172.16.1.80 ICMP Echo Reply:TTL 53 time = 89 ms ICMP Echo Reply:TTL 53 time = 96 ms ICMP Echo Reply:TTL 53 time = 95 ms ICMP Echo Reply:TTL 53 time = 105 ms ICMP Echo Reply:TTL 53 time = 186 ms ICMP Echo Reply:TTL 53 time = 87 ms ICMP Echo Reply:TTL 53 time = 90 ms ICMP Echo Reply:TTL 53 time = 90 ms ICMP Echo Reply:TTL 53 time = 89 ms ICMP Echo Reply:TTL 53 time = 96 ms Host 172.16.1.80 replied to all 10 of the 10 pings ready 12:12:39 calc 96 + 95 + 90 + 90 + 89 + 96 556 ready 12:12:49 calc 556 / 6 92.6666666666667 ready 12:12:57 |
上で述べたように、敵対的なネットワークは物事を大幅に遅くすることができます。 Ping のタイムアウトはこれを示しています。つまり、タイムアウトがあるということは、これらの計算がかなり楽観的であることを意味しています。また、転送は、送信者ができるだけ速くデータを読み込んで送信することを妨げたり、受信者がその到着速度よりも遅いデータを読み込んだり、アプリケーションの確認応答を遅らせたり(ラウンドトリップ時間を長くしたり)、TCP 受信バッファをいっぱいにして送信ホストが送信を停止したりするような、ビジーなディスクや CPU によって遅くなることもあります。これらの条件のいずれかに該当するかどうかを知る唯一の方法は、パケットトレースを使用することです。