レイテンシでIPをソートする方法はありますか?

レイテンシでIPをソートする方法はありますか?

IP リストが与えられたら、「最も近い」または最低の待ち時間が一番上にあり、「最も遠い」または最長の待ち時間が一番下になるようにどのようにソートしますか?

ベストアンサー1

以下は、bashで書かれたNIS関連のソリューションです。

yplist=( $( ypcat ypservers|xargs -n1 host|sed -n '/has.address/s/.*[[:space:]]//p'|sort -u ) )
nearest=( $( for pp in ${yplist[@]}; do ping -q -n -c 5 -i 0.3 $pp|awk -F/ '/^rtt/{printf "%d:",($5*1000)}'; echo $pp; done|sort -n -t: -k1|cut -d: -f2 ) )
printf "ypserver %s\n" ${nearest[@]} >/etc/yp.conf

これはストーリーが進むにつれて成長するパイプラインなので、次のようになります。

  • $yplistソースリストとして使用するホスト配列です。
  • $nearest順番に獲得$yplistし、sping
  • 要約行だけが一致するように出力範囲がping狭くなりました。awk
  • わずかなハッキング:ms単位の往復時間を/区切り記号として1000を掛けてμs単位の整数値を取得します。avg
  • フォローアップecho $ppは、問題のIPを行の末尾に貼り付けることです。
  • ループ全体forはフィールド#1の数字でソートされます。応答時間の短い平均が上部に表示されます。
  • 最初のフィールドは切り捨てられ、IPだけが残ります。
  • 次に、このIPリストを配列$nearestに割り当てます。

以下は、待ち時間が最も短いIPの結果のリストです。

(最後の行はNIS設定用のprintf新しいプレフィックスを作成し、各IPに「ypserver」プレフィックスを追加します。)/etc/yp.conf

潜在的に信頼できないホストを公開するために、バイアス要因(出力)に最小遅延を追加することを検討mdevしましたping。ただし、この統計は、各ホストが数時間または数日間実行されている場合にのみping役立ちます。要因は何ですか? 10 ~ 100 程度が合うようですが、信頼性の低下に対する許容値に対応するように調整する必要があります。結果を約5%ほどクリーンアップするには多くの作業が必要なようです。

おすすめ記事