著者
窪田 貴文 吉村 剛 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2016-OS-136, no.11, pp.1-10, 2016-02-22

ログは実行エラー時のシステムの挙動を理解するのに有効な情報源である.これはログの出力にはデバッグに必要な情報が含まれていたり,また実行パスの推定にも有効だからである.しかしながら,近年のマルチスレッド環境に対応したシステムソフトウェアでは単純なログのみではシステムの挙動を理解するのは難しい.なぜなら,マルチスレッド環境では複数スレッドで共有されるデータによりデータフローがスレッドをまたぎ,スレッド間で依存関係が発生するからである.さらに,このような複雑なデータフローを追跡するログを手動で挿入するのは,ソフトウェアの専門的な知識と開発コストが必要な作業である.そこで,本研究ではスレッド間の依存関係を追跡するログの自動挿入を行なうツールを提案する.提案手法では,型情報を考慮したデータフロー解析を行なうことでスレッドをまたいで依存関係が発生するデータフローのペアを特定し,そのデータフローを追跡するログの自動挿入を行なう.本研究では提案手法を Linux I/O に適用し,実際に Btrfs におけるバグのデバッグにおいて有用性が示している.また,提案手法におけるオーバヘッドはデータベースアプリケーションにおいて約 2%であった.
著者
大須賀 敦俊 縣 直道 窪田 貴文 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2017-OS-140, no.3, pp.1-7, 2017-05-09

仮想化を用いたクラウド環境では,ひとつの仮想マシン (VM) でひとつのアプリケーションを動作させる形態が一般的になっている.この特徴を活用し,クラウド環境に特化した OS の設計 ・ 開発が行われている.これらのクラウド特化型 OS は,ハイパーバイザと重複した機能をゲスト OS から取り除いた,軽量かつ省メモリな実装となっている.これらの OS は新規の設計となっているため,1) 既存 OS と同等の機能を利用できるとは限らないという機能性,および 2) 既存 OS とは別個に保守が必要になるという保守性の面において不十分である.本論文では,既存の OS に対する改変を最小限に留めつつ,クラウド特化型 OS と同等の性能を実現する方法として,既存アプリケーションを既存のカーネル内で実行できるようにするフレームワークを提案する.この方法では,プロセスによるオーバーヘッドを削減することで,クラウド特化型 OS に近い軽量化を行うことができる.同時に,1) 実装において既存 OS の機能をそのまま利用できること,2) 既存 OS コミュニティによりコア機能が保守されることを期待できる.Linux を対象にフレームワークの実現を行った.本フレームワークの有用性を示すため,LevelDB というキーバリューストアをカーネル内で実行したところ,プロセスとして実行した場合と比較して,スループットが最大 1.46 倍となった.
著者
縣 直道 大須賀 敦俊 窪田 貴文 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2017-OS-141, no.9, pp.1-6, 2017-07-19

仮想化を利用したクラウド環境では,ひとつの仮想マシン上でひとつのアプリケーションのみを動作させる構成が一般的になっている.このようなクラウド環境の構成に特化した OS が提案 ・ 開発されている.これらの OS では,アプリケーション間の保護をハイパーバイザに任せることで機能を削減し,軽量化 ・ 省メモリ化を実現している.さらに,ベアメタルハイパーバイザ上で動作させることで,OS をアプリケーションに特化させることも可能である.一方で,プロセスの機能を提供しないため,マルチプロセスで動作するアプリケーションに対応することができない.また,ホスト OS の機能を利用することでマルチプロセスに対応した仮想化環境特化 OS の場合,ホスト OS が提供していない機能を実装することができない.本論文では,単一アドレス空間内で複数のプロセスを擬似的に実行させる手法を提案する.これによって,ホスト OS の存在を前提にせずマルチプロセスに対応することができ,既存のクラウド環境特化 OS と同様の軽量化を可能にする.
著者
窪田 貴文 河野 健二
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.39, no.3, pp.3_17-3_32, 2022-07-22 (Released:2022-09-22)

C++はコンパイラ,ウェブブラウザエンジンなど様々なシステムソフトウェアを開発するプログラミング言語として用いられている.しかし,近年システムソフトウェアが大規模化にするにつれて C++プロジェクトのビルド時間が長くなってきていることが問題となっている.そこで本稿では C++プロジェクトのビルドを高速化する手段として有効である3つの手段 (Unity Builds, Zapcc, そして C++ Modules) について解説をする.まず,実際に大規模な C++プロジェクトにおけるビルド時間の現状について紹介し,そのビルド時間のブレイクダウンを示すことで C++のビルドにおいてどの処理がボトルネックになっているか明らかにする.そして各手法のアプローチ・実装について紹介し,適用後にどの程度改善されるかを示す.また,各手法の課題についても議論する.
著者
窪田 貴文 鈴木 勇介 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2018-OS-143, no.9, pp.1-7, 2018-05-14

大規模なソフトウェアプロジェクトでは多くの開発者が修正 ・ 機能追加を行っており,膨大なファイルをコンパイルする機会が頻繁に生じている.例えば,オープンソースのブラウザエンジンである WebKit のビルドボットでは 31 日間のうち 26 日で 2000 秒超えるビルドが実行されており,その時のコンパイルしているファイル数は平均 1000 を超える.本研究では,まず,webkit を含むオープンソースの C/C++ プロジェクトのコンパイル時間を分析した結果を示す.その結果,コンパイラのフロントエンドにおいて冗長な処理が多く含まれていることがわかった.そこで本研究では,コンパイル結果を再利用することでコンパイラのフロントエンドの実行を高速化する手法を提案する.
著者
杉本 学 窪田 貴文 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2018-OS-143, no.14, pp.1-8, 2018-05-14

コンピュータシステムの信頼性を損なう要因の一つに,オペレーティングシステムのカーネルフェイラがある.実際,Linux には 700 以上のフォールトが存在し,半年間に 187,000 件以上の障害レポートが報告されている.カーネルにおけるフェイラでは,エラーがカーネル全体に伝播する場合は少なく,多くはカーネル内のプロセスコンテキストに閉じたプロセスローカルエラーとなっている.そして,フェイラの約 73 % はこのプロセスローカルエラーによるものである.本論文では,プロセスローカルエラーによるカーネルフェイラを検知しエラー状態を取り除くことで,カーネルの実行を継続する手法を提案する.プロセスローカルエラーでは,エラー状態がプロセスコンテキストに閉じているため,フェイラの発生したプロセスを強制終了することでカーネル内のエラー状態を回復させることができる.これにより,従来のカーネルではフェイラとなっていた場合でも,カーネルを停止させずに他のプロセスの実行を継続することができる.