イベント

LinuxCon最終日レポート、大物カーネル開発者がアドバイスする「Kernel Developer Panel」など

 Linuxに関する世界的な技術カンファレンス「LinuxCon Japan 2014/CloudOpen Japan 2014」が、5月20日から22日まで開催された。主催はLinuxカーネルの開発を支援する団体「The Linux Foundation」。Linuxの生みの親であるLinus Torvalds氏をはじめとする世界各地のLinuxカーネル開発者やクラウド開発者が発表し、約600名の参加者を集めた。

大物カーネル開発者たちがアドバイス

 最終日は、Linuxカーネル開発者によるパネルディスカッション「Linux Kernel Developer Panel」で幕を閉じた。

 モデレーターは、stableカーネルのメンテナーであるGreg Kroah-Hartman氏(The Linux Foundation、以下Greg氏)。パネリストとして、リアルタイムパッチなどのメンテナーであるThomas Gleixner氏(linutronix)、cgroupのメンテナーの一人であるZefan Li氏(Huawei)、ブリッジなどネットワーク分野のメンテナーであるStephen Hemminger氏(Vyatta)、組み込み分野で使われるdevice treeのメンテナーであるGrant Likely氏(Linaro)と、異なるバックグラウンドの4人が登壇した。

モデレーターのGreg Kroah-Hartman氏(The Linux Foundation)
左から、Thomas Gleixner氏(linutronix)、Zefan Li氏(Huawei)、Stephen Hemminger氏(Vyatta)、Grant Likely氏(Linaro)

 最初の自己紹介でGreg氏により「最初のパッチは?」というお題が出されるという、カーネル開発者らしい始まりなった。なお、Greg氏の最初のパッチは、USB関連だったそうだ。

 壇上では、device treeに関する議論などがなされた。Likely氏はdevice treeについて、組み込み分野で登場した技術と説明。ハードウェアの仕様のデータをカーネルが参照できるようにして抽象化する仕組みで、いろいろなハードウェアの違いの問題を解決するものとして採用されたという。一方、ARMサーバーではACPIを採用することになり、ARMのカーネルにもACPIのサポートが追加された。Likely氏は、両者は同じようにも見えるが違うもので、device treeは当分消えることはないだろうと主張した。

 そのほか、cgruopのインターフェイスの変更について不満の声が上がっていることや、ネットワーク分野でnetlinkの拡張に関して議論が起こっていることなどが話題に上り、「変更について、その部分ではうまくいっても全体でどうか判断するのが難しい」「APIを公開すると後から変更するのが難しい」「といって判断に何年もかかるのは困る」「インターフェイスについて過去の問題の経験のある人が考慮する必要がある」といった意見が出された。

 会場からも活発に質問が出た。コードのテストについては、バグがわかるので助かるという声や、変更のときにテストが必要だが定期的には実行していないという声、自動ビルドツールを用意して壊れていればメールが来るようにしている話、ビルドのコンフィグの組み合わせが大変という話などが交わされた。

 メンテナーがどのように大量のメールに対応し、効率的にパッチをレビューしているかの質問については、まずGreg氏が、コマンドラインのメールソフトを使いスクリプトも駆使していると回答した。また、Hemminger氏が「パッチの種類によって優先度が違う」と答えると、Gleixner氏は「そのほか、過去の実績のある人のパッチは信頼できるが、新しい人や過去にひどいパッチを出した人の場合は時間をかけてレビューする必要がある」と補足。Likely氏も、「自分が信頼している人がレビューしているパッチは私はレビューする必要はない、ということを学んだ」と語った。そのほか、Li氏は「cgroupとMySQLで問題が起きたときのパッチは、詳しくない分野でよくわからず困った」というエピソードも語った。

 「日常的にstableカーネルを使っているか」という質問について、stableカーネルのメンテナーであるGreg氏は「使っていない」と回答。パネリストは、最新カーネルを使っている人や、仮想マシンのホストでstableカーネルを使ってゲストで最新カーネルを使っている人などさまざまな答えだった。また、「スマートフォンのカーネルをハックしているか」という質問には、昔やったが今はやっていないという回答から、まったくやっていないという回答、「スマートフォンを持っていない(笑)」という回答まであった。

 英語の問題について質問が出ると、「Changelog(変更履歴ドキュメント)なら簡単」という声から発展して、Changelogに関するアドバイスとなった。パネリストからは次々に、「どう変更したか」ではなく「なぜそうしたか」を書くことが重要という意見が出た。これは、意図はコードからはわからず、どうしてその機能が必要かの説明のためであり、またレビューのときに目的に対してアプローチがよくない場合はアドバイスできる、さらに2年後に自分が見たときになぜそうしたか分からなくならないようにする、といった説明がなされた。

 「新しくカーネル開発者になる人に伝えたいこと」という質問については、それぞれ熱心なアドバイスが語られた。Greg氏は、「まず興味のあることからやってみよう」とアドバイス。Gleixner氏は、「気後れしなくていい。パッチのコードが間違っていても、問題を指摘してくれればほかの人のガイドになる」「レビューにフィードバックしたときに、焦ってちゃんと直らないで再提出するとレビュアーもうんざりするので、じっくりフィードバックを読んで考えてほしい」「レビュアーは自分ではわかっているから手短に返すので、よくわからなかったら質問したほうがいい」と心がけを伝えた。

 Li氏は、「過去のパッチを見て、特に大きな変更が加わったコードを見て、変更のやりかたを学ぶといい」とアドバイスした。Hemminger氏は「メンターを見つけるといい。私は『いい仕事だね』とポジティブな言葉をかけるようにしている」と、自分が心がけていることをまじえて説明した。Likely氏は「私も最初はどうしていいか分からなかったが、Linux Symposiumに参加して開発者に会ったら相手の顔がわかってパッチを送りやすくなった」という経験を語った。

ルネサスがLinuxカーネル本家にコントリビュートする理由

Hisao Munakata(宗像尚郎)氏(ルネサス)

 最終日の基調講演には、ルネサスのHisao Munakata(宗像尚郎)氏が登壇。「Invest for the Future: Our Motivation For The Upstreaming Effort」と題して、特に組み込み分野の企業がLinuxカーネルコミュニティに積極的に参加すべき理由や、氏が創設に参画したLTSI(Long-Term Support Initiative)プロジェクトのカーネルの意義について語った。

 宗像氏はまず、ルネサスのLinux開発の考え方として、カーネルに加えた変更を社内ツリーではなくアップストリーム(本家)に入れていくと説明。その結果、最新のカーネル3.14ではコントリビューターの所属企業別ランキングで9位、この9年の合計でも10位となっていることを紹介した。

 さて、宗像氏は「新しくLinuxを始める企業開発者は、OSSのやりかたにとまどう」と指摘。「よく、『誰が責任を持つのか』『ガバナンスモデルは?』『どこにルールが書かれているのか』と聞かれる」と語る。こうした従来企業から見たオープンソースのイメージとして、いろいろな色のボールが(一見)ランダムに動いている動画を再生して、「このようにコントロールされていないように見える」と説明した。

 一方、従来企業の製品開発は、スケジュールやコスト、競争など厳しい制約がある。これも動画で、ボールがゴールに向かって整然と進むモデルを再生。「しかし、この開発スタイルでは、妥協が起こり、再利用の可能性が失われ、他社と重複した開発が行われてしまう」と主張した。

従来企業からはオープンソースはコントロールされていないように見える
従来企業から見たオープンソースのイメージ
従来企業の開発ではさまざまな制約がある
従来企業の開発スタイルのイメージ

 ここで宗像氏は、Linuxカーネルのバージョンのライフサイクルについて解説した。Linuxカーネルは約70日ごとにリリースされ、通常は2バージョンだけがサポートされる。しかしそのうち、1年に1つのカーネルを「long-term stable(LTS)」と決めて長期サポートし、2バージョンのLTSがサポートされる。「製品ではLTSカーネルを選ぶことで手間を減らすことができる」と宗像氏は説明した。

 さて、ここで企業が特定のバージョンのLinuxカーネルをフォークして変更を加えていくとどうなるか。「新しいバージョンのカーネルと乖離(かいり)し、メインラインカーネルの機能を取り入れられなくなってしまう」と宗像氏は指摘する。それに対し、変更をアップストリームに入れていけば、最新カーネルに追従できる。

LTSカーネル
企業がフォークしたとき

 ここでLTSIが登場する。LTSIはThe Linux Foundationと組み込み系Linuxを採用するメーカーによるプロジェクトで、LTSカーネルを元にアップストリームの最新カーネルや企業の変更のうち必要なものをバックポートしたカーネルをサポートして、各社の製品で採用しやすくする。変更はアップストリームのルールに従うが、Linuxカーネルコミュニティに慣れていない企業のためにパッチの書き方などは緩くしているという。

 「ルネサスでは、変更をアップストリームに入れ、それがLTSIに入り、LTSIのカーネルを製品に採用している。時間はかかるが、これがルネサスのやりかただ」(宗像氏)。

 最後に宗像氏は、先ほどの、「企業から見たオープンソースコミュニティ」と「企業の開発」の2つの動画をさらに俯瞰(ふかん)した動画を再生した。そこでは、ランダムに動いていたように見えたボールが、実は銀河の渦の一部を形成している。一方その中には、整然と流れているように見えた流れが孤立しており、しばしば消えていく。「ランダムに動いているように見えたものが、実は大きな流れに従って動いていることがわかる」と表現し、会場の拍手を受けた。

LTSIのカーネル。LTSカーネルを元に、バックポートや企業の変更をバックポートする
ルネサスのやりかた。アップストリーム→LTSI→製品
オープンソースと従来企業のモデルをふかんすると……

Web開発者とシステム管理者の対立をPuppetで解消

 3日間の会期中には、さまざまな個別セッションも開かれた。以下、その中からいくつかをレポートする。

 今回の「LinuxCon Japan 2014/CloudOpen Japan 2014」には、サーバーの構成管理ツール「Puppet」の開発元であるPuppet Labsがスポンサーに参加。「Puppet Camp Tokyo」を19日に開いたほか、Puppetを紹介するセッション「Bringing Application Owners and Systems Administrators Together via Configuration Management Workflows」を行った。

 Puppet LabsのNigel Kersten氏は、アプリケーション開発者とシステム管理者が求めることの違いから対立しがちな状態を提示。その解決策として一元管理やセルフサービス、設定言語、アクセスの広さを挙げて、「Puppetを使おう」として、Puppetの概要を解説した。

Nigel Kersten氏(Puppet Labs)
求められること
Puppetでの定義(マニフェスト)の例

oVirtのオープンソースへの道

 oVirtのTechnical Community ManagerのBrian Proffitt氏の代理で発表したDaniel Veillard氏(Red Hat)は、「oVirt: How to Connect with a Mature Open Source Project」と題して、oVirtのオープンソースプロジェクトへの道を語った。oVirtはRed Hat Enterprise Virtualization(RHEV)のベースになっている、仮想マシン管理システム。もともとKVMとともにRed Hatに買収された技術で、Windows上でC#とPythonで書かれたプロプライエタリなソフトだった。これを作り直して、2012年に「oVirt 3.0」としてオープンソースで公開した。

 オープンソース化には、ソフトウェアだけでなく、開発者やコミュニティのマインドセットを、利用者からのバグレポートやパッチによってソフトを改善していくオープンソースのサイクルに大きく変化させることが重要だった、とVeillard氏は語った。

Brian Proffitt氏の代理で発表したDaniel Veillard氏(Red Hat)
oVirtの構成

エンタープライズサーバーの障害を分析する現場の情報収集手段を紹介

 Tetsuo Handa氏(NTT Open Source Software Center)は「How to Collect Information for Troubleshooting Enterprise Servers」と題し、エンタープライズサーバーのサポートの現場で使われる、カーネルパニックやシステムダウンなどの分析のための情報収集手段を紹介した。kdumpを正常に動かす設定や、シリアルコンソール、netconsole、SystemTapの利用、Handa氏の開発したTOMOYO Linux/AKARIの利用などが、次々と語られた。

Tetsuo Handa氏(NTT Open Source Software Center)
カーネル空間での手法のリスト
ユーザー空間での手法のリスト
SytemTapの例

aSMPで省電力とパフォーマンスを両立させるスケジューラ

 Mingyong Kim氏(Korea University)は「Killing Two Birds with One Stone: a Smart Task Scheduler for Smartphones」と題し、スマートフォンでコアごとに動作クロック周波数を変えられるaSMP(Asynchronous)で省電力とパフォーマンスの両方を向上させるスケジューラを発表した。マルチメディアアプリのようなQoS重視のアプリと、CPUを多く使うアプリを判別し、それぞれ異なるコアに割り当ててコアごとに最適な周波数で動作させるという。

Mingyong Kim氏(Korea University)
アプリの種類を判別してコアに割り当てる

OpenStack関連の発表も多数

 クラウド基盤ソフトのOpenStackに関する発表も多数行われた。

 Ken'ichi Ohmichi氏(NEC-Soft)は、NovaのRESTful APIを整理した次世代のv3 APIと、その移行のためのv2.1 APIを紹介。そして、その中に含まれる、Ohmichi氏が提案してマージされた、JSONSchemaライブラリを使ったパラメータのバリデーションについて発表した。

Ken'ichi Ohmichi氏(NEC-Soft)
Novaのv3 API
Novaのv2.1 API
JSONSchemaライブラリを使ったパラメータのバリデーション

 Isaku Yamahata氏(Intel)は、ファイアウォールやロードバランサーなどのネットワク機能をOpenStack内の仮想マシンで実現するときに、Neutron(仮想ネットワーク)からの制御でNova(仮想マシン)で仮想マシンを作り、ネットワーク機能をプロビジョニングする「Advanced Network Service Framework (ANSF) 」について発表した。テナント側とOpenStack側の権限を分離する方法について、5月に開催されたOpenStack Design Summitで話しあい、OpenStack MarconiをプロキシーとしてRPCを実行することにしたという。

Isaku Yamahata氏(Intel)
ANSFの構成
仮想マシンでネットワーク機能を追加する流れ
OpenStack Marconiによる権限の分離

 Yuji Hagiwara氏(NTT Data Corporation)は、OpenStackのブロックストレージのコンポーネント「Swift」の概要や、最近の新機能であるErasure CodingやStorage Policyについて紹介。さらに、氏が実装した、Swiftの各ノードにテキスト検索エージェントを持たせてSwiftのAPIから検索できるようにしたものを発表した。

Yuji Hagiwara氏(NTT Data Corporation)
検索機能の実装

 Syed Armani氏(hastexo)は、OpenStackのDBaaS(Database as a Service)コンポーネント「Trove」を紹介した。認証コンポーネントの「Keystone」や、仮想マシンの「Nova」、ブロックストストレージの「Cinder」、仮想ネットワークの「Neutron」の上で動き、RESTful APIからデータベースの作成などができるという。

Syed Armani氏(hastexo)
OpenStackのDBaaS「Trove」の構成

分散ストレージSeepdogの紹介

 Hitoshi Mitake氏(NTT)は、自身がコミッターの一人を務める、ソフトウェアによる分散ストレージ「Sheepdog」について紹介した。もともとQEMU用に開発されたという。最近追加された機能や、類似のソフトウェアであるCephやGlusterFS(両者ともRed Hatが買収)との比較、導入事例なども説明された。

Hitoshi Mitake氏(NTT)
Sheepdogの説明
iSCSIインターフェイスのサポート
導入事例もいくつか紹介された

KVMで使うネットワークスイッチの比較

 Toshiaki Makita氏(NTT Open Source Software Center)は、KVMのインスタンス間で利用できるネットワークスイッチ機能として、カーネルのbridge・macvlan・Open vSwitchと、NICの内蔵スイッチのSR-IOVでの利用について紹介。それぞれについて、できることやできないこと、性能比較データなどを解説した。また、最近の機能であるFDB(forwarding database)操作やVLANフィルタリング、開発中の機能であるQ-in-Qサポートなども紹介した。

Toshiaki Makita氏(NTT Open Source Software Center)
KVMで使うネットワークスイッチ機能
最近のスイッチ機能
開発中のスイッチ機能

IoTプロジェクト「AllSeen Alliance」とは

 Masanari Arai氏(Kii Corporation)は、The Linux FoundationのIoTプロジェクトである「AllSeen Alliance」について紹介した。コアになるのはQualcommが開発した「AllJoyn」フレームワーク。これにより機器を相互接続し、IoTクラウドと接続するという。

Masanari Arai氏(Kii Corporation)
AllSeenのAllJoynの接続イメージ
AllJoynのアーキテクチャ
クラウドのサービス

Raspberry Piのさまざまな使い方

 Masafumi Ohta氏(Japanese Raspberry Pi Users Group)は、Linuxが動作するボードPC「Raspberry Pi」を紹介した。まず、概要やNOOBSによるインストールについて説明。そして、デスクトップ、サーバー、24時間稼働、プログラミング、ゲームの各用途ごとに、向いているかどうかや、その限界などが解説された。また、Tipsや、日本のユーザー組織である「Japanese Raspberry Pi Users Group」などについても紹介された。

Masafumi Ohta氏(Japanese Raspberry Pi Users Group)
会場でRaspberry Piのデスクトップを起動
音楽サーバーの構成例
24時間稼働させるときの注意

高橋 正和