メインコンテンツへスキップ
「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ウィンドウとアプリケーションウィンドウのうち小さい方となります。
最大スループットは次のように計算される

 

W / RTT = T
どこ
W はウィンドウサイズ(バイト単位)
RTTは往復時間(秒単位)です
T は秒あたりのバイト単位のスループットである
往復時間とは、データを送信してから応答を受信するまでの時間を指します。 長距離、すなわち国境を越える通信の場合、この時間は主に、バイトが移動しなければならない距離と、両端点間のすべてのネットワーク機器の処理速度に基づきます。受信ホストの処理速度、パケットサイズ(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 はファイル転送にかかる時間(秒単位)

 

RTTが0.050秒のリンクでは、OSLが50,000ブロックのファイルをコピーするのに41分強(50,000 × 0.05)かかります。 最大スループットは81,920バイト/秒(4096 / 0.050)となります。リンクの未使用ネットワーク容量が81,920バイト/秒を超える限り、容量を追加してもファイルコピー時間は短縮されません。

 

往復時間を測定する最も簡単な方法はpingです。残念ながら、pingはRTTを単一の数値で示すのではなく複数の数値を返し、それらの数値は大きく変動する可能性があります。例えば:

 

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

 

最高のスループットを計算したい場合は最小値を使用してください。期待値の妥当な見積もりを得たい場合は、pingカウントを10回行い、最大値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タイムアウトはその兆候である。従って、いかなるタイムアウトも、これらの計算がかなり楽観的である可能性を示唆している。 ディスクやCPUの負荷が高まると転送速度が低下する。送信側がデータを読み取り送信する速度が制限されたり、受信側がデータ到着速度に追いつけず読み取りが遅延したりすると、アプリケーションの応答が遅延(往復時間増加)し、TCP受信バッファが満杯になる可能性がある。この場合、送信ホストは送信を停止する。これらの状態を特定するにはパケットトレースが唯一の方法である。

© 2024 ストラタス・テクノロジーズ