Monthly Archives: 11月 2011

「紅椿の湯」を堪能してきた

温泉してきた。
道志川温泉「紅椿の湯」オフィシャルホームページ
前にも行ったことのある紅椿の湯。出発の時、ナビに間違って「椿の湯」って入れたらぜんぜん違うのが出てきて焦った。
ナビどおりに行くと道志道経由を勧められるんだけど、あそこは細くて気を使うので避けてドライブ。でも結局細い道を通ったので意味なかったかも。あそこに行くには必ず細い道を通らなきゃならないのね。
日曜の午後というタイミングでもあり、対向車が多数いたものの、なんとか無事故で到着。できればちゃんと二車線あるとこを通りたいよね。って北海道出身ならではの感覚なのかなぁ。北海道では山奥の砂利道でも二車線あった気がする。気のせいかな・・・。
紅椿の湯、というか道志川温泉、意外とパワーを持っているようです。浴室に貼ってあった説明の受け売りですが、色んなプレートがぶつかり合っているところで湧いている温泉で、自然湧出、ミネラル豊富なんて謳っていました。
ライトアップとかしていないので夕方以降に行くと何も見えない。つか、見るほどの紅葉もなく、はるか彼方の飛行機を眺めていました。あとは内湯のぬる湯でまったり。最後はジャグジー的なところで仕上げ。サウナもあったけど、あんま好きじゃないので入りませんでした。
当初の予定ではさっさと帰って家で飯の予定だったが、意外と時間が遅かったので夕食をいただくことに。軽く蕎麦にすることは決まったものの、何を乗せるかを悩む。食べたいのは特製のかきあげ。地元のクレソンが入っている。クレソンが何か知らないけど。でも、そこにあるのは「天ぷらそば」と「山菜そば」。天ぷらで海老が乗ってきたらガッカリだし・・・、とか思いながら天ぷらそばを注文。
出てきた天ぷらそばに乗っていたのは、あのかきあげでした。美味い。野菜のかきあげ。いいね、こういうの。
そんな充実した休日を過ごし、あとは帰るだけ。ナビは道志道を示す。細い道はなー、って思って20号を目指すことに。でもたどり着いた20号はあえなく渋滞。先のほうを見ると災害で通行止めらしい。逃げるかどうか悩みつつもそのまま行くと、あんま関係なかったみたいで普通に帰ってこれました。
往復の道は、車を道具として考えている人にはつらい道のりだろうけど、走るのが好きな人には楽しい道だね。ぐにゃぐにゃでワクワク。自分はティアナで、走る車ではないけど、それなりに楽しかった。同乗者がいたら酔ってただろうな。
よかったよかった。いい休日を過ごしました。本当は買い物に行こうと思っていたんだけど、平日に早めに帰ろう。やっぱ休日は大自然がいいわ。

/proc/statの値をmod_rewriteで拾う

Apache には mod_rewrite というモジュールがあることは良く知られています。ですが大体の人は URL を書き換えることしかしていないと思います。それはもったいないです。
この mod_rewrite は非常に高機能で、マップという Key-Value の対応をベースにリライトする機能があります。一番単純なマップはテキストファイルによるもの。

“Standard Plain Text
MapType: txt, MapSource: Unix filesystem path to valid regular file
This is the standard rewriting map feature where the MapSource is a plain ASCII file containing either blank lines, comment lines (starting with a ‘#’ character) or pairs like the following – one per line.”

mod_rewrite – Apache HTTP Server
テキストで、スペースなどで区切ったファイルを作り、1対1の変換をすることができます。
そこで、ちょっと組み合わせたいのが proc です。いや /proc です。この /proc には Linux カーネルの状況がテキスト形式で置かれています。まー、HTTP サービスに直接関連するものは少ないかもしれないけど、面白いことができます。
これ。

“/proc/stat
procs_running 6
実行中状態のプロセス数 (Linux 2.5.45 以降)。

Man page of PROC
まぁ、実際の /proc/stat には他にも色々な値が反映されているんだけど、この実行中プロセスを使って面白いことができます。
実行中プロセスとは何か。その名のとおり実行中のプロセスです。実行中ということは何か。システムに負荷をかけているということ。まさに CPU リソースを必要としているプロセスになります。
ついでに /proc/stat にある procs_blocked というのは I/O の完了を待っているプロセスです。I/O ってのは CPU/メモリ の外との通信で、大抵はハードディスクや通信になります。
この二つの値は vmstat というコマンドで左端に出てくるので関わりのある人も多いと思います。
で、たまにあるのが、負荷が高い時はそういうメッセージを表示して追加の負荷をかけたくない、という要望です。
そういう場合、プロセス数を絞ってしまったり、アプリケーション内で判別させたりするのが多いと思うのですが、RewriteMap と /proc/stat の組み合わせで解決できます。
/proc/stat はテキスト形式なので、そのまま mod_rewrite のマップに利用できます。すなわち、その時の負荷に応じて応答するコンテンツを調整することができる。しかもアプリへの修正なし、定時実行バッチも不要です。
こんな感じ。
RewriteEngine on
RewriteMap stat txt:/proc/stat
RewriteCond ${stat:procs_running} !^[0-1]$
RewriteRule ^(.*)$ - [F,L]

ちなみに RewriteMap はホストレベルの設定内でしか書けません。なので全てを .htaccess に書くとエラーになります。
上の例は実行中のプロセスが 0 か 1 以外だと Forbidden になります。後は要望に従って、って感じ。
まー、でも、vmstat だと一定時間の平均値を表示していたり、uptime コマンドだと 1、5、15 分の平均値だったりするので、その場の実行中プロセス数をそのまま動作に反映するのは微妙な気もしますが・・・。
まー、言いたかったのは mod_rewrite は可能性があるってこと。/proc とか /sys とかを組み合わせると他にも何かできるかも。随時 vmstat の出力を拾ってテキストのマップを更新する仕組みもアリかも。

FireFox 8.0対応でFaviconを作った

FireFox 8.0 になって、Favicon を指定していない場合のアイコンは四角い点線を表示するようになった。味気ないので favicon.ico を作ることにした。
作ったのはここ。
favicon.ico Generator
たぶん有名なサイトだと思う。
最初はローカルでそれっぽい画像を作ってアップしてみた。が、ちょっと大きめなサイズで作ってしまったため、16×16 にすると何を描いたのか分からない感じになってしまった。
仕方がなく、ベタで描くことにした。とりあえず適当にアルファベットを並べる。うーん、微妙なスペースが。気づくと、「s」が足りない。でもスペースが微妙でフルサイズは入れられない。右上のやつね。細いでしょ。
次に気づいたのは「i」は大文字だったということ。サイトには書いていないんだけど、英語で自分を示す「I」なんでね。
上手くスペースが埋まったところで、味気ないのをどうにかしたくなった。ので影を付けることにした。影。とりあえず背景を暗くした色を用意。それを文字の色を置いた場所の右下に配置していく。でも、「y」の下の方の影が上手くいかない。単純に右下に影を置いて行くと、文字の下なのに影になっていない 1 ドットができちゃうんです。
ってなわけで、そんな微妙な 1 ドットには微妙な影を付けてやりました。もちろん、そこだけだと変なので、全体的に影を付けたドットの上下左右には微妙な影を配置しました。
うーん、いい感じ。わりと気に入りました、この Favicon。

割り込みが多いと色々面倒なんだよね

“Linux カーネルは、以前はプラットフォームに応じて所定の周波数 — 100 Hz、250 Hz、 あるいは 1000 Hz で、システムの各 CPU の割り込みが定期的に行われていました。カーネルは CPU が実行しているプロセスについてクエリを出し、その結果をプロセスアカウンティングとロードバランシングに使用していました。CPU の電力状態に関係なく、カーネルは タイマーティック(timer tick)として知られるこの割り込みを実行していました。そのため、アイドル状態の CPU でも最大で毎秒 1000 ものこうしたリクエストに応答していたのです。アイドル状態の CPU に省電力機能を実装しているシステムでは、こうした節電による利点を得られるようにタイマーティックは CPU が長い間アイドル状態にならないようにしていました。”

3.4. ティックレスカーネル
長い引用だなぁ。要約すると、Linux のカーネルって定期的に割り込み処理をするから、それが CPU 食ってたんだよね、って感じかな。最近のカーネルはそういう無駄を排除する仕組みが組み込まれている。
実は、割り込み周波数の選択がカーネルのコンフィグ時に選択できるのは知っていた。実際、Gentoo で新しいカーネルをコンパイルするのが楽しくて色々やっている中で、割り込み周波数を下げると vmstat で見れる割り込み数が下がるのを確認していた。そして、それが VM 内で起こっている時に、ホスト側から見たときに CPU リソースの消費が下がっていることも確認していた。
しかし、Tickless ってのはよく分からず、というか考えずに放置してきた。それが実は周波数以前の問題で、劇的に割り込みの数を減らせるなんて・・・。

Continue reading 割り込みが多いと色々面倒なんだよね