FreeBSDのSMPngについて 10
ストーリー by Oliver
あっちとこっちとそっちのCPU 部門より
あっちとこっちとそっちのCPU 部門より
BSD 曰く、 "ONLampにFreeBSD の SMPng についてコアメンバの Scott Long に尋ねた記事が掲載されている。彼の近況、各種ロックの特徴、SMP におけるロックの問題点、NetBSD や OpenBSD、DragonFlyBSD との比較、Linux の SMP との性能比較、KSE や ULE との関連、ハイパースレッディングや巨大なキャッシュの取り扱い、シングルCPUでの性能劣化、PF、IPF、IPFWの性能改善、SMPng の今後の予定等について語られている。今後の FreeBSD の進む方向を知る意味で、非常に興味深いと思う。"
スピンロックとスリープロック (スコア:4, 参考になる)
OpenBSD との比較 (スコア:3, 参考になる)
とありますが、インタビューを受けた FreeBSD の人は
「OpenBSD のことは知らない」としか言っておらず、
OpenBSD の SMP とは比較してませんね。
以前の OnLamp の記事で OpenBSD の人は、
(セキュリティのために) 最も実装が簡単なビッグロックを
使っていると言っていたはずです。珍しく謙遜に、
「うちの SMP は *BSD で一番ダメかも」と言っていたような。
FreeBSD 側で、
唯一ジャイアントロックなしで動かせるパケットフィルタとして
PF を挙げているのは少し皮肉な気がしました。
まあ PF は既にみんなのものですが。
Re:スピンロックとスリープロック (スコア:1, 興味深い)
Re:スピンロックとスリープロック (スコア:2, 参考になる)
linux/Solaris/AIX には lockstat(1M) と言うのがあり、ロックに関する統計情報を集めることは既にできるので、これを使ってスピンからスリープに遷移する閾値をチューニングとかは出来そうですね。
シングルCPUは、それ用にコンパイルしたカーネルを (スコア:0)
GENERIC カーネル (スコア:1)
とすると、GENERIC のデフォルトを何にするかが問題です。UP だけ のサポートをデフォルトにして、SMP を有効にしたい場合は必ず カーネル再構築を要求するのでしょうか。それとも、SMP は有効に しておいて、UP 最適化を望む時のみ再構築するのでしょうか。
インストール途中で、デフォルトでは SMP だけど、ここで UP 専用 と指定すれば、CD-ROM内に準備した専用カーネルをインストールし ます、というような処理が一番親切なのかもしれませんが。
Re:GENERIC カーネル (スコア:1, 興味深い)
XPは知りませんが、Windows2000の場合は、インストーラがSMPとACPIについては自動認識して、専用のカーネルを入れてくれますね。BIOS設定でACPIをoffにしてたのを忘れてインストールをしてしまい、(インストール後には切り替えられないので)後で泣く泣く再インストールをしたこともあります。
ド素人の予想ですが、FreeBSDなどの場合は「UP/SMPそれぞれでチューンするには人材リソースが少ない」とか「理論上、どちらでもパフォーマンスがそこそこ(専用カーネルほどではなくても、それに近いレベルで)出せるはずだ」という思想とかじゃないでしょうかね?LinusがHDDのraw deviceの実装を嫌がってたのも、後者と同様の理由でしたよね。
このあたり、例えばSolarisはどうなってるんでしょうか?
Re:GENERIC カーネル (スコア:1, 参考になる)
デバイスマネージャから「コンピュータ」を選び、その中にあるACPIユニプロセッサ」とか「標準PC」とか表示されているアイコンのプロパティを開き、「ドライバ」タブに切り替えて「ドライバの更新」を選び、「ハードウェアデバイスドライバのインストール」ページ進み、「このデバイスの既知のドライバを表示して、その一覧から選択する」を選んで先に進んで、入れたいドライバを選択すれば、HALやKernelなど、必要な数本のファイルを入れ替えることができますよ。
Re:GENERIC カーネル (スコア:0)
UP/SMP 環境それぞれに特化したカーネルを用意して、ブート時に
UP/SMP 環境を判断して、適切な方のカーネルをロードするとか…
駄目?
# 非力なマシンを使ってる人には顰蹙ですね。
# 頭数が増減する事は滅多にない筈だから、カーネルを2つ置く分、
Re:GENERIC カーネル (スコア:0)
その辺どうなんでしょうかね。