盆栽マシンの記録

ロースペックマシンをあれこれとチューニングして それなりに動作するように手を加えることを自分の中では盆栽と 呼んでいるのだが、 何台かあるマシンのうち 典型的な盆栽について紹介したいと思う*1

概要

このマシンは、勤務先の人から個人的に譲り受けたPC本体に、 手持ちの周辺機器の実装、取付治具などの自作を行い作成した。 スペックは以下の通り;

ベースシステムIBM Aptiva 520
CPUIntel 486DX4 / 100MHz
メモリ24MB
ハードディスクIDE×4式: 425MB, 700MB, 1280MB, 800MB
I/OバスISAバス: スロット×4
ネットワークNE2000互換×2式: 10BASE-5, 10BASE-5, 10BASE-T
シリアルポートRS-232C×4チャンネル
パラレルポート2チャンネル
フロッピーディスク3.5インチ×1

外形

All.jpg

本体はIBMのAptiva 520がベース。 ディスプレイは、モノクロ9インチCRTを接続。
OSには、Unix系のOpenBSDをインストールしている。 このマシンは実装メモリが24MBと少ないため、X Windowはインストールしておらず、 本機単体でのグラフィックや日本語の表示はできない。ASCIIのみ表示可。

追記: 2018年現在、VGAのドライバをカーネルから外し、シリアルポートをコンソールデバイスとして使用している。シリアルラインはfuguita.orgに接続されているので、メンテナンス時はfuguita.orgからkermitを使用してログインしている。

#img(): File not found:

ペリフェラル

I/OバスはISAのみ*2。 よってIRQの割当は全て手動設定である。

IO_IntrNear.jpg
CENTER:IRQ割当表 - ほぼ全てが割当済

I/Oスロットは全部で4つある。

Inner_Back.jpgIO_SlotMidium.jpg
CENTER:I/Oスロット実装状況I/Oスロット使用状況

4スロットのうち、2スロットにEthernetカードを実装。 どちらもNE2000互換カードで10BASE-2, 10BASE-Tに 対応*3
残り2スロットには、マルチI/Oカードを実装。 このカード中、シリアルポート2チャンネルを 使用(パラレルおよびゲームポートは、割り当てるIRQがないため、未使用)。 本体の2チャンネルと併せ、計4回線を接続可。

ストレージ

ハードディスクは4式を実装。
本来、実装できる台数は2式(wd0, wd1)までだが、CD-ROMを取り外し、 空スペースにwd2を増設(前面にはブランクパネルを取付)。
さらに3.5インチフロッピーディスクドライブ下に吊り下げる形で 自作HDDベイを設置し、wd3を増設。

Disk_BP.jpgInner_Front.jpg
前面ブランクパネルCENTER:ブランクパネルの内部
Disk_Stack13.jpgDisk_ExtBayFar.jpg
wd0~wd2取付状況wd3増設状況

これにより、IDEインターフェースのチャンネルは全て埋まっているため、 現時点で最大限の実装状態となっている。

ソフトウェア

OS_Login.jpg

使用OS: OpenBSD 3.0 (2001年) ~ OpenBSD 6.4 (2018年現在)

実装メモリ量が小さいため、OSカーネルは不必要な機能を削った カスタムカーネルを作成し使用している。
このカーネル起動時のdmesgはこちら→ filedmesg.boot.txt
ログインしてオペレーションを行った例はこちら→ filetypescript-hsv.txt

このマシンにはOpenBSD本体以外に、以下のようなソフトウェアが追加導入し、運用した実績がある;
bzip2 (ファイル圧縮), DeleGate (プロキシサーバ), dmassage (カーネル作成支援ツール), GNUPLOT (グラフ描画ソフト), ircd (IRCデーモン), Kermit (シリアル通信/ファイル転送), NetPBM (画像ファイル加工・変換ユティリティ), ng (日本語Micro GNU Emacsテキストエディタ), PHP-4 (スクリプト言語), APC (PHPアクセラレータ), screen (スクリーンマネージャ), Ruby (オブジェクト指向スクリプト言語), QuickML (メーリングリストドライバ), smtpfeed (高速メール配送エージェント)

このマシンは当初、外向けゲートウェイの予備機として運用されていたため、 追加インストールされたソフトウェアには、ネットワーク関連のものが多い。

#img(): File not found:

このマシンの動作速度の実測を行った結果を以下に示す。
測定対象として、セキュリティスキャナであるchkrootkit-0.48を 用い、そのコンパイル、及びchkrootkit自身の実行時間を測定した。

CPUメモリコンパイル所要時間 (秒)実行時間 (秒)
実時間ユーザシステム実時間ユーザシステム
486DX4 100MHz (盆栽)24MB70.8832.8719.85219.9357.74130.87
Pentium/MMX 200MHz64MB13.024.562.5345.5811.7518.94
Pentium-III 540MHz192MB2.251.140.678.882.715.49
Core2 4300 1800MHz1024MB0.410.210.182.000.851.78

以上の結果から、この「盆栽マシン」は、概ね 2007~2008年頃の標準的な性能を持つマシンの1/50~1/200程度の処理能力であることがわかる。

「盆栽」の意義

今まで見てきたように、このマシンは「今時の」マシンとは比べものにならな い程非力な処理能力しか持たない。

特に、メモリが非常に少ないため、現在デスクトップ環境で使われているよう な高機能なアプリケーションを使うことはほとんど不可能と思われる。また、 サーバとしての用途を考えても、高速なネットワーク通信や大容量のデータ処 理なども困難と思われ、ごく軽いサービスを提供することが運用可能な範囲だ ろう。

それでも、このような「盆栽」にはいくつかの存在意義があると考えている。

まず考えられるのが、スケラビリティに関連する技術の修得である。
このような非力なマシンであると、運用中すぐに性能の限界に達してしまう。 そのため、運用を正常に行うためには、システムの動作を基本から理解し、 それをもとにパフォーマンスを向上させるために必要な技術が求められる。
実際、管理者が意図せずともハイスペックなマシンを余裕をもって運用してい る場合に比べ、そのようなスキルが身に付きやすい場合が多い。
また、マシンに対して過大な負荷がかかった場合の挙動なども容易に体験でき るため、実運用に用いられるようなハイスペックマシンを管理する場合も、 「盆栽」を使用した経験から敷衍し、あるスペックがどの程度までスケールす るか、そしてスケールしなかった場合にどのようになるかをある程度予想する ことができる。

次に挙げられるのが、テスト及びリサーチ環境としての有用性である。
盆栽には、標準構成以外のハードウェアが増設されており、それを用いて 試験や調査を行うことができる。
例を挙げると、ネットワークインターフェースが複数実装されていることを利 用して、

などを経験できる。
一方、複数のシリアル回線により、ターミナルサーバ/ダイアルアップサーバ的 な運用を行うことも可能である。今までの実績としては、

など。
変ったところでは、ネットワークインターフェースとして SLIP のみサポートしている 測定機器 の接続を行ったこともある。
ストレージについても同様なことが言え、4式あるディスクを使用し、ソフト ウェアRAID構成による運用を行った実績がある。

最後に、ハードウェアとソフトウェアのそれぞれの技術を連携させて修得でき ることも利点として挙げたい。
例えば今回のマシンについて見てみると、サポートしているバスがISAバスのみ のため、接続機器のIRQの割り当ては人間が手動で行う必要がある。また、ハー ドディスクを増設する場合においても、物理的な取付方法から、ディスクの区 画割り当てやマウントポイントの設定に至るまで、様々な要素を検討する必要がある。
ネットワークなどについても同様にネットワークカードの実装や設定のみなら ず、実運用での帯域や負荷を考慮し、ネットワークサービスの構成を行わなけ ればならない。
このように、ハードとソフトの両面を考慮しながら構成を行うことは、システ ムの安定性/信頼の向上、あるいは価格/性能比の向上などに必要な技術の修得 に寄与すると考えられる。









....な~んて、もっともらしいこと書いたけど、
実際は好きでやってるだけなんですけどね。

以上。


*1 この fuguita.org も結構な盆栽だったりするが
*2 まだPCIどころかEISAも出ていなかった
*3 うち、1枚は、10BASE-5用のAUIポートも実装

Front page   New Page list Search Recent changes   Help   RSS of recent changes