シェルスクリプトで直列処理と並列処理の実行速度を比較したいということで、
前回の curl コマンドで Object Storage へファイルをマルチパート・アップロードする処理を、バックグラウンドで同時に実行できるようにして、すべての分割コマンドが終了したら、実行時間を出力するスクリプトを作成してみてみます。
■ 参考処理
今回は、次の内容の マルチパート・アップロードコマンド 処理を使用して並列スクリプトを作成します。
・[Oracle Cloud] curl コマンドで Object Storage へファイル Upload/Download してみてみた
● マルチパート・アップロードコマンド群
次の5つあるコマンドを並列実行して実行時間を出力するスクリプトを作成します。
curl -X PUT --data-binary '@x00' https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/1
curl -X PUT --data-binary '@x01' https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/2
curl -X PUT --data-binary '@x02' https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/3
curl -X PUT --data-binary '@x03' https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/4
curl -X PUT --data-binary '@x04' https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/5
■ 並列スクリプト作成
今回、ファイル・サイズが 1024MB(1GB)のファイル転送速度が出るように算出し出力できるようにします。
Parallel.sh
#!/bin/bash
echo "ファイル転送開始 : $(date)"
start_date=$(date +'%s')
multipart_url="https://objectstorage.ap-tokyo-1.oraclecloud.com/p/Gqte6y5OoWPjEYOzAj-wuHDpy/n/shirok/b/OCI-Bucket/u/1G-File.txt/id/057e65-5f32-4efc-7dbc/"
curl -X PUT --data-binary '@x00' "${multipart_url}1" &
curl -X PUT --data-binary '@x01' "${multipart_url}2" &
curl -X PUT --data-binary '@x02' "${multipart_url}3" &
curl -X PUT --data-binary '@x03' "${multipart_url}4" &
curl -X PUT --data-binary '@x04' "${multipart_url}5" &
if wait; then
echo "ファイル転送成功 : $(date)"
end_date=$(date +'%s')
time=$((end_date - start_date))
echo "実行時間: $time 秒"
echo "実行速度: $((1024 * 8 / $time)) Mbps"
exit 0
else
echo "ファイル転送失敗"
date
exit 1
fi
● 実行と出力結果
shirok@macbook TEMP % bash Parallel.sh
ファイル転送開始 : Thu Jun 8 01:18:55 JST 2023
ファイル転送成功 : Thu Jun 8 01:19:23 JST 2023
実行時間: 28秒
実行速度: 288Mbps