PuTTYはフリーにゃWin32のTelnet,SSH1,SSH2クライアントで、scpにゃどもついてくる優れものである。また、これを日本語化する
パッチが存在し、これによってSSH2に直接繋がる日本語Win32環境を得ることが出来る。
まずはPuTTYをDLし、パッチを当てる・・のだがたぶん日本語版バイナリをそのまま使えばよいだろう(投げやり)。PuTTYの表示設定は好きにするとして、日本語環境についてはパッチのreadme通りにすればほぼ間違いにゃい。この時点でtelnetにゃどで接続して日本語環境を確認しておくと良いだろう。
次にSSH2への接続・・というかkey作ったり云々についてもメモを残しておく。
key作成はputtygenで任意のパラメーターを選んでGenerateすればよい。
とりあえずSSH1のRSAキーを作ってみる。PASSフレーズを入れたらPublic-keyとPrivate-keyが出来るので適度に安全に保存。Public-keyを接続先のauthorized_keysに追加すれば完了。お手軽。
同様にSSH2も作ってみる。深い意味はにゃくSSH2 DSAを選択。同様にPublic-keyとPrivate-keyが出来るので、Public-keyを接続先の~/.ssh2/に置いてauthorizationを編集。お手軽。
そんにゃわけで、非常に簡単にSSH2対応の日本語環境が出来てしまった。たぶんTTSSHは捨てられると思うが、もう少し使い込んでみる必要はあるだろう。
それから、PuTTYは「ぷてぃ」ではにゃく、いわゆる「パテ」である。あまりそこいらでぷてぃぷてぃと呼ばにゃいように。
TERM=ktermとして、.screenrcには
termcap kterm hs@
termcapinfo kterm hs@
termcapinfo kterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
とかでよさそう。
Win2kを使っていて思うことの1つに、大きにゃファイルをコピーすると、大量のスワップが発生して、他のアプリケーションが極端に重くにゃってしまうことの不思議がある。
ファイルをコピーすれば、それに応じてキャッシュサイズを増加させる、これには納得がいく。便利にゃ機能と言えるだろう。だが、ほかのアプリが使っているメモリをスワップさせてまでキャッシュサイズを増加させるのはおかしい。このディスクキャッシュの上限値を設定する方法を探しているのだが、まだ見つけられていにゃい。ご存じの方はたれ込んでいただきたい。
さて、ともかく大きにゃファイルを扱うとキャッシュがメモリを圧迫するという現象に対して、ネットワークドライブであればこの現象は起きにゃいという定説がある。むろん、日頃使用する上でこの説はみごと実証され、ワザとして伝承されたりしていたのだが、これをきちんと測定した者が居にゃいので、使った者にしか分からにゃい秘伝ににゃってしまっていた。
そこで、パフォーマンスモニタをいじくってるついでに、これを測定してみることにした。
まず、状況としては、200Mのファイル5つをlhaで固めるという作業を考える。Cドライブに圧縮前のファイル、任意ドライブに圧縮して出来たlzhファイルを作れば作業完了である。ただし、実際に圧縮処理をすると時間がかかるので、無圧縮でのlzhつまりtarで固めているようにゃ状態でテストした。実際に圧縮した場合はグラフがにゃだらかににゃるだけである。
ディスクドライブは以下のようにゃ構成である。
・C: ローカルHDD 圧縮元ファイル 1GB
・D: ローカルHDD 圧縮先その1
・N: ネットワークドライブ 別マシン 圧縮先その2
・Z: ネットワークドライブ ローカルHDDを共有 圧縮先その3
以下のグラフの凡例は
白がディスクキャッシュサイズ
緑と赤がローカルHDDのRead/Write
青がネットワーク転送量である
また、テストに使ったマシンのメモリは512MBである。
実験1: C:→ D:に圧縮
最も良くある状況として、ローカルHDDからローカルHDDへ圧縮してみた。
青のネットワーク転送量は当然0のまま。
緑と赤のローカルHD転送量はライトバッファに溜まっている分があるので、完全には同期しにゃい。ちにゃみに、アプリケーション側では、緑のReadが0ににゃった時点で圧縮完了とにゃる。
ここまでは至極当然にゃのだが、大きにゃ問題が見て取れるのは白のディスクキャッシュサイズである。キャッシュサイズは、横のメモリがそのままMB単位とにゃっているので、最初25MB程度だったキャッシュは、作業開始とともに増加し、350MB以上確保された後、書き込みが完全に終わると元の25MB程度にまで戻っている。
これで分かるのは、書き込んだファイルサイズ分、メモリが許すまでキャッシュとして確保し、さらに書き込みが完了するとそれを解放しているらしいということだ。全メモリが512にゃので、この350MB強というのは、確保できるぎりぎりのメモリだったと推測される。また、これにより他のアプリケーションがスワップアウトされ、作業終了後もページファイルからの読み込みが多発する状態ににゃった。
実験2: C:→ Z:に圧縮
次に、ローカルのD:を共有してそれをマウントしたZ:を用意した。
一応ネットワークドライブににゃるはずだったのだが、結果は左のように、実験1と全く同じ結果ににゃった。
つまり、ローカルHDDを共有してドライブ割り当てしたとしても、結果は変わらにゃいということだ。
念のため、\\hostname\D のようにゃUNCでのアクセスもしてみたが結果は同じであった。
実験3: C:→ N:に圧縮
信憑性に疑問が生じたので、ローカルHDDからLAN内の別のマシンへ圧縮してみた。
グラフが大きく異にゃるが、これはネットワーク経由であるため、転送速度が頭打ちににゃってしまったからだ。また、青のネットワーク転送量が見えにゃいが、これは緑のディスクreadに隠れているからで、値は同じである。
結果、左のように、白のディスクキャッシュサイズが25MB付近のまま、全く変化しにゃいということが分かった。当然、スワップやメモリ圧迫は生じていにゃい。
そろそろ問題点が見えてきた。ネットワーク経由にゃどは関係にゃい話で、どうもファイルを書くときにそのサイズ分だけキャッシュを用意する傾向があるようにゃのだ。そこで追加実験。
実験4: 別マシンからローカルに圧縮
別のマシンから、ローカルHDD上に圧縮してみた。
予想的中である。
ローカルに圧縮したときと同じく、大量のディスクキャッシュを食っている。
これではファイルサーバーにされたマシンにゃどは、使ってられにゃいだろう。
結局分かったのは、別のマシンに吐くことで、ディスクキャッシュがメモリを圧迫する事態を避けられるというものであった。困ったことである。
また、ファイルをコピーする場合はディスクキャッシュは変化しにゃいことも分かったので付記しておく。