●逆襲のOS/2●(2005.12.13/2008.02.10)

ファイル操作に関する注意点

PM上のファイル操作のパフォーマンスの悪さはOS/2の大きな欠点で、大量のファイルを一度にコピーしたり削除したりすると、驚くほど時間が掛かり、信じられないほど不安定になる。犯人は拡張属性とUNDELETE用ファイルのようだが、100MBや200MBのファイル移動に数時間掛かるのでは、とても実用にはならない。

●ファイル操作中にフォルダオブジェクトをいじらない

PMではファイルのコピーや移動に膨大な時間が掛かるため、大量のファイルを操作するときは、進行状況を知りたくて、ついターゲットドライブやフォルダのプロパティを開けようとしてしまいがちだが、これを迂闊にやるとPMがハングする。特に、ネットワーク・ドライブがターゲットの場合、ほとんど即死と思った方がよい。ファイル操作中には、絶対にソース/ターゲットのフォルダはいじらないこと!進行状況が知りたければ、予めドライブのオブジェクトをツリー形式で開いておいて、空きスペースが常時見えるようにしておくとよい。また、WarpCenterのディスクスペース表示を使うのも便利。

●ターゲットフォルダは開いておく

ターゲットフォルダ内に多くのファイルが入っている場合、閉じたままの状態でファイルを移動/コピーをすると、処理に異様に長い時間が掛かる。ファイル数が100くらいを超えると「引っ掛かり」が気になるようになり、200くらいを超えると支障の出るレベルになる。表示順のソートの有無とも関係はあるようだが、ソートを掛けなくてもこの現象は起きる。そのような場合は、ターゲットフォルダを開いておくとよい(最小化も可)。処理が非常に高速になる。

●十分な空き容量を確保する

これははっきりしないのだが、経験的に、HDDの空き容量が少なくなるとファイル処理が非常に遅くなるような気がする。いわゆるフラグメンテーションが原因と思われるが、HPFSはフラグメンテーション・フリーをウリにしていたはず。

●PMではなくコマンドラインで操作する

OS/2窓でXCOPYを使ってディレクトリのコピーをするのが、最も確実で安定していてシステム負荷が小さく高速である。PMでファイルを操作するのが根本的な間違い。ただし、拡張属性の問題からか、ネットワークドライブにXCOPYでディレクトリ単位のコピーをしようとすると、エラーが発生して操作が拒否される(オプションで回避できるかも)。また、XCOPYは差分コピーができないのも不便(アーカイブ属性を使った更新コピーは可能だが)。で、仕方ないのでディレクトリ単位の更新コピーが可能なREXXスクリプトを作ってみた。まあ、大昔に作ったもので、いま読むと恥ずかしいようなデキだが、とりあえず間に合うので、ほとんど手を加えずに7年使っている。なお、私は削除もPMではなく、自作のファイラー(Delphiで作った)の削除機能を使っている。

●FM/2を使う (2007.04.24)

FM/2はOS/2では定番のファイラーだが、私は今まであまり使う気になれなかった。それは、GUIベースの操作系が気に入らなかったからだ。確かに、VZファイラーの代わりにはならない。しかし、PMの代替と考えるとそんなに悪い選択肢ではない。PMと同じように操作できて、しかもPMよりも圧倒的に速い。ただし、これにも問題がある。どうやら、リソース消費が激しいようで、長時間ヘビィな使い方(1000以上の画像ファイルの操作)をすると、操作不能に陥った挙げ句、PMを飛ばすんだよね。挙動不審になったら、早めにシステムをリブートすること。

●DELDIRはREMったままにしておく

PM上で削除したファイルを復活させるには、CONFIG.SYSの中にある、DELDIR環境変数を有効にしなくてはならない。
rem SET DELDIR=C:\DELETE,512;D:\DELETE,512;E:\DELETE,512;F:\DELETE...
これが設定してあるドライブでは、UNDELETEコマンドを実行すれば、削除ファイルが復活できる。しかし、削除のたびにDELETE情報を書き換えるため、大量のファイルを削除したり移動する際には非常に長い時間が掛かる。したがって、この設定はREMのままにしておいて、決して有効にしてはならない。削除ファイルの復活にはフリーソフトのhpfstoolやFile Phoenixを使うこと。個人的には、hpfstoolの方が使いやすいと思う。

●キャッシュを考慮する (2007.04.24)

一般に、ディスクキャッシュはファイル操作を高速化するためのものだが、使い方によっては逆にパフォーマンスを落とす。キャッシュ管理自体にかなり大きなCPUパワーが必要だからだ。その顕著な例がPM ViewのOpenウィンドウにおけるファイル操作だ(別項参照)。

キャッシュは大きければ快適というものではない。使用環境に応じて、極端に大きくする方がよい場合もあるし、逆にゼロの方が快適な場合もあるだろう。キャッシュの容量はCONFIG.SYSIFS=D:\OS2\HPFS.IFS /CACHE:1024で指定できるが、指定可能範囲は64KB〜2048KBで、パフォーマンスに極端な影響を与えるような指定は不可能になっている。ちなみに、キャッシュ容量はCACHEコマンドで確認できる。

要は、ファイル操作が不自然に重くなったとき、何が起きているのか推定して、それに応じた対処を取ること。たとえば、前述のPM Viewの例では、ウィンドウ内の全てのファイルを選択して僅かにドラッグすれば、すべてのファイルがキャッシュに入って、パフォーマンスが劇的に向上する。

●起動時のオートチェックを外す (2007.04.24)

デバドラのデキによっては、OS/2はしばしばクラッシュする。これは事実である。特にUSB関連はかなり恐い。でも、今やUSBは必須なので、クラッシュをある程度覚悟しても、使わないわけにはいかない。

問題は、クラッシュ後の再起動時のHDDオートチェック。私は40GBのHDDを使用しているが、そのすべてにチェックを掛けると30分くらい掛かる。仕事で納品直前にこれをやられるとたまらない(原稿をUSBメモリにコピーして納品することが多いので…)。

そこで、データドライブにはオートチェックを付けないことを強く推奨する。私の環境の場合、D:(システム2GB)、E:(ワーク2GB)、G:(ツール2GB)は必須なので、この3ドライブだけはオートチェックの対象にするが、主にデータ保存用の他のドライブはオートチェックの対象から外す。私の環境ではD:とE:はFATなので、HPFSに限れば次のようになる。

 IFS=D:\OS2\HPFS.IFS /CACHE:1024 /CRECL:4 /AUTOCHECK:GHIJ
                         ↓
 IFS=D:\OS2\HPFS.IFS /CACHE:1024 /CRECL:4 /AUTOCHECK:G
ちなみに、オートチェックを外したドライブには、そのままではアクセスできない。システム起動後、CHECKDSKを掛けること。もちろん、これもかなり長い時間が掛かるのだが、CHECKDSK動作中も他の操作は可能なので、デッドタイムは劇的に減少する。

●遅延書き込みはパフォーマンスにはほとんど無関係 (2007.04.24)

CACHEコマンドを使うと、遅延書き込みをオフにできる。しかし、これはファイル操作のパフォーマンスにはほとんど影響を与えないようだ。PM上でのファイル操作が異様に遅いのは、根本的にはPMの拡張属性の問題だろう。

【逆襲のOS/2目次】 【ホーム】