ソフトウェアビルド試験用のスクラッ チ環境の高速化のため...

32
. . . . . . ソフト ェア ルド スクラッ ため コピー・オン・ ライト・ファイルシステム Japan Linux Conference 2007 2007 9 14

Upload: others

Post on 19-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

ソフトウェアビルド試験用のスクラッチ環境の高速化のためのコピー・オン・ライト・ファイルシステムの実装と

適用Japan Linux Conference 2007

2007年 9月 14日

上川 純一

Page 2: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Agenda

I Debian Project 紹介I pbuilder のコンセプトI pbuilder の課題I cowdancer による解決策I cowbuilder の評価

Page 3: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

上川 純一

I Debian [email protected]

I 音楽製作ツールI Apple MacBook関連I 日本語化I 品質管理I 共有ライブラリ管理指針

I Debian JP 会長I 東京エリアDebian 勉強会発起人

I 日本ヒューレット・パッカード株式会社コンサルティング・インテグレーション統括本部勤務

Page 4: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Debian Project

Page 5: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Debian Project とは

Linux ディストリビューションの一つ「Debian GNU/Linux」を開発している団体

I 1つの社会契約、ポリシーI 10以上のアーキテクチャI 180以上のメーリングリストI 1000人以上のメンテナI 10000以上のパッケージ (バイナリ・ソース配布)

I 全ては自由なソフトウェアのため

Page 6: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Debian Projectの基本方針

I Debian 社会契約I Debian Constitution

I Debian フリーソフトウェアガイドライン

I Debian ポリシー

営利ではなく、フリーソフトウェアの論理を中心に動くLinux ディストリビューション誰でもやる気があればDebian の開発に参加できる

Page 7: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilderコンセプト

Page 8: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder コンセプト

I pbuilder は Debian パッケージをソースからビルドできることを検証するツール

I chroot 環境 (debootstrap により作成した DebianGNU/Linux の最小インストール)を base.tgz として作成・維持管理・利用を支援

I スクラッチテスト環境の利用を毎回 base.tar.gz を展開することで実現

I Debian のソース品質向上のため開発者の標準開発手順書(Developer’s Reference)にて利用を文書化

Page 9: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder インストール方法

# apt-get install pbuilder

# vi /etc/pbuilderrc

# evince

/usr/share/doc/pbuilder/

pbuilder-doc.pdf

Page 10: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder 基本操作

pbuilder create

pbuilder update

pbuilder build

I スクラッチ環境 (base.tgz)を作成するのに一度だけ実行

I unstable の更新を追跡するために一日二回実行

I スクラッチ環境で Debianパッケージをビルドする度に実行

Page 11: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder 基本操作

Table: pbuilder における代表的なコマンドとその実行頻度

操作 操作頻度 意味create 最初に base.tgz を作成

するときに一度スクラッチ環境の初期作成

update 一日二回 (Debian unsta-ble の新版のリリースにともなう更新)

ス ク ラッチ 環 境(base.tgz) を 最 新 の状態にアップデート

build 開発者がパッケージビルドするたび

Debianパッケージをスクラッチ環境内でビルドする

login 問題解決の必要のある際に随時

スクラッチ環境にログインし、インタラクティブに操作する

Page 12: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Debian パッケージの管理の流れ

Debian Developer がパッケージをメンテナンスする流れの例

maintaineredits source

build package

bugreport new upstream package

install locally

test package

fail

pbuilder build

success

fail

test pbuilder-generated package

success

fail

debsign

success

dput

Page 13: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder –create

# pbuilder --create

Distribution is sid.

Building the build environment

-> running debootstrap

/usr/sbin/debootstrap

I: Retrieving Release

I: Retrieving Packages

I: Validating Packages

.

.

Page 14: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder –update

# pbuilder --update

W: /home/dancer/.pbuilderrc does not exist

Building the build Environment

-> extracting base tarball [/var/cache/pbuilder/base.tgz]

.

.

Page 15: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder –build

# pbuilder --build dsh_*.dsc

I: using fakeroot in build.

Current time: Sat Jan 20 12:03:34 JST 2007

pbuilder-time-stamp: 1169262214

Building the build Environment

-> extracting base tarball [/home/dancer/DEBIAN/pbuilder/pbuilder/testsuite/tmp.FeeAX18779/testimage]

-> creating local configuration

.

.

Page 16: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder の課題

Page 17: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

pbuilder の課題

base.tgz を毎回展開するため、

I 速度が遅いI ディスク I/Oが多く、ディスクに負荷がかかる

毎日開発者が利用するもので、速度を向上すれば、開発者の作業時間のうち待ち時間を削減できる。

Page 18: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

実行時間の解析

Figure: pbuilder update と build 処理の実行時間内訳(秒)

実行時間自体も長いが、副次的処理がその大半を占めている

Page 19: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

cowdancer による解決策

Page 20: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

cowdancer による解決策

I ファイルシステム側にスクラッチ環境を支援する仕組みを準備(テンプレートとなるファイルシステムツリーを用意、書き込みは別の場所にセッション中の間だけ保持し、テンプレートのツリーには書き込まれない)

I 広く普及するため、既存のpbuilder の操作感とインストールの簡単さを維持

Page 21: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

実現方法の検討 1

base.tgz 展開処理を代替処理で実現することで処理全体の高速化を目標とし、COW デバイスで実装することを検討

各種スクラッチ環境の実装方式種類 実装例ブロックデバイス Device-mapper snaphotエミュレーション環境のファイルシステム

user-mode-linux block deviceの COW機能, qcow デバイス

ファイルシステム unionfs, aufs, funionfsユーザ空間 fl-cow

Page 22: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

実現方法の検討 2

I copy-on-write を利用するために qemu やuser-mode-linux などの手法を採用しようとした場合、速度を目的とした場合にはオーバヘッドが大きすぎる

I Linux Kernel 標準の機能で提供されているものが当時存在せず、カーネルの変更を必須にすると利用者が限られてしまう結果になる

Page 23: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

実現方法の検討 3

I ユーザ空間での実装を検討、既存では実現できないため、新規実装を決断

I ptrace と LD PRELOAD を比較した結果 LD PRELOADを選定

I Debian のサポートアーキテクチャが多数あり、ptraceの実装状況が各アーキテクチャにて異なるため複雑になることを想定

I ptrace では fork の取扱いが複雑

Page 24: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

glibc 関数のラッパーを実装

対応関数 備考open

open64

creat

creat64

fopen

fopen64

chown 一部 GLIBC 2.1バージョンが必要

fchown 処理せず警告を出す

lchown

chmod

fchmod 処理せず警告を出す

Page 25: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

cowbuilderの評価

Page 26: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

cowbuilder の評価

I cowdancer を実装したI cowdancer を利用して pbuilder を動作させるインタフェース cowbuilder を実装した

I 実行速度を評価した

Page 27: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

cowbuilder での操作時間

Table: 単純操作にかかる時間の比較(秒)

操作 pbuilder cowbuilder 速度向上比update 99 14 7x

build (N/W down) 31 5 6x

build (dsh) 67 52 1.3x

login 28 4 7x

Page 28: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

build 操作の時間差

Figure: pbuilder と cowbuilder の build 実行時間内訳の比較(秒)

改善できた

Page 29: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

popcon の結果:pbuilder と cowdancer の利用数

Page 30: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

謝辞

I Loıc Minier

I Mattia Dongili

I Matt Kraai

I ... と AUTHORS / THANKS ファイルに記述している多数の方々

Page 31: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

参考文献

I pbuilder ドキュメント:/usr/share/doc/pbuilder/pbuilder-doc.pdf,http://pbuilder.alioth.debian.org/

I pbuilder alioth project:http://alioth.debian.org/projects/pbuilder

I cowdancer git repository:git-clone git://git.debian.org/git/pbuilder/cowdancer.git

I pbuilder git repository:git-clone git://git.debian.org/git/pbuilder/pbuilder.git

Page 32: ソフトウェアビルド試験用のスクラッ チ環境の高速化のため …lc.linux.or.jp/lc2007/slide/CP-06.pdf操作 pbuilder cowbuilder 速度向上比 update 99 14 7x

. . . . . .

Questions?