また最近長距離間のリモートホストとのやりとりについて調査していたので何となく分かったことを書く。
Haphostのサーバーはリヒテンシュタインにあり、日本からのRTTが260ms程度ある。
RTTが260msもあると何が困るかというと、全てのレスポンスが0.2~0.3秒ほど遅くなる。
TeraTermを使っていると、キーを一回押してそのキーがコンソールに表示されるまで0.2秒かかるということ。
キーの反応が遅いのでスペックかと思いそうだが、マシンスペックや帯域とは関係なく単に信号の送受信に時間がかかるというだけ。
すると露骨にタイピングがしにくくなるし、特に"ls"など0.1秒くらいで打てるコマンドに安心してエンターが押せなくなる。慣れるとコンソールに表示される前にエンターを送信するようになるが。
アマゾンのEC2でも試したが、アメリカなら100ms~200ms、ヨーロッパなら200ms、そして最大のRTTがブラジルのサンパウロ、390msだった。地球の裏側だからね。
EC2のXLargeのマシンでもRTTが多いとコマンドタイプのレスポンスはもっさりする。これはもうどうしようもないのでこういうもんだと思うしかない。
もう一つはファイル転送が回線帯域ではなくRTTによって頭打ちになること。
Haphostは帯域幅10Mbpsと書いてある(まぁそんな速度が出るとは思わないが)。
転送速度の頭打ちはTCPのファイル転送の仕組みによる。ファイルを送信する場合、ある程度のデータ量に区切って送る。
データを送信 → 受信側が受信後に確認応答を送信 → それを受け取ったら続きのデータを送信、でファイル終わりまでどんどん送る。(確認応答が無ければ再送するなどする)
この仕組み自体に問題は無いんだけど区切る量がTCPウィンドウサイズと言って64kbという少量なのが問題。
回線速度的に64kbを送るのが一瞬だとしてもその確認応答を受け取るまでにRTTの0.2秒かかる。
つまり0.2秒に64kbずつしか送れない。毎秒320kbしか転送出来ないのはちょと遅いと感じる。
前回触れたUDPを使った高速転送はこの場合に有効で、UDPは確認応答を待たずにどんどんデータを送るので回線速度一杯の速度が出る(当然パケットロスト時の処理は独自に行う必要がある)。OSSなら「Tsunami UDP Protocol」、製品ならSKEED社の「Silver Bullet」や富士通の「BI.DAN-GUN」など、探せばいくつかあるだろう。
まぁそんなの用意するのは面倒なのでHaphostの場合、HTTPサーバを立てて分割ダウンロードソフトで複数コネクションを張れば十分な速度でダウンロードできる。5分割もすれば回線速度一杯の速度になるはず。アップロードもFTPで分割アップロード出来そうな感じだが、よく分かんないので仕方なくSCPでのんびり転送している。
そもそもTCPウィンドウサイズが64kbというのは拡張されているはずなのに、実測したりUDPを使った転送と速度比較をするとどう考えてもウィンドウサイズ64kbで転送されている。
本当はUDPの転送ソリューションなんて使わずにウィンドウサイズを増やすだけで十分な速度になるはずなのにどうもそうなってない。この辺詳しい人に聞いてみたいなぁ。
ちなみにHaphostではsysctlの設定は変えられないようだ。このVPSはOpen-VZで構築されており、カーネルは共有しているらしいからその制限のようだ。
bashコンソールに色が無い
環境によるのか分からないがTeraTermでのコンソールで色が付いていなかった(ls -laしたときなどのディレクトリや実行ファイルに色が付く機能)。/etc/profileに以下を追記
export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS'
日本語が文字化け
OSの文字コードはUTF-8のはずなのだがVimで日本語は文字化けしていた。 以下のコマンドを実行。update-locale LANG=ja_JP.UTF-8こうするとメッセージなども日本語になる。
0 件のコメント:
コメントを投稿