未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

萌えーー

やはり萌えである。未踏ソフトウェアの喜連川PMの採択者が集まって同窓会をした。最近のIT系研究開発といえば萌えである。データベースの研究は情報爆発というキーワードのもとGoogle的なアプローチに収斂しつつあるような印象を持つ。これもウェブ進化論の功罪なのかもしれないけどデータベース関連の研究費というのはほとんど情報検索とかGoogle的なものに集中している。喜連川先生の研究室の学生も未踏関連のプロジェクトメンバーも元気のいい研究者を根こそぎGoogleが雇用している。(やっぱお金のあるところは強いよねという世界観)

Web2.0というファンシーなキーワードに学生が集中する。その時々の流行語に学生が集中するのはいたしかたないが一方でBinary2.0のような地味な研究も必要である。わたしみたいにデータベース管理システム(DBMS)がどうだこうだとか、キャッシュミスがどうだとかいう古典的な分野の古典的なテクニックをああだこうだするということの価値を大学の先生は伝えないといけないとは思う。思うのだけどなかなかそうはいかないところに大学のジレンマがある。(教育の問題である)

キャッシュがどうだという話はたまたま喜連川先生の趣味に合致したので未踏に採択されたがそうでなければ未踏にも採択されず今回のCache Pollution Aware Patchの開発も日の目を見なかった。

大学での最先端の研究と現場のプログラマの間には広くて深い谷がある。絶望的なほどの谷がある。

同窓会の前半は各自の近況報告なのであるが、わたしはhardmeterでの経験からoprofileを利用したカーネルチューニングの話をした。write cache missが非常にコストが高いので、それを回避するためにキャッシュをバイパスする命令を利用することによってキャッシュミスを劇的に減らしたという話(Cache Pollution Aware Patch)をした。

Cache Pollutionとか、キャッシュをバイパスするテクニックとかは昔から知られているテクニックで、私が世界で初めて発見したものではない。その意味で学術的な意義はない(新規性はないので論文にはならないのであろう)が、Linuxカーネルでの実装はなかったので実用的な価値は非常に高い。このギャップすなわち学術的な価値はないが実用的な価値はあるというもののギャップは広くて深い。

研究でのアイデアを実装するまでの距離の広さ深さを埋める必要は絶対あると思う。

CPUが増えるとキャッシュミスが増えるというグラフで、喜連川先生の質問が本質を突く。「なぜ、CPUが増えるとキャッシュミスが増えるのですか」

こんな単純な質問もわたしには答えられない。わたしは精密な回答を持たない。世界の誰かはこの質問に定量的に答えられるデータを持っているかもしれないがわたしはその回答を知らない。いくつかの仮説はあげられるがそれをバックアップするような定量的なデータを持たない。

キャッシュミスという観点からCPUスケーラビリティを議論した研究を言うのをわたしは知らない。(いやもちろんキャッシュコヒーレンシーがどうだという研究がいっぱいあるのはさすがに知っていますが…)CPUスケーラビリティとの関連の研究を私が知らないというだけの話であるが、仮にそのような研究があったとしてもそれはLinuxカーネルには適用されていない。研究と実装の間には深い谷がある。

未踏をやっていたときに喜連川先生から質問を受けた。「キャッシュミスを発見したとしてそれをどのように解決するのですか?」それに対する回答がCache Pollution Aware Patchである。それまではキャッシュミスを解決するためにはプリフェッチしかわたしは知らなかったわけではあるが、それ以外にも方法があるというのを今回学んだ。そして喜連川先生の3年前の質問に対して、「キャッシュをバイパスすることによって解決します」という回答を示せた。

ムーアの法則に従ってこの40数年間CPUの性能が向上してきた。これまでは性能向上の方向が周波数向上の方向であった。そのために、CPUの速度とメモリアクセスの速度差が年々広がってきたためにキャッシュアクセスを上手にすることが性能向上につながった。システムの性能向上にはキャッシュアクセスを上手にすることが非常に重要だったわけだ。(過去形か?)
ところが消費電力が増えすぎたためにこれ以上周波数を増やすことが経済的に難しくなってきた。その結果、周波数はそのままでコア数を増やすというマルチコア化が加速している。そのような状況下でシステムの性能向上を目指すためには、キャッシュミスをうんぬんするだけではなく、マルチコア(プロセッサ)でのロックの競合の問題が重要になってくる。(ロック萌え〜)

CPUを増やしたときに性能をどのように上げるかという古典的な問題が現代的なコンテキストの元に再度重要になってきているのである。

CPUが増えたらなんでキャッシュミスが増えるのですか?それに回答することをカーネルハッカーは求められている。

性能萌え〜である。