HULFTで大容量ファイルを送信する際、
「単独転送と間欠転送では速度がどれくらい違うのか?」
と気になる場面は多いはずです。
特に、S3送信やネットワーク負荷対策で間欠転送を設定した場合、
「どれだけ転送時間が増えるのか?」を事前に把握しておきたいところです。
本記事では、HULFTの転送処理を理論値(数式)で算出する方法をわかりやすく解説します。
1. HULFT転送の基本:ブロック単位で送られる
HULFTはファイルをそのまま送るのではなく、
一定サイズ(ブロック長)に分割してブロック単位で送信します。
例えばブロック長を 16KB に設定している場合:
-
1ブロック = 16KB
-
1MBのファイルなら 1,048,576 ÷ 16,384 ≒ 64ブロック
という計算になります。
この「ブロック数 × ブロックあたりの処理時間」が転送時間に大きく影響します。
2. 単独転送の理論値:最速で送るシンプルな動作
単独転送(=間欠転送なし)は、
ブロックを休まず連続で送っていく動作です。
■ 単独転送の理論値計算式
※実効転送速度(Throughput)はネットワーク・HULFTヘッダなどのオーバーヘッドを含む実測値。
■ 例:500MBのファイルを100Mbpsで送信する場合
理論上は40秒となります。
実際にはHULFTヘッダ分のオーバーヘッドで数秒増える程度。
3. 間欠転送の理論値:休止時間の積み重ねで大幅に遅くなる
間欠転送は、各ブロック送信後に**休止時間(インターバル)**が入ります。
HULFTの設定例:
-
ブロック長:16KB
-
ブロック回数:100回
-
休止時間:30ms
■ 間欠転送の理論計算式
ここが最も重要なポイント。
ブロックが多い場合、休止時間が膨れ上がります。
4. 実例:500MBファイルを間欠転送で送るとどうなる?
★ 前提
-
ブロック長:16KB
-
500MB = 32,768ブロック
-
単独転送時間:40秒(前述)
-
休止時間:20ms
■ 間欠転送の追加時間
■ 合計転送時間
→ 実際の現場でも「間欠転送は数倍遅くなる」理由はここにある
ブロック数 × 休止時間 → これが爆発的に効いてくるためです。
5. 実効転送速度(Throughput)の簡易算出方法
実測値を1回取るだけで、理論値がもっと正確になります。
■ 実測からの計算式
例えば
-
100MBのファイル
-
送信実測15秒
→ 実効速度 = 100MB ÷ 15 = 6.6MB/s(53Mbps)
これを単独転送の基準値にすることで、
間欠転送の予測精度が向上します。
6. 間欠転送の「適切な使いどころ」
間欠転送は遅くなるため万能ではありませんが、
以下の目的では効果的です。
-
S3/クラウド側で転送速度制限がある場合
-
受信側の負荷分散が必要な場合
-
夜間バッチでNW帯域を食いすぎるのを避けたい時
-
他システムの処理性能に合わせたいケース
速度ではなく安定性や負荷分散を目的に使うのが本来の用途。
7. 間欠転送設定によるエラー(S3Timeout など)について
休止時間を入れると、
1ブロックあたりの処理が遅くなる → 全体が長くなる → タイムアウトに近づく
という問題があります。
特にS3送信では
-
S3Timeout(約60秒)
-
NW機器の制限
-
プロキシのタイムアウト
などに引っかかるケースが多い。
✔ 大容量ファイルほど間欠転送はリスクが高い
500MB・1GB級のファイルではブロック数が膨大になるため、
一気にタイムアウト領域に入ります。
まとめ
| 項目 | 単独転送 | 間欠転送 |
|---|---|---|
| 速度 | 最速 | 休止時間分だけ遅い |
| 仕組み | ブロックを連続送信 | ブロック送信→休止の繰り返し |
| 理論値算出 | 単独転送時間のみ | 単独転送+(ブロック数×休止時間) |
| メリット | 最速で送れる | 負荷を抑え安定性を上げる |
| デメリット | 帯域を多く使う | 極端に遅く、タイムアウトを誘発 |
