Linuxパフォーマンスチューニング

Last-modified: 2008-06-17 (火) 10:27:24

余計なサービスを削除する # chkconfig --del canna

 

atimeを使わない # mount -t ext2 -o noatime /dev/hda1 /
ramエリアを確保する # mke2fs /dev/ram 1024
ramをモジュールで利用する # insmod rd rd_size=102400
tmpfsを利用して動的にメモリベースのファイルを利用する。 # mount -t tmpfs /dev/shm /tmp
ホットファイルの発見 # find /foo -mmin -10
DMAを設定する

DMAの設定を確認します # hdparm /dev/hda
DMAの設定をします # hdparm -d1 /dev/hda
16bitから32bitに変更します # hdparm -c1 /dev/hda
 

gcc最適化

CFLAGSもしくはCXXFLAGS、コマンドラインで-On(nは0~3)を指定
-marchと-mcpuでcpuに対して最適化
デバッグ情報の削除 # strip true

プロセスの優先順位を変更します $ nice -n 10 slocate

 

XWindowでロードするモジュールを減らす XF86Configを修正
フォントサーバーの停止 # chkconfig xfs off; # chkconfig --del xfs
ビットマップフォントを使用しない XF86Configでunscaledを指定

FontPath   "/usr/X11R6/lib/X11/fonts/japanese/:unscaled"

Xサーバーを再構築してCPUに対して最適化する xf86site.def
VRAMの書き込みにMTRRを利用する write-combiningを/proc/mtrr以下に書き込む

 

PPPoEをカーネル空間で動作させる
IPパケットフレーム長を長くする # ifconfig eth1 mtu 1454

 

CPUのパフォーマンスを調べる /proc/cpuinfo, vmstat, mpstat
CPU数を増やす(ただしマルチスレッド対応のアプリケーションでなければ効果は薄いかもしれない)
キャッシュを増やす(CPUにすでに積まれているので、BIOSやOS側での設定変更は不可。

 

複数NICを束ねる(ボンディング/チーミング)
2通りの方法

送信ロードバランシング: ネットワークスイッチとNICを組み合わせる
リンクアグリゲーション: IEEE802.3ad, Cisco Ethernet Channel
 

監視
ボトルネックはどこにあるか

H/W クライアント→
 ケーブル→ハブorスイッチorルータ→
  ケーブル→
   NIC→
    サーバー(キャッシュ・メモリ・RAID・ディスク・CPU・バス)

改善個所の決定
改善方法の選択肢
改善

 

[参照]
Linuxチューニング