4.1 マシン環境 |
4.2 カーネル構築 |
4.2.1 2.2.x系
2.2.x系では"make config"、もしくは"make xcnofig"実行時に選択項目として SMPか否かを選びます。4.2.2 2.0.x系
2.0.x系はSMPを正式にはサポートしていませんので、 "make config"、もしくは"make xcnofig"実行後に 直接Makefileを変更します。 変更といってもコメント文を有効にするだけです。変更前 14行目:# SMP = 1 変更後 14行目:SMP = 1 |
4.3 procpsのインストール |
4.3.1 ダウンロード
以下のサイトから"procps-1.2.9-SMP-GW.patched.tgz"をダウンロードします。http://queenbee.fhcrc.org/~warms/procps
4.3.2 インストール
適当なディレクトリに"procps-1.2.9-SMP-GW.patched.tgz"を展開して コンパイルし、インストールします。4.3.3 使用方法
"procps-1.2.9-SMP-GW.patched"により以下のSMP対応コマンドがインストールされます:USER PID CPU %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND bin 84 1 0.0 0.1 860 284 ? S Nov 8 0:00 /sbin/rpc.portmap hironobu 121 1 0.0 0.0 1236 0 1 SW Nov 8 0:00 (tcsh) hironobu 135 0 0.0 0.0 1132 0 1 SW Nov 8 0:00 (startx) hironobu 136 1 0.0 0.0 1972 0 1 SW Nov 8 0:00 (xinit) hironobu 139 1 0.0 0.0 1132 0 1 SW Nov 8 0:00 (.xinitrc) hironobu 141 0 0.0 0.3 3060 620 1 S Nov 8 0:00 kinput2 -wnn hironobu 142 0 0.0 1.1 5736 2188 1 S Nov 8 4:22 kwm hironobu 155 0 0.0 1.8 7840 3544 1 S Nov 8 0:03 kfm hironobu 157 0 0.0 0.8 5276 1724 1 S Nov 8 0:01 krootwm hironobu 158 1 0.0 1.7 6576 3400 1 S Nov 8 0:11 kpanel hironobu 159 0 0.0 0.3 5812 652 1 S Nov 8 0:01 kbgndwm hironobu 179 0 0.0 0.0 1240 0 p0 SW Nov 8 0:00 (tcsh) hironobu 180 0 0.0 0.3 1316 632 p1 S Nov 8 0:01 (tcsh) hironobu 5964 0 0.0 2.5 7328 4952 p1 S 09:41 0:18 mule -nw hironobu 6816 1 0.0 0.3 1224 616 p1 S 17:28 0:00 /bin/tcsh -c ps aux hironobu 6821 0 0.0 0.2 920 400 p1 R 17:28 0:00 ps aux root 1 0 0.0 0.0 220 48 ? S Nov 8 0:03 init [3] root 2 0 0.0 0.0 0 0 ? SW Nov 8 0:03 (kflushd) root 3 1 0.0 0.0 0 0 ? SW Nov 8 0:03 (kupdate) root 4 1 0.0 0.0 0 0 ? SW Nov 8 0:00 (kpiod) root 5 0 0.0 0.0 0 0 ? SW Nov 8 0:02 (kswapd) root 88 1 0.0 0.0 852 164 ? S Nov 8 0:00 /usr/sbin/syslogd root 91 1 0.0 0.0 896 144 ? S Nov 8 0:00 /usr/sbin/klogd root 93 0 0.0 0.0 836 0 ? SW Nov 8 0:00 (inetd) root 95 0 0.0 0.0 856 0 ? SW Nov 8 0:00 (lpd) root 98 1 0.0 0.0 896 64 ? S Nov 8 0:02 /usr/sbin/rpc.mou root 100 0 0.0 0.0 916 68 ? S Nov 8 0:01 /usr/sbin/rpc.nfs root 103 0 0.0 0.0 836 188 ? S Nov 8 0:01 /usr/sbin/crond - root 122 1 0.0 0.0 832 0 2 SW Nov 8 0:00 (agetty) root 123 0 0.0 0.0 832 0 3 SW Nov 8 0:00 (agetty) root 124 1 0.0 0.0 832 0 4 SW Nov 8 0:00 (agetty) root 125 1 0.0 0.0 832 0 5 SW Nov 8 0:00 (agetty) root 126 0 0.0 0.0 832 0 6 SW Nov 8 0:00 (agetty) root 137 1 0.1 6.7 27324 12988 ? S Nov 8 7:25 /usr/X11R6/bin/X root 177 0 0.0 0.6 2796 1336 1 S Nov 8 0:10 kterm root 191 1 0.0 0.3 1316 688 p0 S Nov 8 0:00 -csh root 314 1 0.0 2.2 6832 4404 p0 T Nov 8 0:09 mule -nw root 3765 0 0.3 16.1 38088 31224 p0 S Nov 10 6:55 /usr/local/netsca root 3769 1 0.0 1.3 12828 2540 p0 S Nov 10 0:00 (dns helper) wnn 117 1 0.0 1.8 4984 3576 ? S Nov 8 0:00 /usr/local/bin/Wn |
4.4 感想 |
というのも、Linuxは将来バージョンの2.4でさえスレッドレベルの
タスクスケジューリングをサポートしませんので(スケジューリングはプロセスベース)、
(少なくともLinux上で)SMPを有効利用するアプリケーションがないのです。
注: Linuxはカーネルスロットをサポートしています。またユーザレベルではPThreadなどが 使えます。
しかし、Linuxはユーザが作ったマルチスレッドのアプリケーションを 一つのプロセスとして実行しますので、仮に2CPUマシンで実行したとしても そのアプリケーションは一つのCPU上で起動して終了まで動き続けます。
もっとも、XFree86にKDEなんていうウインドウマネージャを起動しつつ、
netscape上でJavaのアプレットをゴリゴリ動かしてもmuleの反応がすこぶる良いなど、
2CPUって力持ちだなと感じることはありました。
でも、これってあまりにも力業過ぎるのでSMPマシンを使って面白いとは思いません。
まっ、Linuxの載ったSMPマシンでマルチスレッドプログラムを動かして、
動的な負荷分散が行なわれたら面白いだろうなと思っていますがいつの事になるかは判りません。
Intel版のSolarisがSMPに対応し、且つスレッドレベルでスケジューリングを おこなっているのであれば、 私は文句なくSolarisに乗り替えるのですが、 不勉強なのでInterl版のSolarisについては知りません。そのうち調査しようと思っています。
注: とはいってもスレッドプログラミングってJAVAで遊んだ程度の知識しかないんですけども。
home |index |previous |next |contents