本文へジャンプ

プロダクトか死か

東大にいらっしゃったのは、ちょうどクラスタシステムの開発にゴールが見えてきたころではないでしょうか。大学にはどのようなことを考えていらしたのですか? 

クラスタシステムのシステムソフトウェアを開発していたときに、いろいろな企業といっしょに仕事をしましたが、若手の層が薄くなっていると感じたんです。だから、学生といっしょにOSのカーネルを作りながら教育ができたらいいと思って東大に来ました。

学生とともに仕事をするなかで特にどんなことを伝えたかったのでしょう?

ほんとうに教育になったかなあ。でも、プログラムはものを作ってなんぼ、使われてなんぼのものだということを、ずっと言ってきました。システムソフトウェアはプロダクトレベルまで持っていったうえで、みんなに使ってもらえることが重要なんです。

おもちゃのOSでは役に立たない

アルゴリズムのような基礎理論の研究なら、アルゴリズムと定量的な評価をきっちり書いた論文を出せばそれに意味があります。ほかの人たちがそのアルゴリズムを使って何か応用のソフトを作ることで展開できますから。

でも、システムソフトウェアは、論文のアイデアから誰かがそれを引き継いで実用になるまで作り上げてくれることは、まずありません。エキシビションやポスターセッションのデモを目標にするのは、それよりいくらかいい。でもそのままでは、バグだらけでたいがい実用には使えない。

実用で使えるOSは、たくさんのエラー処理や例外処理でコードが膨らみます。その分のオーバーヘッドが性能の足を引っ張る。そういうめんどうな部分を作っていないおもちゃのOSは、けっこう簡単に作れるし、スピードも速いものです。でも、ちゃんとフル機能を作ってテストしたうえでなければ、トイOSだと評価されて終わってしまいます。やっぱりプロダクト、最終的には使えるものにしなくては意味がありません。

それを聞いてなんだそれ、という学生もいるかもしれません。でも、私の研究室には同じようなマインドを持った人が集まってきました。そういう人たちがこの学科にはいるんですね、嬉しいことに。

東大にいらしたときに作ろうと考えていたもの、学生といっしょに作ってこられたOSとは、どんなものだったのでしょう?

東大に来た2002年ごろは、CPUの動作周波数向上が停滞し始めて、CPUの中に多数の演算コアを集積するメニーコアアーキテクチャの方向性が見えていました。コア単体の性能は上がらないので、複数のコアでプログラムを並列実行して性能の総和を上げるわけですね。

そこでまず、複数のPCを集積したクラスタシステムが、アプリケーション側からは1つのマシンとして見える仕組みを作り始め、メニーコアCPUの登場とともにいち早く対応させました。これは改良を続けて現在のXeon PhiというCPUでも動作し、「京」の後継機、日本の次世代フラグシップスーパーコンピュータにも使おうとしています。

このカーネルのアプローチは、メニーコアのうちいくつかのコアでLinuxを動かしておき、ほかのコアでは私たちが作っている軽量カーネルを動かしてアプリケーションを並列に動作させるというものです。機能を最低限に絞った身軽なカーネルでアプリケーションの性能を上げ、アプリケーションがたまに使うような機能だけLinuxに任せる。軽量なカーネルはソースコードもコンパクトなので改造が容易ですから、アプリケーションに合わせてあとから機能を追加したり、資源管理のアルゴリズムを変えたりと、Linux側ではできないことが可能になります。

ページトップへ戻る