[Tokyodebian-commits] TokyoDebian CVS update: monthly-report
debianmeetingresume200609.tex debianmeetingresume200609.pdf
debianmeetingresume200609-presentation.pdf
tokyodebian CVS Commit
tokyodebian-commits at lists.alioth.debian.org
Sat Sep 2 13:37:17 UTC 2006
User: dancer
Date: 06/09/02 13:37:17
Modified: . debianmeetingresume200609.tex
debianmeetingresume200609.pdf
debianmeetingresume200609-presentation.pdf
Log:
updated
Revision Changes Path
1.15 +101 -18 monthly-report/debianmeetingresume200609.tex
CVSWEB Options: -------------------
CVSWeb: Annotate this file: http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200609.tex?annotate=1.15&cvsroot=
CVSWeb: View this file: http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200609.tex?rev=1.15&content-type=text/x-cvsweb-markup&cvsroot=
CVSWeb: Diff to previous version: http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200609.tex.diff?r1=1.15&r2=1.14&cvsroot=
-----------------------------------
Index: debianmeetingresume200609.tex
===================================================================
RCS file: /cvsroot/tokyodebian/monthly-report/debianmeetingresume200609.tex,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- debianmeetingresume200609.tex 2 Sep 2006 12:27:49 -0000 1.14
+++ debianmeetingresume200609.tex 2 Sep 2006 13:37:17 -0000 1.15
@@ -425,6 +425,20 @@
\texttt{oprofile}パッケージです。
\texttt{apt-get install oprofile}でインストールしましょう。
+カーネルのシンボルのプロファイリング\footnote{無い場合はカーネルの内部の
+どこかで実行していることはわかるが、実際どの関数で時間がかかっているのか、
+ということがわからない}をするために、vmlinuxファイルが必要です。
+カーネルを自分でコンパイルした場合には、ビルドしたディレクトリに
+vmlinux ファイルがあります。 make-kpkg を利用してビルドしたのであれば、
+
+\begin{commandline}
+ /lib/modules/$(uname -r)/build
+\end{commandline}
+
+から適切にリンクがはられているはずです。探してみてください。
+\footnote{vmlinux ファイルよりは普及している System.map を利用するパッチ
+というのも存在するので、それを適用してみるのもよいかもしれません。}
+
\subsection{oprofile が自分の利用しているCPUをサポートしていない場合}
残念ながら7月現在時点で、Intel core duo CPU 上ではoprofileが動作しません。
@@ -522,6 +536,7 @@
$ debuild -e DEB_BUILD_OPTIONS=nostrip
\end{commandline}
%$
+
その後、インストールします。
まず、oprofileを実行するのを便利にするために、スクリプトを仕込みます。
@@ -549,22 +564,24 @@
\begin{commandline}
sudo apt-get update
-\end{commandline}
-
-\begin{commandline}
+[中略]
CPU: Core Solo / Duo, speed 1833 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 180000
samples % image name app name symbol name
-23823 46.3519 libapt-pkg-libc6.3-6.so.3.11.0 apt-get SHA1Transform(unsigned int*, unsigned char const*)
-12732 24.7724 libapt-pkg-libc6.3-6.so.3.11.0 apt-get MD5Transform(unsigned int*, unsigned int const*)
+23823 46.3519 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+SHA1Transform(unsigned int*, unsigned char const*)
+12732 24.7724 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ MD5Transform(unsigned int*, unsigned int const*)
4282 8.3314 processor.ko processor acpi_processor_idle
2584 5.0276 libc-2.3.6.so apt-get (no symbols)
2012 3.9147 vmlinux vmlinux __copy_to_user_ll
503 0.9787 gpgv gpgv (no symbols)
222 0.4319 vmlinux vmlinux timer_interrupt
-166 0.3230 libapt-pkg-libc6.3-6.so.3.11.0 apt-get MD5Summation::Add(unsigned char const*, unsigned long)
+166 0.3230 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ MD5Summation::Add(unsigned char const*, unsigned long)
160 0.3113 vmlinux vmlinux page_fault
-158 0.3074 libapt-pkg-libc6.3-6.so.3.11.0 apt-get SHA1Summation::Add(unsigned char const*, unsigned long)
+158 0.3074 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ SHA1Summation::Add(unsigned char const*, unsigned long)
140 0.2724 libstdc++.so.6.0.8 apt-get (no symbols)
134 0.2607 vmlinux vmlinux find_get_page
125 0.2432 ld-2.3.6.so http do_lookup_x
@@ -587,13 +604,11 @@
dpkgについてもプロファイリングしてみます。\footnote{ここで問題が出ました。
libc6 の dbg パッケージの情報を oprofile が処理できていないようです。
straceで解析してみましたが、ファイルをひらくところまでは何かできているよ
-うです。これは別途バグ報告してみます。}
+うです。これは別途バグ報告してみます。\debianbug{385704}}
\begin{commandline}
sudo dpkg -i ../dselect_1.13.22_i386.deb
-\end{commandline}
-
-\begin{commandline}
+[中略]
CPU: Core Solo / Duo, speed 1833 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 180000
samples % image name app name symbol name
@@ -633,9 +648,7 @@
\begin{commandline}
sudo apt-get install -y dsh; sudo apt-get remove -y libdshconfig1
-\end{commandline}
-
-\begin{commandline}
+[中略]
Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 180000
samples % image name app name symbol name
195383 24.3783 processor processor (no symbols)
@@ -656,14 +669,17 @@
5465 0.6819 dpkg dpkg f_dependency
5108 0.6373 dpkg-query dpkg-query findpackage
4525 0.5646 dpkg dpkg filesdbinit
-4452 0.5555 libapt-pkg-libc6.3-6.so.3.11.0 apt-get pkgDepCache::CheckDep(pkgCache::DepIterator, int, pkgCache::PkgIterator&)
+4452 0.5555 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgDepCache::CheckDep(pkgCache::DepIterator, int,
+ pkgCache::PkgIterator&)
4237 0.5287 vmlinux vmlinux page_fault
4182 0.5218 dpkg dpkg .plt
4101 0.5117 dpkg dpkg varbufaddbuf
3874 0.4834 dpkg-query dpkg-query f_dependency
3744 0.4671 dpkg dpkg iterpkgnext
3645 0.4548 libstdc++.so.6.0.8 apt-get (no symbols)
-3287 0.4101 libapt-pkg-libc6.3-6.so.3.11.0 apt-get pkgProblemResolver::MakeScores()
+3287 0.4101 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgProblemResolver::MakeScores()
3277 0.4089 vmlinux vmlinux delay_tsc
\end{commandline}
@@ -676,11 +692,78 @@
dpkgとaptを変更すると最悪システムが動作しなくなるため、テスト用に環境
を準備することは大切です。
+chroot 内部では、chroot外部のファイルにアクセスすることができません。
+そのため、bind-mount を行い、外部のファイルを中に見せます。
+中で必要になるファイルとしては、apt/dpkgのデバッグ版、oprofileの修正版
+パッケージ(あれば)、そして実行中のLinux kernel に対応するvmlinux ファ
+イルです。
+
+\begin{commandline}
+ $ sudo cowbuilder --login --bindmount $(pwd)
+ # apt-get install gnupg
+ # apt-get update
+ # apt-get install oprofile libc6-dbg
+ # dpkg -i (bind-moumtしたところにおいた事前準備した apt/dpkg/oprofile)
+ # apt-get -y install gnome; apt-get -y remove libglib2.0-0
+ # unset LD_PRELOAD
+ # unset COWDANCER_ILISTFILE
+ # mount -t oprofilefs nodev /dev/oprofile >/dev/null
+\end{commandline}
+
+chroot で調べてみると、perlが一番重たい処理をしているというこ
+とがわかりました。こりゃチューニングしにくいですね。依存関係の解決などの
+処理に時間がかかっているかと仮説をたてていたのですが、実はそんなところで
+は時間はとられておらず、perlが時間をとっているということがわかりました。
+
\begin{commandline}
- $sudo cowbuilder --login --bindmount $(pwd)
+apt-get install -y dsh; apt-get remove -y libdshconfig1
+[中略]
+CPU: Core Solo / Duo, speed 1833 MHz (estimated)
+Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of 0x00 (Unhalted core cycles) count 180000
+samples % image name app name symbol name
+48879 32.1023 processor processor (no symbols)
+20915 13.7364 perl perl (no symbols)
+7787 5.1143 libc-2.3.6.so apt-get (no symbols)
+6775 4.4496 libc-2.3.6.so dpkg (no symbols)
+5198 3.4139 vmlinux vmlinux read_hpet
+4202 2.7598 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgDepCache::CheckDep(pkgCache::DepIterator, int,
+ pkgCache::PkgIterator&)
+4167 2.7368 libc-2.3.6.so perl (no symbols)
+2778 1.8245 libstdc++.so.6.0.8 apt-get (no symbols)
+2587 1.6991 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ debVersioningSystem::CmpFragment(char const*, char const*, char const*,
+ char const*)
+2561 1.6820 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgProblemResolver::MakeScores()
+2103 1.3812 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ debVersioningSystem::DoCmpVersion(char const*, char const*, char
+ const*, char const*)
+1865 1.2249 dpkg dpkg parsedb
+1669 1.0962 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgDepCache::Update(OpProgress*)
+1506 0.9891 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ debVersioningSystem::CheckDep(char const*, int, char const*)
+1384 0.9090 dpkg dpkg findnamenode
+1211 0.7954 vmlinux vmlinux __copy_to_user_ll
+1148 0.7540 vmlinux vmlinux get_page_from_freelist
+1107 0.7270 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ OpProgress::CheckChange(float)
+955 0.6272 vmlinux vmlinux page_fault
+912 0.5990 ldconfig ldconfig (no symbols)
+872 0.5727 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgPolicy::GetCandidateVer(pkgCache::PkgIterator)
+826 0.5425 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgDepCache::DependencyState(pkgCache::DepIterator&)
+787 0.5169 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgProblemResolver::ScoreSort(void const*, void const*)
+752 0.4939 libapt-pkg-libc6.3-6.so.3.11.0 apt-get .plt
+748 0.4913 dpkg dpkg filesdbinit
+680 0.4466 vmlinux vmlinux delay_tsc
+679 0.4459 libapt-pkg-libc6.3-6.so.3.11.0 apt-get
+ pkgCache::PkgIterator::operator++(int)
\end{commandline}
-
\subsection{最適化の必要な部分の解析}
プロファイル結果を利用して、解析します。
1.15 +1222 -1026monthly-report/debianmeetingresume200609.pdf
<<Binary file>>
1.3 +1506 -531 monthly-report/debianmeetingresume200609-presentation.pdf
<<Binary file>>
More information about the Tokyodebian-commits
mailing list