gnu パラレル - リモートサーバーを待つコマンド速度の向上

gnu パラレル - リモートサーバーを待つコマンド速度の向上

私はgnuパラレルを使ってpantheon.ioの約1500のウェブサイトのバックアップを作成しています。ターミナルコマンドラインインタフェース。コマンドは、terminus backup:createリモート側で完了した応答を受信した後にのみ完了します。以前のサイトが完了するのを待っている間に多くのサイトをバックアップできるようにするか、そうでない場合は、より完全に実行できるように並列化を使用して作業速度を向上させる方法があるかどうか疑問に思います。存在する場合は、Jenkins CIジョブで実行されます。ありがとうございます。

#!/bin/bash +x

backup_sites() {
  BACKUP=$(terminus backup:create "$*".live)
  echo "$*": "$BACKUP"
}

SITE_LIST=$(terminus site:list --field=name)

export -f backup_sites
echo "$SITE_LIST" | parallel backup_sites

答え1

並列に実行するジョブ数を指定しない場合、デフォルトは CPU 数です。

マニュアルから:

-J

各システムのワークスロット数。最大N個のジョブを並列に実行します。 0 はできるだけ多くを意味します。デフォルトは100%で、各マシンの各CPUで1つのジョブを実行します。

通常、これは安全な方法ですが、コンピューティングではなくネットワークを待っています。だから簡単に数量を増やすことができます。 -j 200を試してみましょう。それはうまくいきます。このパラメータを調整して希望の速度を得ることができます。

だからecho "$SITE_LIST" | parallel -j 200 backup_sites代わりにecho "$SITE_LIST" | parallel backup_sites

関連情報