ロースペックマシンをあれこれとチューニングして それなりに動作するように手を加えることを自分の中では盆栽と 呼んでいるのだが、 何台かあるマシンのうち 典型的な盆栽について紹介したいと思う*1。
このマシンは、勤務先の人から個人的に譲り受けたPC本体に、 手持ちの周辺機器の実装、取付治具などの自作を行い作成した。 スペックは以下の通り;
ベースシステム | IBM Aptiva 520 |
CPU | Intel 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 |
本体は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の割当は全て手動設定である。
I/Oスロットは全部で4つある。
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を増設。
これにより、IDEインターフェースのチャンネルは全て埋まっているため、 現時点で最大限の実装状態となっている。
使用OS: OpenBSD 3.0 (2001年) ~ OpenBSD 6.5 (2019年現在)
実装メモリ量が小さいため、OSカーネルは不必要な機能を削った
カスタムカーネルを作成し使用している。
このカーネル起動時のdmesgはこちら→ dmesg.boot.txt 。
ログインしてオペレーションを行った例はこちら→ typescript-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 (盆栽) | 24MB | 70.88 | 32.87 | 19.85 | 219.93 | 57.74 | 130.87 |
Pentium/MMX 200MHz | 64MB | 13.02 | 4.56 | 2.53 | 45.58 | 11.75 | 18.94 |
Pentium-III 540MHz | 192MB | 2.25 | 1.14 | 0.67 | 8.88 | 2.71 | 5.49 |
Core2 4300 1800MHz | 1024MB | 0.41 | 0.21 | 0.18 | 2.00 | 0.85 | 1.78 |
以上の結果から、この「盆栽マシン」は、概ね 2007~2008年頃の標準的な性能を持つマシンの1/50~1/200程度の処理能力であることがわかる。
今まで見てきたように、このマシンは「今時の」マシンとは比べものにならな い程非力な処理能力しか持たない。
特に、メモリが非常に少ないため、現在デスクトップ環境で使われているよう な高機能なアプリケーションを使うことはほとんど不可能と思われる。また、 サーバとしての用途を考えても、高速なネットワーク通信や大容量のデータ処 理なども困難と思われ、ごく軽いサービスを提供することが運用可能な範囲だ ろう。
それでも、このような「盆栽」にはいくつかの存在意義があると考えている。
まず考えられるのが、スケラビリティに関連する技術の修得である。
このような非力なマシンであると、運用中すぐに性能の限界に達してしまう。
そのため、運用を正常に行うためには、システムの動作を基本から理解し、
それをもとにパフォーマンスを向上させるために必要な技術が求められる。
実際、管理者が意図せずともハイスペックなマシンを余裕をもって運用してい
る場合に比べ、そのようなスキルが身に付きやすい場合が多い。
また、マシンに対して過大な負荷がかかった場合の挙動なども容易に体験でき
るため、実運用に用いられるようなハイスペックマシンを管理する場合も、
「盆栽」を使用した経験から敷衍し、あるスペックがどの程度までスケールす
るか、そしてスケールしなかった場合にどのようになるかをある程度予想する
ことができる。
次に挙げられるのが、テスト及びリサーチ環境としての有用性である。
盆栽には、標準構成以外のハードウェアが増設されており、それを用いて
試験や調査を行うことができる。
例を挙げると、ネットワークインターフェースが複数実装されていることを利
用して、
などを経験できる。
一方、複数のシリアル回線により、ターミナルサーバ/ダイアルアップサーバ的
な運用を行うことも可能である。今までの実績としては、
など。
変ったところでは、ネットワークインターフェースとして
SLIP
のみサポートしている
測定機器
の接続を行ったこともある。
ストレージについても同様なことが言え、4式あるディスクを使用し、ソフト
ウェアRAID構成による運用を行った実績がある。
最後に、ハードウェアとソフトウェアのそれぞれの技術を連携させて修得でき
ることも利点として挙げたい。
例えば今回のマシンについて見てみると、サポートしているバスがISAバスのみ
のため、接続機器のIRQの割り当ては人間が手動で行う必要がある。また、ハー
ドディスクを増設する場合においても、物理的な取付方法から、ディスクの区
画割り当てやマウントポイントの設定に至るまで、様々な要素を検討する必要がある。
ネットワークなどについても同様にネットワークカードの実装や設定のみなら
ず、実運用での帯域や負荷を考慮し、ネットワークサービスの構成を行わなけ
ればならない。
このように、ハードとソフトの両面を考慮しながら構成を行うことは、システ
ムの安定性/信頼の向上、あるいは価格/性能比の向上などに必要な技術の修得
に寄与すると考えられる。
....な~んて、もっともらしいこと書いたけど、
実際は好きでやってるだけなんですけどね。
以上。