Google Code Prettify

2008年6月24日

P4P800-VM でPATA/SATA混合時のLinux 2.6.x 挙動がいい感じ

二年前に、P4P800-VM でPATA/SATA混合時のLinux 2.6.x 挙動?という記事を書いた。

現状の対応度合いが気になったので、試しに Ubuntu8.04 をインストールしてみた。

。。。

あっさり入ってしまった。。。余分なカーネルオプション(irqpollとか)を付けずにも、起動できるようである。挙動不審な問題(スループットとか)とかも起きないようである。

どうも、2.6.16から2.6.24のどこかで対応が進んだらしい。確認するのに骨が折れるので気にしないことが一番である。

Debian/etch の標準カーネルでは irqpoll が必要であるが、Etch&Halfに含まれるlinux-2.6.24 を使うようにすれば不要である。

要は、ディストリビューションの最新安定版(Debianは除く)を使えば良いのかなぁ?

さて、P4P800-VMは一年以上使っていないし、捨てますか。。。

追記(2008/06/25)

CentOS 5.2 がリリースした記念にインストールしてみたが、見事の途中で「Disabling IRQ #XX」と出力されて、殆ど止まってしまった。。。2.6.18 では直ってないっぽい。

次いでに Fedora 9 とか入れてると変に引っかかること無くインストールできたので、CentOS 6.x くらいまで待たないと完全対応とはいかないのかぁ。

でも、やっぱり P4P800-VM は捨てますか。。。

2008年6月3日

ブログの移転の予定の予定?

取り敢えず、そのうちブログを移転します。ただ、半年前から思ってるので半年後になるかもしれん。

どこかは決めていませんが、Bloggerはてな のどっちかにしようかと思案中です。

取り敢えず、無料で、長期期間放置しても(死後も)削除されないようなとこが良い。。。

べつな良さげなところがあれば、そっちにするかも。

Blogger に書いてみるが、、、いいのかなぁ?

2008年5月10日

ちょっとだけ cpufreqd を使って Dothan の発熱を抑える

i915GMm-HFS にインストールしてある Debian を etch から lenny にしたところ、勝手にシャットダウンするようになってしまった。

前後のログをみると、

May  8 19:23:22 myhost kernel: ACPI: Critical trip point
May  8 19:23:22 myhost kernel: Critical temperature reached (109 C), shutting down.
温度が異常に高いため保護のためにシャットダウンしてるようである。

どうしたもんだろう?

現状

  1. i915GMm-HFS
  2. Pentium M 770 / Dothan / 2.13G Hz
  3. cpufrequtils を使って周波数制御の設定を行っている。
  4. ondemand governor で負荷に応じて 800M Hz〜2.13G Hz の変動させる。

/etc/default/cpufrequtils

ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED=2133000
MIN_SPEED=800000
この状況で負荷が高いときにシャットダウンするようになった。

例えば「openssl speed」で長時間の高負荷状態にすると確実に1〜2分以内でシャットダウンする。 どうも、シャットダウンの処理主体はLinuxカーネルの drivers/acpi/thermal.c 内の acpi_thermal_critical 関数らしく、正規の動作らしい。

Gentoo 電力管理ガイドを参照すると、ondemand/conservative を使う限り、 温度に依存した抑制動作がないので、ちょっとした負荷で頻繁に周波数が上がったり下がったりで発熱して、致命的な温度になるらしい。

筐体の廃熱がうまくいってないのかもしれん。

対応

温度状況もいれて周波数管理するためには cpufreqd を使うのが良さげである。 試行錯誤の結果「openssl speed」の実行完了してもシャットダウンしない設定を見つけた。

  1. conversative governor で負荷に応じて 800M Hz〜1.60G Hz の変動させる。
  2. CPUが 65℃以上になったら、800M Hz に制限する。

/etc/cpufreqd.conf

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
#enable_remote=1
#remote_group=root
[/General]
 
[acpi]
acpid_socket=/var/run/acpid.socket
[/acpi]
 
[sensors_plugin]
sensors_conf=/etc/sensors.conf
[/sensors_plugin]
 
[Profile]
name=Performance High
minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]
 
[Profile]
name=Performance Low
minfreq=0%
maxfreq=75%
policy=conservative
[/Profile]
 
[Profile]
name=Powersave
minfreq=40%
maxfreq=40%
policy=powersave
[/Profile]
 
##
# Basic states
##
[Rule]
name=Normal
cpu_interval=0-100
#profile=Performance High
profile=Performance Low
[/Rule]
 
# CPU Too hot!
[Rule]
name=CPU too Hot
acpi_temperature=65-150
cpu_interval=0-100
profile=Powersave
[/Rule]

cpufreqd に一言

何で、acpi でバッテリとACアダプタの状態が取得できない場合、ACアダプタが刺さって無く、バッテリ容量が0%として認識するんだい!? 

ソースを見る限り変数が適当な値で初期化していないので、偶然0になり、そういう状態になるらしいが。。。

そのうち Ubuntu とかがまた整理してくれるのかなぁ。

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...