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

tokyodebian CVS Commit tokyodebian-commits at lists.alioth.debian.org
Tue Sep 19 14:23:34 UTC 2006


  User: dancer  
  Date: 06/09/19 14:23:34

  Modified:    .        debianmeetingresume200610.pdf
                        debianmeetingresume200610.tex
  Log:
  add notes on apt optimization
  
  Revision  Changes    Path
  1.8       +938 -910  monthly-report/debianmeetingresume200610.pdf
  
  	<<Binary file>>
  
  
  1.8       +60 -0     monthly-report/debianmeetingresume200610.tex
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200610.tex?annotate=1.8&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200610.tex?rev=1.8&content-type=text/x-cvsweb-markup&cvsroot=
  
  CVSWeb: Diff to previous version:   http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/tokyodebian/monthly-report/debianmeetingresume200610.tex.diff?r1=1.8&r2=1.7&cvsroot=
  
  -----------------------------------
  
  Index: debianmeetingresume200610.tex
  ===================================================================
  RCS file: /cvsroot/tokyodebian/monthly-report/debianmeetingresume200610.tex,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- debianmeetingresume200610.tex	17 Sep 2006 01:41:33 -0000	1.7
  +++ debianmeetingresume200610.tex	19 Sep 2006 14:23:34 -0000	1.8
  @@ -560,10 +560,70 @@
   
   プロファイル結果を利用して、解析します。
   
  +\texttt{apt-get update}の結果を確認したところ、下記のようになるということ
  +がわかりました。どうも、SHA1Transform と MD5Transform という関数の負荷
  +が高いようです。
  +
  +\begin{commandline}
  +sudo apt-get update
  +[中略]
  +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*) 
  +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}
  +
   \subsection{最適化例}
   
   今回の結果で適用できる最適化を分析します。
   
  +\texttt{apt-pkg/contrib/sha1.cc}, \texttt{apt-pkg/contrib/md5.cc} を見る
  +と md5 については、 dpkg の実装を、 sha1についてはどこからか拾ってきた実
  +装を利用しており、 C++ で書かれた汎用のコードを利用しているということが
  +わかります。
  +
  +てっとり早く GPL 互換の既存の sha1 と md5 の高速な実装を探してみます。
  +GNUTLSに含まれている sha1 / md5 の実装は、 \texttt{gl/sha1.c},
  +\texttt{gl/md5.c} にあり、特に高速化されていないようです。
  +
  +gitのソースを見てみます。ppc と arm 用の最適化されている sha1 の実装が含
  +まれていますが、 i386 用はないようです。
  +
  +予備試験をしてみます。600MB程度の iso ファイルの sha1 をとるのに、
  +mozilla 実装と openssl 実装でどらくらい違うのかを比較してみました。
  +mozilla 実装で 14 秒程度、 openssl 実装で 12 秒程度です。この時点で非
  +常にやる気が失せています。
  +
   \subsection{結果の検証}
   
   さきほどのベンチマークを利用して、状況が改善していることを確認します。
  
  
  



More information about the Tokyodebian-commits mailing list