hack のためのネタ帳, etc,,,

あまり速いって印象ないんだけど、
apt-cyg が2倍速くなった。aria2c 爆速と言ってる人がいたのでとりあえず検証
cygwin の package で約 100 MB の texlive-collection-langcjk-20120628-1.tar.bz2 で計ってみた。

2014-05-15: 分割ダウンロードの速度比較

NTT西日本フレッツ光隼でOCNから接続
当日のコンディション

iij のみ

wget 単独
$ 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.765s
aria2c 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.561s
aria2c 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

jaist, yamagata, iij 複合

wget 単独
$ 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

cygwin 全 mirror

$ 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つのファイルを分割して並列に落とすよりも、ファイルは分割せずに複数ファイルを並列で落とすほうが効率が良さそう。

2014-05-20: 再検証

lambdalice / cyg-fast / Add --no-file-alloc for slow I/O systems 見て、
最近の 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サーバーは以下のような状況。
$ 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 が飛び抜けてる。

2014-05-26: 再検証

分割なしの複数ファイル並列を試して欲しいと要望があったのでテスト
その前に、ディスクのパフォーマンス測ったら、こんな感じだった。
[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
結果のログ

log.txt,20140526_093222.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.330s
8ファイルで8分割すると、separate されたサイズが小さくなりすぎるようで WARN が大量に出るので除外している。
細かいところ見ると、
ダウンロード後、ダウンロードしたファイルの削除に失敗してたりするけど、
時間切れになってしまったので、とりあえず出来た範囲で。
あとで、もう少し見易くまとめる。

関連

タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます