[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