Home

技術系のメモと日々の雑感

/proc/acpi/battery/BAT0 にある情報のまとめ

バッテリー/proc/acpi/battery/BAT0 の下にあるバッテリー情報を眺めていると、それぞれの値が何を表しているのか知りたくなった。
別に知らなくても何の不都合もないんだけどね。
まぁ、何かの役に立つかもしれない。
家にある ThinkPad X61 の省電力マネージャーにはバッテリーの詳細情報が日本語で出ているので、そっちと見比べてみよう。
実はこれだけで全部分かると思っていた。
が、甘かった。
省電力マネージャーには出てない項目があったり、意味がよく分からないものがちらほら。
ということで、かなりざっくりまとめてある。
興味本位のメモなので自分はいいんだけど、こっち方面には疎いから鵜呑みは危険だ。
間違っているところがあったら教えてほしい。

$ cat /proc/acpi/battery/BAT0/info
present:                 yes           接続されているか
design capacity:         37440 mWh     定格電力容量
last full capacity:      29030 mWh     (現在の)満充電時の電力容量
battery technology:      rechargeable  バッテリーの規格
design voltage:          14400 mV      定格電圧
design capacity warning: 1451 mWh      容量警告のしきい値?
design capacity low:     200 mWh       定格電力容量の最低値?
capacity granularity 1:  1 mWh         容量の粒度?(カウントの最小単位?)
capacity granularity 2:  1 mWh         容量の粒度?(カウントの最小単位?)
model number:            42T4505       型番
serial number:           XXXX          シリアル番号
battery type:            LION          セルのタイプ
OEM info:                SANYO         OEM情報

$ cat /proc/acpi/battery/BAT0/state
present:                 yes           接続されているか
capacity state:          ok            容量の状態(良好)
charging state:          discharging   充電の状態(放電中)
present rate:            13659 mW      現在の消費電力
remaining capacity:      13860 mWh     残電力容量
present voltage:         14831 mV      現在の電圧

内容とは関係ないけど、不思議だったのはシリアル番号。
4桁しかない。
バッテリーの表面に書かれている番号とは全然別物だし。
何でだろ。

Ext3 上のディレクトリにファイルを大量に作ってみる

Ext2 の頃は1つのディレクトリ内に作れるファイル数の話がよく出てきてたけど、Ext3 になってからはまったく聞かなくなったね。
ちょっと興味があったのと、とある検証のために Ext3 上のディレクトリにファイルを大量に作ってみた。
サイズは 10KB でファイル名は連番だ。
環境は、HDD が Western Digital WD800JD-75MSA3 80GB、CPU が Core2 Duo E4500 2.20GHz、メモリが 1GB のマシンに CentOS 5.4 という構成。
負荷がかかるのを予想して HDD は古いものしか使えなかった。
ファイルを作る前の状態を載せておこう。

$ df -i
Filesystem            Inodes   IUsed    IFree IUse% Mounted on
/dev/sda3           19248768  301775 18946993    2% /
/dev/sda1              26104      35    26069    1% /boot
tmpfs                 128064       1   128063    1% /dev/shm

実際にやってみると、30 万個を過ぎた頃から ls の結果が表示されるまでの時間がだんだんのびてきた。
70 万個辺りで ls の結果が表示されるまで 1 分程度。
100 万個を過ぎると軽く 2 分以上かかるようになった。
また、この辺りからファイルが作られるスピードが落ちてきた。
I/O ウェイトが 50% 前後まで上昇したり下がったりの繰り返し。
そして、150 万個まで作ったときに、ls が 10 分待っても返ってこないことに気づいた。
Ctrl+C も効かないので kill するしかない。
ただしファイルは問題なく作ることができる。
この後、結局 1300 万個以上作ってみたけど、ls したりしなければ特に問題なし。
もう一度 df の結果を載せておこう。

$ df -i
Filesystem            Inodes    IUsed   IFree IUse% Mounted on
/dev/sda3           19248768 13831870 5416898   72% /
/dev/sda1              26104       35   26069    1% /boot
tmpfs                 128064        1  128063    1% /dev/shm

この結果からも分かるように、i ノードさえ残っていればファイルを作れるようだ。
ちなみに ls が使い物にならなくなってからでも、例えば vi で個別にファイルを開いて編集したりするのは問題なかった。
面白くない結果になってしまったけど、まずはひと安心ってところだな。

.svn/tmp を開けません

以前 .svn/tmp が開けないエラーが出て、一旦リポジトリを消してから作り直したことがあった。
そのときは珍しいエラーなのかと思っていたんだけど、近頃、似たようなパターンで svn update がちょくちょく引っかかるようになった。

$ svn update
svn: 作業コピー '.' はロックされています
svn: ロックを解除するには 'svn cleanup' を実行してください (さらに詳しく知りたいときは 'svn help cleanup' と打ってください)

で、言われた通り cleanup してみると

$ svn cleanup
svn: ディレクトリ 'hoge/.svn/tmp' を開けません: そのようなファイルやディレクトリはありません

とのこと。
クライアント側の操作がトリガーになっているんだろうな。
メッセージに出てる .svn/tmp ディレクトリを作ってから svn cleanup と svn update したら通ることは分かってる。
でも、どのディレクトリで起こるかが事前に掴めないんだよねぇ。
仕方がない。
mkdir するスクリプトを cron で回して回避しよう。

#!/bin/sh
cd /usr/local/apache/htdocs
find . -name '.svn' | while read dir; do
  if [ ! -e $dir/tmp ]; then
    mkdir $dir/tmp
  fi
done

根本的な解決になってない?
まぁ、そこは大人の事情というやつで。

OpenWebMail を試してみた

ふとした理由で OpenWebMail を試してみたので手順をまとめておく。
環境は CentOS 5.3 だったけど、もっと新しいバージョンでも大して変わらないと思う。
まずは前提となる Perl のモジュールのインストールから。

# perl -MCPAN -e shell
cpan> install CGI
cpan> install MIME::Base64
cpan> install Text::Iconv
cpan> install HTML::Template

後で分かったことだけど、suid が立っているスクリプトがあって、そのままでは Apache から呼べない。
なのでここで suidperl を入れておく。

# yum -y install perl-suidperl

続いて OpenWebMail のソースを展開。

# mkdir -p /usr/local/src/openwebmail
# cd /usr/local/src/openwebmail
# wget http://openwebmail.org/openwebmail/download/release/openwebmail-2.53.tar.gz
# tar zxvf openwebmail*
# mv data/openwebmail /var/www/html
# mv cgi-bin/openwebmail /var/www/cgi-bin

カレントディレクトリ直下に cgi-bin と data というディレクトリができるから、他のファイルと混ざらないように、あらかじめ専用のディレクトリを作ってから展開した方がいいね。
さて、動かすための設定を入れていこう。
ログイン認証のパスワードは /etc/shadow を見にいくように /var/www/cgi-bin/openwebmail/etc/defaults/auth_unix.conf をちょこっと修正。

passwdfile_encrypted /etc/shadow
passwdmkdb none

メインの設定ファイル /var/www/cgi-bin/openwebmail/etc/openwebmail.conf は環境に合わせておく。

mailspooldir /var/spool/mail
ow_cgidir /var/www/cgi-bin/openwebmail
ow_cgiurl /cgi-bin/openwebmail
ow_htmldir /var/www/html/openwebmail
ow_htmlurl /openwebmail

で、設定を反映するおまじない。

# /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init
Please change '/var/www/cgi-bin/openwebmail/etc/dbm.conf' from

dbm_ext .db
dbmopen_ext none
dbmopen_haslock no

to

dbm_ext .db
dbmopen_ext .db
dbmopen_haslock no

And execute '/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init' again!

おおっと、怒られてしまった。
親切なメッセージに従って /var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf を手直ししよう。

dbmopen_ext .db

これであとは Apache の AddHandler cgi-script .cgi .pl を有効にしたらできあがり。
ログイン画面は http://[IP or host]/cgi-bin/openwebmail/openwebmail.pl だ。