2012年5月6日日曜日

Linuxのパフォーマンスを改善する3つのTips - SourceForge.JP Magazine : オープンソースの話題満載


 あらゆる最適化について言えることだが、何らかの簡単なベンチマークを行なわなければ、結果を本当に向上させることができたのかどうかを知ることはできない。Linux PC上では通常、数多くのプロセスが走っていて、それらが性能の測定に影響を与える可能性がある。その影響を最低限に抑えるために作業はランレベル1で行なうようにしよう。ランレベル1は、最低限のプロセスのみを実行するシングルユーザモードだ。ランレベル1で作業を行なうためには、ALT-F1を入力してコンソールに切り替え、ルートとしてログインして「init 1」コマンドを実行する。その結果ほとんどのサービスとアプリケーションが終了するので、ばらつきのない結果を得ることができる。

 しかしランレベル1においてもさらに、走っているべきでないプロセスがないかどうかを「ps xaf」コマンドを使って確認しておいた方が良いだろう。私の場合、ddclientプログラムが実行されていて(厳密に言うとスリープしていて)、最適化の結果に影響を与えかねなかったため、「killall ddclient」を実行して終了した。

ハードディスクの速度を最適化する

 最適化の最初のターゲットはハードディスクだ。「cat /etc/fstab」コマンドとmountコマンドを使用すれば、現在使用しているハードディスクを確認することができる。私の場合「cat /etc/fstab」の実行結果は次のようになった。


マザーボードにUSBを接続する方法
  /dev/hda3        /                  reiserfs  acl,user_xattr,noatime  1 1  /dev/hda1        /boot              ext2      acl,user_xattr          1 2  /dev/hda2        swap               swap      defaults                0 0  proc             /proc              proc      defaults                0 0  sysfs            /sys               sysfs     noauto                  0 0  debugfs          /sys/kernel/debug  debugfs   noauto                  0 0  usbfs            /proc/bus/usb      usbfs     noauto                  0 0  devpts           /dev/pts           devpts    mode=0620,gid=5         0 0  /dev/fd0         /media/floppy      auto      noauto,user,sync        0 0  /dev/hdd1        /media/disk2       reiserfs  defaults,noatime        1 2  

 またmountの実行結果は次の通りだった。

  /dev/hda3 on / type reiserfs (rw,noatime,acl,user_xattr)  proc on /proc type proc (rw)  sysfs on /sys type sysfs (rw)  debugfs on /sys/kernel/debug type debugfs (rw)  udev on /dev type tmpfs (rw)  devpts on /dev/pts type devpts (rw,mode=0620,gid=5)  /dev/hda1 on /boot type ext2 (rw,acl,user_xattr)  /dev/hdd1 on /media/disk2 type reiserfs (rw,noatime)  securityfs on /sys/kernel/security type securityfs (rw)  

 上記から、私のメインのハードディスクは/dev/hdaであり、/dev/hda1、/dev/hda2、/dev/hda3という3つのパーティションがあることが分かる。またセカンダリ・ハードディスクは/dev/hddで、/dev/hdd1という1つのパーティションがあることが分かる。ここではメインのハードディスクを最適化する。

 ハードディスクの設定の表示や変更は、 hdparm コマンド(「hdparm」は「ハードディスク・パラメータ」の略)を使って行なうことができる。ただし変更すれば必ず良い結果がもたらされるというわけではなく、性能が低下したり、ひどく有害でデータが失われてしまう場合もある。「man hdparm」を実行すればhdparmコマンドの全オプションを見ることができて、危険なオプションについては「危険」と記されている。


どのように私はテレビで外にスクリーンを交換してください

 それではまず、現時点での性能を見ることから始めよう。「hdparm -t /dev/hda」コマンドを実行すれば、転送速度のテストが行なわれ、以下のような結果が表示される。

  /dev/hda:     Timing buffered disk reads:   10 MB in  3.14 seconds =   3.18 MB/sec  

 この結果から、ディスクが非常に低速であることが分かる。私は通常このコマンドを12回実行して、最小値と最大値を捨て、残りの値の平均を取るようにしている。これを行なうためには次のように実行すると良い。

  for ((i=0;i<12;i++)) do; hdparm -t /dev/hda; done  

 上記のコマンドは、テストを12回実行する。最小値と最大値の排除や平均の計算もスクリプトで行なうようにしても良いが、それくらいは電卓でも十分簡単に済ませることができるだろう。

 次に、「hdparm -v /dev/hda」を実行してディスクのパラメータの現在の状態を見てみよう。

  /dev/hda:   multcount    =  0 (off)   IO_support   =  0 (default 16-bit)   unmaskirq    =  0 (off)   using_dma    =  0 (off)   keepsettings =  0 (off)   readonly     =  0 (off)   readahead    =  0 (off)   geometry     = 16383/255/63, sectors = 156301488, start = 0  

 一般的に最初に試す最適化は、転送の高速化のためにドライブが直接メモリにデータを保存できるようにするDMA(Direct Memory Access)を使用することだ。DMAを使用するようにするだけでも、かなりの高速化を実現することができる。私の場合、「hdparm -d1 /dev/hda」を実行してハードディスクのDMAを有効にした後(なおオプションを-d0とすればDMAは無効になり性能は落ちる)、再び速度を測ってみると16.25 MB/secに改善されていた。つまり元の速度から5倍も高速化したことになる!


SVGAおよびVGAとは何か

 DMA以外のオプションを試すこともできる。-c3オプションを使用してhdparm -c3 /dev/hdaを実行すれば、IO_supportの値を変更することができる。私のシステムで試したところ16.4 MB/secという結果になった。これはわずかな改善だが、それでも設定しておく価値はある。

 multcountは、一度の操作で読み取ることのできるセクタ数を示すパラメータだ。「hdparm -i /dev/hda」を実行すると、「maxMultSect=16」というやや紛らわしい表示も出るが、これはハードディスクが一度に読み取る数の最大値を示すものだ。したがって最大値に設定したい場合には「hdparm -m16 /dev/hda」を実行すれば良い。

 セクタの読み取りに関連するもう一つのパラメータに、readaheadがある。readaheadについては、最適の結果を得るためには様々な値を試してみる必要がある。私の場合、最も良い結果を得ることができたのは「hdparm -a1024 /dev/hda」という設定にしたときだった。このようにmultcountreadaheadを最適化した結果、ハードディスクの速度は33 MB/sec前後にまで向上した。この値を得るためには、readaheadの値を-a128から-a256-a512-a1024-a2048まで変えてみることで異なる組合わせを試してみたのだが、-a1024の時が最も高速だった。ただしあなたも同じ結果になるとは限らない。当然ながらパラメータを変更する際には毎回上記の12回のテストを行なった。

 またmultcountの値についても-m1から-m16まで変えてみたところ、-m16が最適だった。なお-m32も試してみたが、私のハードディスクではこの値を扱うことができないと警告するエラーが返ってきた。


 以上の変更を行なった結果、ハードディスクの速度を約11倍に上げることができた――なかなか悪くない結果だ。以上の他にも試すことのできるオプションがあと2、3個あるが、危険をともなう可能性がある。例えば「hdparm -u1 /dev/hda」として割り込みに関していじることや、「hdparm -X」コマンドを使って転送モードを変更することなどができる。今回これらについても試してみたが、特に高速化は見られなかったので元に戻しておくことにした。

 「設定した値はhdparm -k1 /dev/hda」を実行することにより保存することができるが、これは正しく最適化されていることが本当に確実になるまでは行なうべきではない。その代わりの方法として、起動時に実行するコマンドを記述する/etc/init.d/boot.localファイルの中にhdparmコマンドを追加しておくことができる。ただしこのファイルは少なくとも私が使っているopenSUSEシステムでは/etc/init.d/boot.localなのだが、ディストリビューションによっては異なるかもしれない。

 この時点で、ハードディスクは最高速度で動いているはずだ。そこで次にやや高レベルに移動し、ファイルのアクセスを最適化しよう。



These are our most popular posts:

Avast!5 使い方 コンピューター検査タブ - avast for Windows7

検査記録」の3つの項目で構成されており、定期的なドライブのウイルス検査を直接実行 したり、 ... ウイルス検査スケジュールを設定することができます。 ... ウイルス検査を実行 する領域をハードディスクドライブ単位、フォルダ単位で選択して検査します。 read more

Linuxのパフォーマンスを改善する3つのTips - SourceForge.JP ...

2007年7月17日 ... CDやUSBメモリから起動してHDDのパーティション操作やバックアップを行う「GParted live」の使い方 ... cat /etc/fstab 」コマンドと mount コマンドを使用すれば、現在使用して いるハードディスクを確認することができる。私の場合「 cat /etc/fstab 」の実行結果は次 の ... man hdparm 」を実行すれば hdparm コマンドの全オプションを見ることができて、 危険なオプションについては「危険」と記されている。 それではまず、 ... read more

スマートHDD

2012年4月1日 ... あなたは完全に削除することができます Smart HDD 私たちの取り外しの指示に従って 、コンピュータから. 何も信じていない ... のクリエイター Smart HDD 特にシステムがお 使いのコンピュータに復元を実行する能力を無効にしている. 恒久的に ... 3 したら、[ アドバンストオプション]メニューにあります, 矢印キーを使用して選択します。 read more

価格.com - SONY プレイステーション3 HDD 160GB チャコール・ブラック ...

SONY プレイステーション3 HDD 160GB チャコール・ブラック CECH-3000Aについて の情報を交換するなら、日本最大級の「価格.com クチコミ掲示板」で。 ... DVDは再生 されるのですがゲームを再生することがいきなりできなくなりました。 .... セーフモードの 全てを実行しても直らない場合は、HDDの故障かBDドライブの故障の可能性が高く なりますので、サポートセンターに ... スクロールするってことから方向キーだとは思い ますが使用者の力加減が思いのほか強くて劣化したのではと思ってしまいます ... read more

0 件のコメント:

コメントを投稿

登録 コメントの投稿 [Atom]

<< ホーム