所属
東京農工大学 大学院 工学研究院 先端情報科学部門

職名
准教授

キーワード
オペレーティングシステム データベース 仮想化技術

助成期間
平成31年4月─令和4年3月

研究室ホームページ
2009年3月

慶應義塾大学 大学院 理工学研究院 博士後期課程 修了(工学)


2009年4月

慶應義塾大学 大学院 理工学研究科 特任助教


2012年10月

東京農工大学 大学院 工学研究院 先端情報科学部門 准教授



「PCは他の電化製品とは違う」

私は子どもの頃からゲームが好きで、将来はゲーム会社に入社したいと考え、大学受験ではプログラミングを勉強するために、電気通信大学の情報工学科を選択しました。

それまで私は、洗濯機などの電化製品と同じように、コンピュータ(以下PC)も電源ボタンを押せば電源が切れると考えていました。ですが、PCはPCを操作することで、電源を切ります。つまり、自分は「シャットダウンする」という指示をクリックこそしますが、電源ボタンを押していないのに、PCはプログラムによって勝手に電源が切れるのです。初めてこの操作を行ったとき、私は大きな衝撃を受けるとともに「PCは他の電化製品とは違う」と実感しました。

そして、当初の目的であったゲームはアプリケーションに属するものですが、次第にOS(オペレーティングシステム)の面白さに惹かれていきました。OSはPCの根幹をなすものであり、電源を切るなどの基本的動作はもちろん、ハードウェア全般の動作からアプリケーションに至るまで、ほぼ全てを制御しているといっても過言ではありません。学部4年生のときに日本でも数少ないOSを専門とする研究室に入り、先生や先輩から高度な専門知識をしっかりと教えていただいたことから、OSの研究者として歩むようになりました。

OSを軸足とし、仮想マシンやDBの性能およびディペンダビリティ高度化技術の研究に従事。OSをソースコードレベルで理解・解析できる研究者は世界的にも限られており、「研究会ではいつも同じ顔ぶれが揃う」と語る山田先生

超スマート社会の実現には、DBのディペンダビリティ確立が不可欠

皆さんは「超スマート社会」という言葉をご存知でしょうか。内閣府によって“必要なもの・サービスを、必要な人に、必要なだけ提供し、社会のさまざまなニーズにきめ細やかに対応でき、あらゆる人が質の高いサービスを受けられ、年齢、性別、地域、言語といったさまざまな違いを乗り越え、活き活きと快適に暮らすことのできる社会”と定義されています。世界に先駆けて超スマート社会の実現に寄与することは、私たち研究者にとって急務と言えます。

超スマート社会に欠かせないのが、データベース管理システム(以下DB)というアプリケーション(以下アプリ)です。蓄積したデータを学習し、新たな価値を発見・提供するデータ活用型サービスにおいて、DBはデータを貯蓄・管理する重要な役割を担っています。 

ところが、このDBのディペンダビリティ(信頼性、可用性、セキュリティを包括する複合的な概念)を確立するためには、ハードウェアの微細化による故障率の増加、サイバー攻撃の多様化によるセキュリティの脆弱性など、解決すべき問題が山積しています。

これらの課題を解決するためには、OSとDBの綿密な連携が必要です。しかし、OSと、DBをはじめとするアプリは、全く別の業界で発展してきました。そのため連携機能に限界があり、大きな障壁となっています。

そこで私は、コデザインという概念を用いた研究を行っています。“最初からOSとDBを連携・協調させることを前提に開発する”ことで、その障壁をクリアできると考えました。仕組みについて詳しく説明すると、難解な内容になってしまうため、本研究の柱となる2つの研究開発についてご説明します。

OS/DBの連携・協調を前提とした開発

ひとつは、故障時の対応です。現在は、アプリに障害が発生するとただちに再起動がかけられ、再起動完了後にデータを復元するという手法が用いられています。しかし、DBは通常のアプリと比べて、OSのメモリを大量に消費します。DBで蓄積されたデータは数GB、もしくは数TBにも及ぶため、従来の再起動方式では、データの復旧にかなりの時間を要してしまいます。仮に自動運転システムでこのようなことが起こると、再起動からデータ復旧までの間は正常な運転ができなくなってしまうため、高い確率で事故を引き起こしてしまうでしょう。

メモリ使用量がさほど多くないアプリは従来の再起動方式でも問題ありませんが、DBはそうはいきません。そこで、OSのメモリに展開しているDBのデータの一部を、DB側で再構成する機能を実装することで、再起動方式に頼らない方法の実装を目指しました。

この方法では、DB実行中に何らかの障害が発生したとき、OSは故障したデータが格納されているメモリ領域をDBに通知します。するとDBはそのメモリをDB内で再構築し、故障したデータに対して適切な処理を行うことで、アプリの実行を維持します。また、OSは障害が発生したメモリ領域を削除し、ストレージを補充します。このような対応によって、故障時の再起動を回避する仕組みです。

メモリ障害耐性技術概略図