優雅な生活の設計と実装

The Design and Implementation of the Gracious Days


LAST MODIFIED: 2008/04/22 21:49:44 UTC

新しい秩序の確立は、他の何にも増して難しく、
成功する可能性が低く、危険な事業である。
改革者は旧秩序から利益を得ている
全ての者を敵にまわし、
新秩序から利益を受けるはずの者からは
及び腰の支持しか集められない。
--- Niccolo Machiavelli, The Prince

この種の「保護」は初心者を保護するかも知れないが、
熟練ユーザを窮地に追い込むことになる。
というのは、何が親切であり、何が適切でないかかという
オペレーティングシステムの考え方の裏をかくことばかりに
かなりの労力を費やさなければならないからである。
--- A.S.Tannenbaum, Modern Operating Systems


不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。

April 2008

感想はこちらまで (内容は匿名のメールで送られます)

コメント:

注: お返事が必要な場合は直接メールください。 ただし、確実にお返事するかどうかはわかりませんのであしからず。

発売中:「Absolute BSD〜FreeBSDシステム管理とチューニング」
[book image] [→ 書籍情報]
[→ amazon.co.jp]
[→ cbook24.com]
[→ 関連する日記のエントリ (09/24)]

Wednesday, April 23

* FreeBSD Daily Topics

「FreeBSD に関する記事を読んだのだけど、 意味がよく分からんので教えてほしい」と言われたので、 どれなのか聞いたら、 後藤さんの記事だった。 リンク先 (http://gihyo.jp/admin/clip/01/fdt/200804/21)からの引用。

これは同氏が開発をおこないKris氏によって検証が進め られてきたもので,特定の状況における特定のデータ構造の実装を rwlock ロックに変更することでUDP/TCPに関するネットワークスタック の並列度を向上させることにつながるとされています。

「特定の状況における特定のデータ構造の実装をrwlockロックに変更」あたり、 たしかに意味がよく分からんので、参考にしたであろう原文を読んでみる。

In the next couple of days (exact schedule depends on how testing goes), I'll merge a portion of the rwlock lock patch that I've developed and that Kris has been testing. This opens the door to increased parallelism in the network stack by facilitating UDP and TCP moves to read-locking of certain data structures under certain conditions. These patches were originally developed to address known high lock contention when running the BIND9 and nsd name servers, which employ a single UDP socket from many threads simultaneously.

ええと、つまり「UDP と TCP について、 しかるべき状況でしかるべき構造体を read lock するようにして 並列度を向上させたネットワークスタックに向けた第一歩だ」ということ。 今回の変更では、reader/writer lock (あるひとつのスレッドが exclusive write access を持ち、複数のスレッドが shared read access を持つ、というロックモデルを実装したもの) に変わったものの、結局のところまだ全部 exclusive なままなので、並列度があがったりはしません。rwatson の目論見は、とりあえず rwlock に置き換えて、最終的には一部を shared lock にすることで、 並列度をあげようというもの。今回は mutex を rwlock を置き換えてもちゃんと動くのか、というのを確かめたというだけで、 使う側からみれば、ほとんど変化がないのが正しいです。

BIND9 がうんたら、というのは、これが kris のやってた DNS サーバ性能ベンチマーク (結果の一例) で指摘されたボトルネックだった、というお話です。

fine-grained lock を実装しはじめたころから、 このへんはボトルネックになることが指摘されてはいたのですが、 それが具体的な形で出てきた感じです。 今、プロジェクトではいろいろな負荷をかけて、 それに対してスケーラビリティがどれだけ確保できるか、 性能劣化要因は何かを分析し、要因となっているコードの最適化を行なう、 というサイクルで、MP の性能改善を図っています。その一環なわけです。

It is my understanding, and I need to confirm this, that struct rwlock is the same size as struct mutex, meaning that (a) they don't require monitoring tools to be rebuilt, and (b) these are potential MFC candidates. If you run into ABI problems with monitoring tools after the merge, please let me know (including architecture information, etc).

記事にある「関連するモニタリングツールが動作しなくなった場合など」というのは、 このあたりの話なのかと思うけれど、pcbinfo とか inpcb を直接扱うのは netstat とか、そういうやつで、 このメッセージそのものは developer に向けたものでしょう。

TCP スタックへの変更はものすごく神経質に、慎重にやっているので、 単に mutex を (機能的に等価な形で) rwlock に変更するというだけでも、 試験しながらの作業になっています。本文にも書いてありますが、 将来的には 7.X 系にも持っていきたいので、 当然ながら ABI にも気を配ってます。

しかし、この記事は元のメールの文章を翻訳・切り貼りしただけで、 引用の範疇を越えていないのではなかろうか。 要約しているようにも読めないし、元の文章へのリンクもない。 個人的には、翻訳して紹介するならちゃんと翻訳して出典を明らかにすべきだし、 要約するなら、オリジナリティが認められるような文章にすべきだと思います。

ニュース記事だから、ある程度は元の文章が入ってきてしまうのは理解できるけれど、 少なくともこれについては、 何となく性能があがったかのようにミスリードさせている気がするのに加えて、 他人の文章を切り貼りして、 あたかも自分が書いたかのような文章にしているように読めて、 元の文章を書いている人に失礼なレベルだ、と思うのは、わたしだけでしょうか...

Monday, April 7

* AsiaBSDCon 2008

思い出したように更新。半年ぶり。

AsiaBSDCon 2008 が無事終りました。2 年連続でやるとは考えてなかったので、 かなり時間的にも精神的に厳しいところだったけれど、 とにかく一段落できて、ほっとしてるところです。 参加してくださったみなさま、どうもありがとうございました。

いろいろ評価はあると思いますが、 自分が思い描いていたような形での開催は、 ほぼできたように感じてます。 準備とか、段取りとか、 裏をみるとまだまだ適当にやりすぎてるところは多々あるものの、 「BSD をテーマに現役の技術者が集まる場所をつくる」という目標は 果たせたのではないかと思います。

国内でも、オープンソースソフトウェアを題材にしたイベントはたくさんあります。 Linux Conference は 10 年も続いていますし、 宮原さんのところがやってる OSC も年々大きくなって、 山ほど協力団体がついてて、うらやましい限りです。 そんな中、AsiaBSDCon なんてものを企画したのは、 国際交流がしたかったからです。

これは佐藤だけなのかも知れませんが、 特に国内のイベントに出ると、どうも、ソフトウェアの作者やコミュニティで有名な人たちと、 そうでない、話を聞きにきただけ、という人の間に、壁があるように感じる時が多い気がします。 講演があっても、一方的にしゃべるだけ、聞くだけで議論はなし。 特に外国人はタレントのように特別扱いされ、崇め奉るかのよう。

話を聞くほうは満足だと思うのですが、こんな雰囲気ばっかりだと、 話す側、技術や知識を持っている人は、何も得るものがなくて、 行く気を失ってしまうんじゃないか、というのが、 2002 年ごろに考えていたことでした。

当時はまた、 佐藤が初めて海外のカンファレンスに参加し始めた頃でもありました。 大学の研究論文発表が主でしたが、今は亡き BSDCon など、 BSD 関連の集まりにも (お金が工面できる限り) 出てみるようにしていました。 (少なくとも大学関係者は) みんな知っていることですが、国際会議では、 研究発表が初めてという学生の発表と、すごく権威のある研究者の発表が、 横ならびになっています。もちろん、話を聞くだけの人もたくさんいますが、 みんな、その場で自分と他人の成果を共有するんだ、という雰囲気があります。 知識や能力のある人が、それを提示するだけで終るような、 一方的な雰囲気はありません。佐藤は、そういう雰囲気が非常に好きです。 そういう会議に積極的に出席できる立場でいられる、というのが、 大学に残っている理由のひとつでもあります。

なので、国内で BSD に関連する集まりを自分で催すなら、 そういう形にしたいと思っていました。 客席と壇上の両方に、今現在、活発に活動している人がいて、 意見の交換や交流ができる場所であること。 その集まりが、コミュニティに対して能動的な役割を担っていなければ、 企画する側も、参加する側も、いつかは疲弊して、飽きてしまいます。 AsiaBSDCon は、その役割を「開発者の交流と意見交換」という点に置いていて、 国内に限らない、国際的なコミュニティを対象にしています。

‥‥と、まあ、大仰ですが背景にある運営思想みたいなものは、 そんな感じになっています。 ですので、日本からの参加者には優しくありません。 オープンソースソフトウェアに携わる主要な開発者の大部分は、 英語を共通言語としていますので、 会の位置付けから考えると、日本語での会議はできません。 そういう人たちが自分から来たいと思わなければ、 会は死んでしまいますし、 日本語ができないことを理由に肩身の狭い思いをさせては、本末転倒です。

ウェブページも会場案内も日本語の整備は二の次ですし、 進行もほぼ英語のみです。英語ができない人にはさぞ辛かろう、 とは思うのですが、そういうものです。 日本でやるんだから日本語で、という考え方は、 AsiaBSDCon の思想と反していることですので、積極的にはやりません。 日本語チュートリアルと日本語ウェブページは、大サービスなわけです。

2008 年の開催は、参加者総数の 30% 以上が English speaker で、 FreeBSD, NetBSD, OpenBSD, PC-BSD といった各プロジェクトの developer の参加者も、30 名 (総数の約 20%) を超えました。 そこに行けば、現役の開発者が直接会って話せる距離にいる、 それが目指すべき目標であり、他のイベントと違うところなのです。

2009 年については、開催する方向で動いています。 ちょっと参加してみよう、という気になるには、 安くないお金がかかったり、英語だったりと、 いろいろと抵抗感があるかと思いますが、 日本の BSD コミュニティで著名な人たちも多く集まりますので、 日本人同士の交流だけとっても、得られるものはあると思います。 集まった人でちょっと集会みたいなのをやりたい、という提案も歓迎です (今回はちょっと部屋が余ってました)。

何はともあれ、できる範囲では、なるべく満足してもらえるような工夫をしていくつもりですので、 AsiaBSDCon の方向性に魅力を感じる人がいらっしゃったら、 ぜひご支援ください。