「実は OS/2 って最強の SMP 対応 OS(だった)らしい?」みたいな話が…

少し前に os2world のフォーラムに投稿されてた話が個人的にすこし興味深かったので、テキトーに日本語化してご紹介してみようと思ってたらすっかり忘れてましたてへぺろ
ということで以下フィーリングで訳してみました。原文はこのへんです。


もうひとつの長所は(それが欠点でもあるのですが)スレッドと SMP の扱いです。複数のプロセッサを利用することにかけては、OS/2 はほぼ間違いなく最高の OS です。複数プロセッサの利用に関して、私には PC ベースの OS 上では OS/2 での結果に匹敵するものを出すことが全くできませんでした。この点に関していえば、Windows ははっきりいってサイテーの OS で、SMP は後付けかと思うほどのやっつけ仕事です。OS/2 のコアは SMP をうまく動かすための微調整(workaround)がどっさり入っているわけですが、それはいまだにきちんと――うまく動作し、しかもマルチスレッドの OS/2 システムサービスを呼び出すことによって、(多くのコマンドライン物を含む)単一スレッドのアプリにさえもその利益を与えるのです(じっさいコマンドラインウィンドウを開いて作業をおこない、スレッド数が2以上になることを確認すれば、おわかりになるかと)。そして CPU をまたいだスレッド作成、非アクティブあるいは待ち状態のスレッドのスリープ、バックエンドをぜんぶ動かす――こういった点において、私が試したなかで OS/2 の能力を上回るものは皆無です。

ある同一のコード(FFMPEG のような、Linux の移植もの色々)をそれぞれの OS 用にコンパイルして動かすと、より多くのタスクを突っ込めるという点で、遅めの OS/2 システムのほうが Window よりはるかに使い物になるのです。OS/2 は非常に良好にスケールします。Windows はいまいちですね。

これは、(多くのソフトウェア企業が SMP のマルチスレッド的な側面を強調していることもあって、)多大のリソースが浪費される状況を引き起こします。これもまたマイクロソフトのひどくマズいところです。Linux の場合は、最初はスレッドエンジンがなく、pthreads(比較はしてません)が搭載されることで改善しました。Microsoft の場合、すこし有名な IBM eServer xSeries 430(IBM の 64 CPU xSeries)では IBM の支援がないと 8CPU までの SMP サポートしか得られず、それどころか、IBM の支援があってさえ、Windows は 32 CPU しか扱えず、しかもその x430 はハードウェアセグメンテーションを許可する設定にして、完全武装の x430 を 32 CPU のマシン2台として動作するようにしなければならなかったのです。OS を OS/2 のままにしておけば、こいつをまるごとフル 64 CPU モードのシングルセグメントで動作させることができるのですが。

私は、ビジー状態になっている古い SMP の OS/2 マシン上で、3〜4つの FFMPEG セッションを起動することがよくあるのですが、それがもっと速い Windows の SMP マシンを圧倒するのをよく見かけることになります。1対1(どちらにも FFMPEG ひとつ)なら、もちろん Windows が勝ちますよ…ただ、複数の FFMPEG セッションがすべての CPU につぎ込まれているときの SMP の活用効率は、Windows の場合、OS/2 がより遅いハードウェアをギリギリまで使っていることとはほとんど比較になりません。

嗚呼、ソフトウェアデザイナーに出来うることは何もなく、Micorosoft のぐちゃぐちゃな SMP 対応を押し付けられるのみ。

もちろん、OS/2 のデザインにはこれらの領域における欠点があります。スレッド数の制限、メモリ構成の制約、隣接メモリブロックを再構築する共有メモリプールのクリーンアップ機構の欠如(このため、開放されたメモリが大量にあってもこまかく断片化されている場合、メモリ不足をひきおこす)がそういったものですね。

まあ要するに SMP 環境のスペックギリギリのところで使うと(おもに Windows より)OS/2 のほうが運用効率がいいよ、的なことだと思うのですが実際どうなんだろうか…

(以前「4CPU 以上の SMP 環境でパフォーマンス関係の API 呼ぶと問答無用でクラッシュ」みたいなレポート受けたり TCPIP 関係の SMP 不具合回避野良パッチとか見てたんで、最初にこれ読んだときはぶっちゃけ「そもそも OS/2 の SMP 環境って信じちゃっていいの?」みたいな感じで少しぐにょった気持ちになったりした。x430 って Pentium3 Xeon とかなんですね。P3 時代までは CPU 速度がらみの不具合とかあんまり露呈してなかったのかな…)

あと比較対象があくまで「PC 用 OS」つまり主に Windows で、AIX とかは入ってないし、Linux についてもあまり詳しく検討されていない気配、ということは言っておかないとまずいかもしれない。