[Tokyodebian-commits] TokyoDebian CVS update: monthly-report debianmeetingresume200609.tex

tokyodebian CVS Commit tokyodebian-commits at lists.alioth.debian.org
Sat Sep 2 12:27:49 UTC 2006


  User: dancer  
  Date: 06/09/02 12:27:49

  Modified:    .        debianmeetingresume200609.tex
  Log:
  update
  
  Revision  Changes    Path
  1.14      +130 -31   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.14&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200609.tex?rev=1.14&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.14&r2=1.13&cvsroot=
  
  -----------------------------------
  
  Index: debianmeetingresume200609.tex
  ===================================================================
  RCS file: /cvsroot/tokyodebian/monthly-report/debianmeetingresume200609.tex,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- debianmeetingresume200609.tex	2 Sep 2006 06:16:53 -0000	1.13
  +++ debianmeetingresume200609.tex	2 Sep 2006 12:27:49 -0000	1.14
  @@ -524,64 +524,163 @@
   %$
   その後、インストールします。
   
  +まず、oprofileを実行するのを便利にするために、スクリプトを仕込みます。
  +入力されたコマンドを10回実行してそのプロファイルを取得するというものです。
  +
  +\begin{commandline}
  + read CMD
  + sudo opcontrol --shutdown
  + sudo opcontrol --reset
  + sudo opcontrol --setup \
  +  --vmlinux=/lib/modules/$(uname -r)/build/vmlinux \
  +    --event=CPU_CLK_UNHALTED:180000:0:1:1 --separate=library
  +    sudo opcontrol --start
  + for A in $(seq 1 10); do
  +   $CMD
  + done
  + opcontrol --dump && \
  + opreport -l -p /lib/modules/$(uname -r)/kernel 2>/dev/null \
  +  | head -30
  +\end{commandline}
  +
   まず、デバッグ用のバイナリが正常に作成できているか簡単に確認します。まず、
   apt-get update をループでまわしてみます。libapt-pkgのシンボルレベルで確
   認できているので、デバッグシンボルが存在しているということがわかります。
   
   \begin{commandline}
  - $ while true; do sudo apt-get update ; done
  +sudo apt-get update
   \end{commandline}
  -%$
   
   \begin{commandline}
  - Every 10.0s: opcontrol --dump && opreport -l 2>/dev/null | head -30 ;
  - opcontrol --reset                                             Mon Jul
  - 31 08:28:16 2006 
  -CPU: Core Solo / Duo, speed 2061.84 MHz (estimated)
  +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
  -43117    42.3446  libapt-pkg-libc6.3-6.so.3.11.0 apt-get            SHA1Transform(unsigned int*, unsigned char const*)
  -23991    23.5612  libapt-pkg-libc6.3-6.so.3.11.0 apt-get            MD5Transform(unsigned int*, unsigned int const*)
  -6551      6.4337  vmlinux                  vmlinux                  sys_set_thread_area
  -5027      4.9370  libc-2.3.6.so            apt-get                  (no symbols)
  -3280      3.2212  vmlinux                  vmlinux                  cfq_dispatch_requests
  -3264      3.2055  libfb.so                 Xorg                     fbCopyAreammx
  -739       0.7258  gpgv                     gpgv                     (no symbols)
  -614       0.6030  libc-2.3.6.so            http                     (no symbols)
  -606       0.5951  ld-2.3.6.so              http                     (no symbols)
  -510       0.5009  libc-2.3.6.so            file                     (no symbols)
  +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)
  +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)
  +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
  +123       0.2393  vmlinux                  vmlinux                  sysenter_past_esp
  +95        0.1848  libapt-pkg-libc6.3-6.so.3.11.0 apt-get                  .plt
  +94        0.1829  ld-2.3.6.so              gpgv                     do_lookup_x
  +89        0.1732  libc-2.3.6.so            http                     (no symbols)
  +89        0.1732  vmlinux                  vmlinux                  do_generic_mapping_read
  +88        0.1712  ld-2.3.6.so              file                     do_lookup_x
  +87        0.1693  vmlinux                  vmlinux                  memcpy
  +72        0.1401  ld-2.3.6.so              http                     strcmp
  +69        0.1343  vmlinux                  vmlinux                  _spin_lock
  +65        0.1265  vmlinux                  vmlinux                  vfs_read
  +64        0.1245  ld-2.3.6.so              gpgv                     _dl_elf_hash
  +62        0.1206  vmlinux                  vmlinux                  __handle_mm_fault
  +60        0.1167  ld-2.3.6.so              http                     _dl_elf_hash
  +58        0.1128  oprofiled                oprofiled                (no symbols)
   \end{commandline}
   
  -dpkgについてもプロファイリングしてみます。しかしここで問題が出ます。
  +dpkgについてもプロファイリングしてみます。\footnote{ここで問題が出ました。
   libc6 の dbg パッケージの情報を oprofile が処理できていないようです。
   straceで解析してみましたが、ファイルをひらくところまでは何かできているよ
  -うで、深入りすると深そうです。
  +うです。これは別途バグ報告してみます。}
  +
  +\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
  +41009    32.6009  libc-2.3.6.so            dpkg                     (no symbols)
  +27485    21.8497  processor.ko             processor                acpi_processor_idle
  +14863    11.8156  dpkg                     dpkg                     parsedb
  +4845      3.8516  dpkg                     dpkg                     findnamenode
  +2691      2.1393  dpkg                     dpkg                     findpackage
  +1994      1.5852  dpkg                     dpkg                     f_dependency
  +1742      1.3848  vmlinux                  vmlinux                  get_page_from_freelist
  +1660      1.3196  dpkg-deb                 dpkg-deb                 inflate_fast
  +1552      1.2338  dpkg                     dpkg                     iterpkgnext
  +1520      1.2084  dpkg                     dpkg                     .plt
  +1500      1.1925  dpkg                     dpkg                     varbufaddbuf
  +1192      0.9476  dpkg                     dpkg                     filesdbinit
  +1080      0.8586  dpkg                     dpkg                     w_dependency
  +1001      0.7958  dpkg                     dpkg                     varbufdependency
  +988       0.7854  dpkg                     dpkg                     nfmalloc
  +884       0.7028  dpkg                     dpkg                     illegal_packagename
  +849       0.6749  vmlinux                  vmlinux                  page_fault
  +802       0.6376  vmlinux                  vmlinux                  __copy_from_user_ll_nocache_nozero
  +687       0.5461  dpkg                     dpkg                     ensure_packagefiles_available
  +633       0.5032  dpkg                     dpkg                     varbufaddc
  +568       0.4515  dpkg                     dpkg                     f_filecharf
  +516       0.4102  vmlinux                  vmlinux                  __copy_to_user_ll
  +473       0.3760  dpkg                     dpkg                     copy_dependency_links
  +458       0.3641  dpkg                     dpkg                     parseversion
  +427       0.3395  dpkg                     dpkg                     ensure_package_clientdata
  +406       0.3228  dpkg                     dpkg                     nfstrsave
  +384       0.3053  dpkg                     dpkg                     varbufrecord
  +\end{commandline}
  +
  +パッケージをインストールして削除する、というループを回してみましょう。
  +\texttt{apt-listbugs}と\texttt{apt-listchanges}が含まれており、ruby と
  +pythonの処理負荷が高いことがわかります。また、libc6のなかで何か重たい処
  +理をしているのがわかります。
   
   \begin{commandline}
  - $ while true; do sudo dpkg -i ../dselect_1.13.22_i386.deb ; done
  + sudo apt-get install -y dsh; sudo apt-get remove -y libdshconfig1
   \end{commandline}
  -%$
   
   \begin{commandline}
  -CPU: Core Solo / Duo, speed 2061.84 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
  -44592    33.3795  libc-2.3.6.so            dpkg                     (no symbols)
  -24191    18.1083  vmlinux                  vmlinux                  sys_set_thread_area
  -16423    12.2935  dpkg                     dpkg                     parsedb
  -4416      3.3056  dpkg                     dpkg                     findnamenode
  -2904      2.1738  dpkg                     dpkg                     findpackage
  -2216      1.6588  dpkg                     dpkg                     f_dependency
  -1654      1.2381  dpkg-deb                 dpkg-deb                 inflate_fast
  -1647      1.2329  dpkg                     dpkg                     .plt
  +195383   24.3783  processor                processor                (no symbols)
  +114285   14.2595  libc-2.3.6.so            dpkg                     (no symbols)
  +67157     8.3793  libruby1.8.so.1.8.4      ruby1.8                  (no symbols)
  +48893     6.1005  libc-2.3.6.so            dpkg-query               (no symbols)
  +41537     5.1826  dpkg                     dpkg                     parsedb
  +30685     3.8286  perl                     perl                     (no symbols)
  +28353     3.5377  dpkg-query               dpkg-query               parsedb
  +26135     3.2609  python2.4                python2.4                (no symbols)
  +13951     1.7407  libc-2.3.6.so            ruby1.8                  (no symbols)
  +10023     1.2506  libc-2.3.6.so            apt-get                  (no symbols)
  +9138      1.1402  dpkg                     dpkg                     findnamenode
  +7914      0.9874  vmlinux                  vmlinux                  get_page_from_freelist
  +7656      0.9553  dpkg                     dpkg                     findpackage
  +5963      0.7440  vmlinux                  vmlinux                  read_hpet
  +5777      0.7208  libc-2.3.6.so            perl                     (no symbols)
  +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&)
  +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()
  +3277      0.4089  vmlinux                  vmlinux                  delay_tsc
   \end{commandline}
   
  -\subsection{テストケースの作成}
  +\subsection{テスト環境の作成}
   
  -テストケースを作成します。今回はchroot 内部で大量の apt-get update,
  +テスト用の環境を作成します。今回はchroot 内部で大量の apt-get update,
   apt-get install と apt-get remove をループで実行してベンチマークをとって
   みましょう。
   
  +dpkgとaptを変更すると最悪システムが動作しなくなるため、テスト用に環境
  +を準備することは大切です。
  +
  +\begin{commandline}
  + $sudo cowbuilder --login --bindmount $(pwd)
  +\end{commandline}
  +
  +
   \subsection{最適化の必要な部分の解析}
   
   プロファイル結果を利用して、解析します。
  
  
  



More information about the Tokyodebian-commits mailing list