あまり速いって印象ないんだけど、
apt-cyg が2倍速くなった。aria2c 爆速と言ってる人がいたのでとりあえず検証
cygwin の package で約 100 MB の texlive-collection-langcjk-20120628-1.tar.bz2 で計ってみた。
apt-cyg が2倍速くなった。aria2c 爆速と言ってる人がいたのでとりあえず検証
cygwin の package で約 100 MB の texlive-collection-langcjk-20120628-1.tar.bz2 で計ってみた。
wget 単独
aria2c 2 並列
$ time wget -N http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 --2014-05-15 03:07:38-- http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.170 ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.170|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 101675745 (97M) [application/x-bzip2] `texlive-collection-langcjk-20120628-1.tar.bz2' に保存中 100%[======================================>] 101,675,745 6.23MB/s 時間 16s 2014-05-15 03:07:54 (6.23 MB/s) - `texlive-collection-langcjk-20120628-1.tar.bz2' へ保存完了 [101675745/101675745] real 0m15.641s user 0m0.436s sys 0m1.108s
$ time wget -N ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 --2014-05-15 03:15:29-- ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 => `.listing' ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.170 ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.170|:21 に接続しています... 接続しました。 anonymous としてログインしています... ログインしました! ==> SYST ... 完了しました。 ==> PWD ... 完了しました。 ==> TYPE I ... 完了しました。 ==> CWD (1) /pub/cygwin/x86/release/TeX/texlive-collection-langcjk ... 完了しました。 ==> PASV ... 完了しました。 ==> LIST ... 完了しました。 [ <=> ] 675 --.-K/s 時間 0.002s 2014-05-15 03:15:29 (437 KB/s) - `.listing' へ保存終了 [675] `.listing' を削除しました。 サイズが合わないので(ローカルは 7792600)、取得します。 --2014-05-15 03:15:29-- ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 => `texlive-collection-langcjk-20120628-1.tar.bz2' ==> CWD は必要ありません。 ==> PASV ... 完了しました。 ==> RETR texlive-collection-langcjk-20120628-1.tar.bz2 ... 完了しました。 長さ: 101675745 (97M) 100%[======================================>] 101,675,745 6.22MB/s 時間 16s 2014-05-15 03:15:45 (6.22 MB/s) - `texlive-collection-langcjk-20120628-1.tar.bz2' へ保存終了 [101675745] real 0m16.000s user 0m0.436s sys 0m0.983s
aria2c 2 並列
$ time aria2c -s2 --allow-overwrite=true http://ftp.iij.ad.jp/pub/cygwin/x86/re lease/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar. bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/t exlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:17:32.328250 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:90.0MiB/96.9MiB(92%) CN:2 SPD:4.8MiBs ETA:01s] 2014-05-15 03:17:52.125125 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 8.0MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m20.594s user 0m0.593s sys 0m0.765saria2c 4 並列
$ time aria2c -s4 --allow-overwrite=true http://ftp.iij.ad.jp/pub/cygwin/x86/re lease/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar. bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/t exlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:18:32.750125 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:88.1MiB/96.9MiB(90%) CN:4 SPD:6.7MiBs ETA:01s] 2014-05-15 03:18:53.890750 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 8.2MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m21.203s user 0m0.296s sys 0m0.561saria2c 8 並列
$ time aria2c -s8 --allow-overwrite=true http://ftp.iij.ad.jp/pub/cygwin/x86/re lease/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar. bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/t exlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:19:27.203250 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:93.6MiB/96.9MiB(96%) CN:8 SPD:8.4MiBs] 2014-05-15 03:19:47.734500 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 8.4MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m20.625s user 0m0.155s sys 0m0.593s
wget 単独
aria2c 36,24,12,6並列
$ for i in ftp://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection- langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 http://ftp.jaist.ac.jp/pu b/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk- 20120628-1.tar.bz2 ftp://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/tex live-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 http://ft p.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/tex live-collection-langcjk-20120628-1.tar.bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/r elease/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar .bz2 http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk /texlive-collection-langcjk-20120628-1.tar.bz2; do rm texlive-collection-langcj k-20120628-1.tar.bz2; echo $i; time wget -q $i; done ftp://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 0m44.609s user 0m0.733s sys 0m1.640s http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 0m44.563s user 0m0.749s sys 0m1.718s ftp://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 1m14.734s user 0m0.343s sys 0m1.218s http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 0m55.531s user 0m0.702s sys 0m1.468s ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 0m19.859s user 0m0.405s sys 0m1.233s http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 real 0m16.672s user 0m0.452s sys 0m1.249s
aria2c 36,24,12,6並列
$ time aria2c -s36 --allow-overwrite=true ftp://ftp.jaist.ac.jp/pub/cygwin/x86/ release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.ta r.bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-lang cjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp://ftp.yz.yamagata-u.ac.jp /pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX /texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:/ /ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-co llection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp/pub/cygwin/x86/release /TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:40:07.547000 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:90.5MiB/96.9MiB(93%) CN:36 SPD:7.3MiBs] 2014-05-15 03:40:24.359500 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 10.0MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m16.875s user 0m0.218s sys 0m0.593s $ time aria2c -s24 --allow-overwrite=true ftp://ftp.jaist.ac.jp/pub/cygwin/x86/ release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.ta r.bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-lang cjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp://ftp.yz.yamagata-u.ac.jp /pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX /texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:/ /ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-co llection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp/pub/cygwin/x86/release /TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:40:30.343875 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:94.7MiB/96.9MiB(97%) CN:24 SPD:1.6MiBs ETA:01s] 2014-05-15 03:40:49.515750 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 8.8MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m19.234s user 0m0.218s sys 0m0.546s $ time aria2c -s12 --allow-overwrite=true ftp://ftp.jaist.ac.jp/pub/cygwin/x86/ release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.ta r.bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-lang cjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp://ftp.yz.yamagata-u.ac.jp /pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX /texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:/ /ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-co llection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp/pub/cygwin/x86/release /TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:40:54.312625 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:96.7MiB/96.9MiB(99%) CN:12 SPD:1.7MiBs] 2014-05-15 03:41:11.187625 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 9.6MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m16.938s user 0m0.171s sys 0m0.468s $ time aria2c -s6 --allow-overwrite=true ftp://ftp.jaist.ac.jp/pub/cygwin/x86/r elease/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar .bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langc jk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp://ftp.yz.yamagata-u.ac.jp/ pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcj k-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/ texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:// ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-col lection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp/pub/cygwin/x86/release/ TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-15 03:41:17.187625 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:90.1MiB/96.9MiB(92%) CN:6 SPD:7.3MiBs] 2014-05-15 03:41:33.718875 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 10.0MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m16.609s user 0m0.296s sys 0m0.718s
$ for i in $(apt-cyg mirros-list); do echo ${i}x86/release/TeX/texlive-collecti on-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2; done|wc 121 121 15451 $ time aria2c -s 121 --allow-overwrite=true $(for i in $(apt-cyg mirros-list); do echo ${i}x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2; done) 2014-05-15 03:49:59.031375 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. 2014-05-15 03:50:07.718875 WARN - Detected file descriptor >= FD_SETSIZE or < 0. Download may slow down or fail. ... ... 大量の WARN ... 2014-05-15 03:50:25.031375 WARN - Detected file descriptor >= FD_SETSIZE or < 0. Download may slow down or fail. [#1 SIZE:96.3MiB/96.9MiB(99%) CN:97 SPD:1.0MiBs] 2014-05-15 03:50:26.093875 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 4.8MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m27.359s user 0m1.237s sys 0m1.432s
iij 優秀杉
並列化以前に mirror の選択のが大きい。
speedtest 相手に 100Mbps しか出てないので、出てもせいぜい 13MB/s 弱なので最短でも 8 秒弱くらいかな?
しかし並列化しても上手く帯域を使い切れてない雰囲気。
加えて 100MB くらいのファイルで 20 秒前後しかかからないと aria2 は最初にファイルサイズ分、ディスク上に領域確保する時間が足枷になって、思ったほど時間が短縮出来てない模様。
残りが逼迫した HDD なので余計にハンディ背負ってる気がするけど、sparse 出来ればマシになると思うけど、現状このオーバヘッドは SSD じゃないと辛そう。
と言うことで、1つのファイルを分割して並列に落とすよりも、ファイルは分割せずに複数ファイルを並列で落とすほうが効率が良さそう。
並列化以前に mirror の選択のが大きい。
speedtest 相手に 100Mbps しか出てないので、出てもせいぜい 13MB/s 弱なので最短でも 8 秒弱くらいかな?
しかし並列化しても上手く帯域を使い切れてない雰囲気。
加えて 100MB くらいのファイルで 20 秒前後しかかからないと aria2 は最初にファイルサイズ分、ディスク上に領域確保する時間が足枷になって、思ったほど時間が短縮出来てない模様。
残りが逼迫した HDD なので余計にハンディ背負ってる気がするけど、sparse 出来ればマシになると思うけど、現状このオーバヘッドは SSD じゃないと辛そう。
と言うことで、1つのファイルを分割して並列に落とすよりも、ファイルは分割せずに複数ファイルを並列で落とすほうが効率が良さそう。
lambdalice / cyg-fast / Add --no-file-alloc for slow I/O systems 見て、
最近の aria2c には 、--file-allocation オプションが追加されてることに気付いた。
一応マニュアル見てそういうオプションがないか確認してたんだけど、どうも上記で試した際に入ってた aria2c のバージョンが古いままだったらしく、--file-allocation がなかったようだ。
と言うことで、最新バージョンに入れ替えて再チャレンジしてみたのだが、生憎コンディションが以下のような状況。
5MB/s 前後が限界かも?って状況。
iij 単独
iij のみ、--file-allocation=falloc、8並列
iij のみ、--file-allocation=none、8並列
国内ミラー混合、--file-allocation=none 、32並列
国内ミラー混合、--file-allocation=none 、12並列
iij 単独で再確認
最近の aria2c には 、--file-allocation オプションが追加されてることに気付いた。
一応マニュアル見てそういうオプションがないか確認してたんだけど、どうも上記で試した際に入ってた aria2c のバージョンが古いままだったらしく、--file-allocation がなかったようだ。
と言うことで、最新バージョンに入れ替えて再チャレンジしてみたのだが、生憎コンディションが以下のような状況。
5MB/s 前後が限界かも?って状況。
iij 単独
$ time wget -N http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collecti on-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 --2014-05-20 04:00:25-- http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.170 ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.170|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 101675745 (97M) [application/x-bzip2] `texlive-collection-langcjk-20120628-1.tar.bz2' に保存中 100%[======================================>] 101,675,745 5.10MB/s 時間 19s 2014-05-20 04:00:44 (5.02 MB/s) - `texlive-collection-langcjk-20120628-1.tar.bz2' へ保存完了 [101675745/101675745] real 0m19.500s user 0m0.390s sys 0m1.281s
iij のみ、--file-allocation=falloc、8並列
$ time aria2c -s8 --file-allocation=falloc --allow-overwrite=true http://ftp.ii j.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collectio n-langcjk-20120628-1.tar.bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/tex live-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-20 04:01:46.038354 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:96.7MiB/96.9MiB(99%) CN:8 SPD:1.3MiBs] 2014-05-20 04:02:07.225854 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 4.5MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m21.328s user 0m0.077s sys 0m0.453s
iij のみ、--file-allocation=none、8並列
$ time aria2c -s8 --file-allocation=none --allow-overwrite=true http://ftp.iij. ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection- langcjk-20120628-1.tar.bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texli ve-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 2014-05-20 04:02:30.397729 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:94.9MiB/96.9MiB(97%) CN:8 SPD:6.3MiBs] 2014-05-20 04:02:51.694604 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 4.7MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m21.344s user 0m0.061s sys 0m0.405s
国内ミラー混合、--file-allocation=none 、32並列
$ time aria2c -s36 --file-allocation=none --allow-overwrite=true ftp://ftp.jais t.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collectio n-langcjk-20120628-1.tar.bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/ texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:// ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/t exlive-collection-langcjk-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub /cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-2 0120628-1.tar.bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collec tion-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp /pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2 2014-05-20 04:04:21.788354 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:95.9MiB/96.9MiB(98%) CN:36 SPD:919.2KiBs ETA:01s] 2014-05-20 04:04:48.616479 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 3.6MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m26.875s user 0m0.124s sys 0m0.640s
国内ミラー混合、--file-allocation=none 、12並列
$ time aria2c -s12 --file-allocation=none --allow-overwrite=true ftp://ftp.jais t.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collectio n-langcjk-20120628-1.tar.bz2 http://ftp.jaist.ac.jp/pub/cygwin/x86/release/TeX/ texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp:// ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/t exlive-collection-langcjk-20120628-1.tar.bz2 http://ftp.yz.yamagata-u.ac.jp/pub /cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-2 0120628-1.tar.bz2 ftp://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collec tion-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 http://ftp.iij.ad.jp /pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langc jk-20120628-1.tar.bz2 2014-05-20 04:05:10.225854 WARN - HTTPS サーバーの証明証検証エラーが発生するかもしれません. 詳しくは --ca-certificate と --check-certificate オプションを参照してください. [#1 SIZE:96.7MiB/96.9MiB(99%) CN:12 SPD:499.7KiBs] 2014-05-20 04:05:36.491479 NOTICE - ダウンロード完了: /cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 ダウンロード結果: gid|stat|avg speed |path/URI ===+====+===========+=========================================================== 1| OK| 3.7MiB/s|/cygdrive/c/Documents and Settings/kou/デスクトップ/gist/apt-cyg/texlive-collection-langcjk-20120628-1.tar.bz2 凡例: (OK):download completed. real 0m26.313s user 0m0.218s sys 0m0.436s
iij 単独で再確認
$ time wget -N http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collecti on-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 --2014-05-20 04:05:59-- http://ftp.iij.ad.jp/pub/cygwin/x86/release/TeX/texlive-collection-langcjk/texlive-collection-langcjk-20120628-1.tar.bz2 ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.170 ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.170|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 101675745 (97M) [application/x-bzip2] `texlive-collection-langcjk-20120628-1.tar.bz2' に保存中 100%[======================================>] 101,675,745 6.36MB/s 時間 15s 2014-05-20 04:06:15 (6.36 MB/s) - `texlive-collection-langcjk-20120628-1.tar.bz2' へ保存完了 [101675745/101675745] real 0m15.734s user 0m0.452s sys 0m1.156s
やっぱり iij 優秀過ぎ
と言うか、aria2c、並列でやってるのになんで伸びないのかが謎
iij だけで帯域ほぼ使い切ってるので、下手に並列化すると、パケット詰まってるのかも?
因みに benchmark-parallel-mirrors-list した結果の上位10サーバーは以下のような状況。
と言うか、aria2c、並列でやってるのになんで伸びないのかが謎
iij だけで帯域ほぼ使い切ってるので、下手に並列化すると、パケット詰まってるのかも?
因みに benchmark-parallel-mirrors-list した結果の上位10サーバーは以下のような状況。
$ apt-cyg -j 16 benchmark-parallel-mirrors-list ... 0m2.281s http://mirror.nexcess.net/cygwin/ 0m2.016s http://mirrors.163.com/cygwin/ 0m2.000s http://mirrors.xmission.com/cygwin/ 0m1.938s http://mirrors.ustc.edu.cn/cygwin/ 0m1.828s http://mirrors.kernel.org/sourceware/cygwin/ 0m1.578s http://mirrors.neusoft.edu.cn/cygwin/ 0m1.359s ftp://ftp.yz.yamagata-u.ac.jp/pub/cygwin/ 0m0.719s http://ftp.iij.ad.jp/pub/cygwin/ 0m0.594s http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/ 0m0.359s ftp://ftp.iij.ad.jp/pub/cygwin/やっぱり iij が飛び抜けてる。
分割なしの複数ファイル並列を試して欲しいと要望があったのでテスト
その前に、ディスクのパフォーマンス測ったら、こんな感じだった。
開始直前のコンディション
計測は、以下のようなスクリプトを組んで行なった
結果部分抽出
細かいところ見ると、
ダウンロード後、ダウンロードしたファイルの削除に失敗してたりするけど、
時間切れになってしまったので、とりあえず出来た範囲で。
あとで、もう少し見易くまとめる。
その前に、ディスクのパフォーマンス測ったら、こんな感じだった。
[20140521_085416] $ time dd if=/dev/zero of=hoge.zero bs=1M count=100 100+0 レコード入力 100+0 レコード出力 104857600 バイト (105 MB) コピーされました、 11.6132 秒、 9.0 MB/秒 real 0m11.641s user 0m0.046s sys 0m0.046sあまりにも笑える酷さだったので、念入りにデフラグした結果、以下の状態まで回復できた。
[20140524_061057] $ time dd if=/dev/zero of=hoge.zero bs=100M count=1 1+0 レコード入力 1+0 レコード出力 104857600 バイト (105 MB) コピーされました、 1.06269 秒、 98.7 MB/秒 real 0m1.188s user 0m0.046s sys 0m0.202s
開始直前のコンディション
計測は、以下のようなスクリプトを組んで行なった
#!/usr/bin/env bash TMPFILE=$(mktemp -u) #BENCHMARKRESULT=${TMPFILE}.benchmark-result BENCHMARKRESULT=benchmark-result.txt BENCHMARKSIZE=$[100*1000**2] # Usage: join FS fields ... function join () { awk -v FS="$1" \ ' BEGIN { sep = ""; for (i = 1; i < ARGC; i++) { result = result sep ARGV[i]; sep = FS; } print result } ' "${@:2}" } # Usage: make_dl_list separator packages mirrors [offset_delta:-0] function make_dl_list () { awk \ -v separator="$1" \ -v PKGS="$2" \ -v MIRRORS="$3" \ -v DELTA="${4:-0}" \ ' BEGIN { split(PKGS, pkgs, "\x1c"); split(MIRRORS, mirrors, "\x1c"); offset = -1; for (i in pkgs) { sep = ""; for (j in mirrors) { printf("%s", sep mirrors[(j + offset) % length(mirrors) + 1] pkgs[i]); sep = separator; } printf("\n"); offset += DELTA; } } ' } # Usage: fastest_mirrors N function fastest_mirrors () { if [ ! -f "$BENCHMARKRESULT" ]; then apt-cyg benchmark-parallel-mirrors-list > "$BENCHMARKRESULT" fi tail -n $1 "$BENCHMARKRESULT" | sort -V } # Usage: fastest_mirrors_joined N [separator:-\\x1c] function fastest_mirrors_joined () { join "${2:-\\x1c}" $(fastest_mirrors $1 | awk '{print $2}') } # Usage: packages totalsize numfiles function packages () { grep install: "$(apt-cyg pathof setup.ini)" | sort -nk3 | awk -v SIZE="$1" -v N="$2" '(SIZE/N) < $3 && n++ < N {print $0}' } # Usage: packages_joined totalsize numfiles [separator:-\\x1c] function packages_joined () { join "${3:-\\x1c}" $(packages "$1" "$2" | awk '{print $2}') } # Usage: packages_size totalsize numfiles function packages_size () { packages $1 $2 | awk '{sum += $3}END{print sum}' } # Usage: benchmark-aria2c J S packages mirrors [offset_delta] function benchmark-aria2c () { local i make_dl_list "\t" $3 $4 $5 > ${TMPFILE}.urls time aria2c --file-allocation=falloc --allow-overwrite=true -j "$1" -s "$2" --input-file ${TMPFILE}.urls for i in $(echo $packages | awk -v RS="\x1c" '{print $0}'); do rm -f ${i##*/} done } packages1=$(packages_joined $[100*10**6] 1) packages5=$(packages_joined $[100*10**6] 5) packages2=$(packages_joined $[100*10**6] 2) packages4=$(packages_joined $[100*10**6] 4) packages8=$(packages_joined $[100*10**6] 8) packages16=$(packages_joined $[100*10**6] 16) mirrors_kernel_org=$(fastest_mirrors 50 | awk '/http:.*kernel.org/ {print $2; exit}') mirrors_fastest1=$(fastest_mirrors_joined 1) mirrors_fastest2=$(fastest_mirrors_joined 2) mirrors_fastest4=$(fastest_mirrors_joined 4) mirrors_fastest8=$(fastest_mirrors_joined 8) mirrors_fastest16=$(fastest_mirrors_joined 16) mirrors_fastest32=$(fastest_mirrors_joined 32) cat<<'EOD' > ${TMPFILE}.batch echo "////////////////////////////////////////////////////////////////////////////" df -h / time dd if=/dev/zero of=${TMPFILE}.zero bs=100M count=1 ; rm -f ${TMPFILE}.zero echo "////////////////////////////////////////////////////////////////////////////" packages $BENCHMARKSIZE 1 && packages_size $BENCHMARKSIZE 1 packages $BENCHMARKSIZE 5 && packages_size $BENCHMARKSIZE 5 packages $BENCHMARKSIZE 2 && packages_size $BENCHMARKSIZE 2 packages $BENCHMARKSIZE 4 && packages_size $BENCHMARKSIZE 4 packages $BENCHMARKSIZE 8 && packages_size $BENCHMARKSIZE 8 packages $BENCHMARKSIZE 16 && packages_size $BENCHMARKSIZE 16 fastest_mirrors 32 echo "////////////////////////////////////////////////////////////////////////////" benchmark-aria2c 1 1 $packages5 $mirrors_kernel_org benchmark-aria2c 5 1 $packages5 $mirrors_kernel_org benchmark-aria2c 1 5 $packages5 $mirrors_kernel_org benchmark-aria2c 1 1 $packages5 $mirrors_fastest1 benchmark-aria2c 5 1 $packages5 $mirrors_fastest1 benchmark-aria2c 1 5 $packages5 $mirrors_fastest1 echo "////////////////////////////////////////////////////////////////////////////" benchmark-aria2c 1 1 $packages1 $mirrors_fastest1 benchmark-aria2c 1 2 $packages1 $mirrors_fastest1 benchmark-aria2c 1 4 $packages1 $mirrors_fastest1 benchmark-aria2c 1 8 $packages1 $mirrors_fastest1 benchmark-aria2c 2 1 $packages2 $mirrors_fastest2 benchmark-aria2c 2 2 $packages2 $mirrors_fastest2 benchmark-aria2c 2 4 $packages2 $mirrors_fastest2 benchmark-aria2c 2 8 $packages2 $mirrors_fastest2 benchmark-aria2c 4 1 $packages4 $mirrors_fastest4 benchmark-aria2c 4 2 $packages4 $mirrors_fastest4 benchmark-aria2c 4 4 $packages4 $mirrors_fastest4 benchmark-aria2c 4 8 $packages4 $mirrors_fastest4 benchmark-aria2c 8 1 $packages8 $mirrors_fastest8 benchmark-aria2c 8 2 $packages8 $mirrors_fastest8 benchmark-aria2c 8 4 $packages8 $mirrors_fastest8 #benchmark-aria2c 8 8 $packages8 $mirrors_fastest8 echo "////////////////////////////////////////////////////////////////////////////" benchmark-aria2c 2 1 $packages2 $mirrors_fastest2 1 benchmark-aria2c 4 1 $packages4 $mirrors_fastest2 1 benchmark-aria2c 4 1 $packages4 $mirrors_fastest4 1 benchmark-aria2c 8 1 $packages8 $mirrors_fastest2 1 benchmark-aria2c 8 1 $packages8 $mirrors_fastest4 1 benchmark-aria2c 8 1 $packages8 $mirrors_fastest8 1 echo "////////////////////////////////////////////////////////////////////////////" EOD cat ${TMPFILE}.batch | while read i; do echo "#############################################################################" echo "[$(date +%Y%m%d_%H%M%S)]" echo "\$ $i" eval "$i" done 2>&1 | tee log.txt,$(date +%Y%m%d_%H%M%S).txt結果のログ
結果部分抽出
$ grep "time\|aria\|real" log.txt,20140526_093222.txt $ time dd if=/dev/zero of=${TMPFILE}.zero bs=100M count=1 ; rm -f ${TMPFILE}.zero real 0m1.109s $ benchmark-aria2c 1 1 $packages5 $mirrors_kernel_org real 3m53.606s $ benchmark-aria2c 5 1 $packages5 $mirrors_kernel_org real 0m44.549s $ benchmark-aria2c 1 5 $packages5 $mirrors_kernel_org real 0m51.003s $ benchmark-aria2c 1 1 $packages5 $mirrors_fastest1 real 0m18.282s $ benchmark-aria2c 5 1 $packages5 $mirrors_fastest1 real 0m4.500s $ benchmark-aria2c 1 5 $packages5 $mirrors_fastest1 real 0m9.329s $ benchmark-aria2c 1 1 $packages1 $mirrors_fastest1 real 0m15.938s $ benchmark-aria2c 1 2 $packages1 $mirrors_fastest1 real 0m11.672s $ benchmark-aria2c 1 4 $packages1 $mirrors_fastest1 real 0m8.360s $ benchmark-aria2c 1 8 $packages1 $mirrors_fastest1 real 0m7.032s $ benchmark-aria2c 2 1 $packages2 $mirrors_fastest2 real 0m10.469s $ benchmark-aria2c 2 2 $packages2 $mirrors_fastest2 real 0m7.938s $ benchmark-aria2c 2 4 $packages2 $mirrors_fastest2 real 0m9.063s $ benchmark-aria2c 2 8 $packages2 $mirrors_fastest2 real 0m8.969s $ benchmark-aria2c 4 1 $packages4 $mirrors_fastest4 real 0m6.328s $ benchmark-aria2c 4 2 $packages4 $mirrors_fastest4 real 0m8.547s $ benchmark-aria2c 4 4 $packages4 $mirrors_fastest4 real 0m7.297s $ benchmark-aria2c 4 8 $packages4 $mirrors_fastest4 real 0m6.688s $ benchmark-aria2c 8 1 $packages8 $mirrors_fastest8 real 0m4.688s $ benchmark-aria2c 8 2 $packages8 $mirrors_fastest8 real 0m7.579s $ benchmark-aria2c 8 4 $packages8 $mirrors_fastest8 real 0m9.063s $ #benchmark-aria2c 8 8 $packages8 $mirrors_fastest8 $ benchmark-aria2c 2 1 $packages2 $mirrors_fastest2 1 real 0m8.875s $ benchmark-aria2c 4 1 $packages4 $mirrors_fastest2 1 real 0m5.422s $ benchmark-aria2c 4 1 $packages4 $mirrors_fastest4 1 real 0m14.469s $ benchmark-aria2c 8 1 $packages8 $mirrors_fastest2 1 real 0m4.000s $ benchmark-aria2c 8 1 $packages8 $mirrors_fastest4 1 real 0m8.594s $ benchmark-aria2c 8 1 $packages8 $mirrors_fastest8 1 real 0m35.330s8ファイルで8分割すると、separate されたサイズが小さくなりすぎるようで WARN が大量に出るので除外している。
細かいところ見ると、
ダウンロード後、ダウンロードしたファイルの削除に失敗してたりするけど、
時間切れになってしまったので、とりあえず出来た範囲で。
あとで、もう少し見易くまとめる。
- apt-cyg
- クエリな午後 / 2014-05-20: apt-cyg を2倍くらい高速化してみた
タグ
コメントをかく