2008年12月26日金曜日

Linux 2.6.28

元ネタは kernelnewbies.org
  • Ext4 がステーブルに

    btrfs の影に隠れてあまりいいイメージのない ext4 ファイルシステムだが、このたびステーブルと宣言されたようだ。

    ext4 は、メインラインにマージされてもう久しいが、そもそも開発は ext3 にあったファイルシステムサイズ 16TB 制限、ファイルサイズ 2TB 制限を越えるために始まった。これに加え、
    • ファイルのディスク内位置情報は、 ext3 ではブロックごとに管理されていたが、これを連続するブロックでは一括して扱えるようになった (extents) 。これにより、随分と待たされる処理だった巨大ファイルの削除などが高速化したらしい。
    • ディスク内でデータを書き込む場所を決める操作が、ブロック単位でしかできなかったのが、いくつかのブロックでまとめてできるようになった (multiblock allocation) 。
    • アプリケーションから write システムコールが発行された際、そのデータを書き込むディスク内の場所をすぐには決めず、何回か溜まってから決めることができるようになった (delayed allocation) 。これにより、 multiblock allocation とあいまって、より適切な場所決めができるようになった。これは、フラグメンテーションの解消に役立つため、 extents とも相性がいい。
    • ファイルのメタ情報 (inode) のうち実際には使っていないものを読み飛ばすようにしたところ fsck が 2〜20倍 高速化した。

  • GEM Memory Manager

    グラフィックコントローラからアクセス可能なメモリ領域を ioctl を通して制御する。一般向けではなく、 X のユーザランドドライバ向けの機能である。インタフェースはかなりドライバ依存で現在は i915 のみの投入となっている。3D ゲームのベンチマークで 50% 程度速くなっているとのこと(今までが遅すぎたようだが)。

  • ワイヤレス USB のサポート

  • メモリ管理の改良

    ディスクにフラッシュ可能な名前付きページ(ファイルキャッシュ)と、ディスクにスワップ可能な匿名ページ、メモリに保持しなければいけないページをそれぞれ別々のリストに格納するようにして、メモリの回転率を上げた(実際に回転するのはディスクである)。

  • コンテナフリーザ

    システムのサスペンド、レジューム機構を応用して、指定したタスクセットのみをフリーズ、解凍させる機能が追加された。ジョブスケジューラ用らしい。

  • ブートトレーサ

    CONFIG_BOOT_TRACER=y でコンパイルしたカーネルを、 initcall_debug 及び printk.time=1 パラメータを付けてブートし、 dmesg | perl scripts/bootgraph.pl > output.svg とすれば、綺麗なタイムチャートが出現するらしい。

  • ディスク衝撃保護

    /sys/block/*/device/unload_heads に書き込んだミリ秒だけディスクヘッドを緊急退避する。ディスクが ATA/ATAPI-7 規格をサポートしていることが条件。

2008年12月5日金曜日

いちょうが降り積もっていた

向かい風のせいで遅刻しました
と言いたい所だったが特に遅刻はしなかった。

銀杏に続いて強い雨が降ると
摩擦係数がほとんど無くなるのでチャリは気をつけないと。

2008年11月29日土曜日

今更 Google Chrome

話題としては旬が過ぎた感もあるが Google Chrome の中のマニアックな話。

文章を単語に区切るライブラリと言えば、日本語では mecabchasen であるが、より世界標準なのは icu ライブラリの BreakIterator (C, C++, Java) である。しかしながら、 BreakIterator による日本語の分割は、単に文字種だけに基づくもので、とてもまともだとは言えなかった。

…と思っていたら、先日発表された Google Chrome に含まれている libicu は、これにパッチ (segmentation.patch.txt) が当たっていて IPA 辞書などをベースにするように改善されているようだ。

これで sqlite の fts3 の icu tokenizer が実用レベルになるらしい。

2008年11月19日水曜日

懲役@みなとみらい

横浜みなとみらいでプロジェクトの出展手伝い。
ママチャリで行ったら 20km/h の皮算用に対して実効速度は 16km/h であった。
写真は本文とあまり関係ありません。

2008年11月1日土曜日

世界的に既出な気もするが

赤壁って Red Wall じゃないのか。ふむむ。

2008年10月27日月曜日

intrepid ghostscript の日本語 ps 対応

Ubuntu intrepid を試してみたが、 ghostscript 8.63.dfsg.1-0ubuntu6 (やそれを用いている evince 2.24.1-0ubuntu1) が、日本語 Postscript を扱えない。

ソースパッケージの debian/patches/00list の中の 11_gs-cjk_font_glyph_handling_fix という行が、なぜかコメントアウトされているのでこれを外してビルドしなおせば良い。

2008年10月22日水曜日

Cygwin と MSYS

この記事を鵜呑みにしていたが、
実は MSYS でも MSYS-1.0.DLL が fork / execve 関数を提供していた。
でないと bash が動作しない。

12:40 追記: 見返すと記事自体は間違ったことは言っていないかもしれない。

2008年10月21日火曜日

今日もまた

上野で脳を破壊してきた。

2008年10月20日月曜日

地図はやはりパケット数を食う

携帯電話でどういう操作をするとパケット代がかさむのか、調べるため、
キャリアの個人用ページのデータを取ってくるスクリプトを作って1時間ごとに回してみた。

http://zng.jp/willcom/

今朝は地図と乗り換え検索で 5000 パケットらしい。

10/22 追記: 要望があったのでソースコードを公開。
ログアウトした状態でないと動作しない。

2008年10月19日日曜日

三次会@秋葉原

なかなか三次会まで面白かったが、
始発まで起きていろというのはやはり俺には難しい。

2008年9月26日金曜日

モザイク画像をトップ記事にしておくのはあれなので投稿

作業効率向上のため、格安 22 インチワイド液晶モニタをノート PC の外部出力用に購入してみた。 20,800 円。昔では考えられない値段である。

解像度は WSXGA+ (1650x1050) だが、 xorg.conf に全く手を触れずに表示された。 xrandr コマンドを使えば、 LVDS とデュアルも可能である。ModeLine を gtf で生成してごにょごにょ、という時代はもう終わったらしい。

アナログ RGB 接続のため僅かにボケている気もするが、ドット欠けもなく概ね満足である。

2008年9月24日水曜日

誰だマ●オの服を脱がしたのは

研究室にて。


犯行は祝日の隙を突いて行われたと推測されている。

2008年8月7日木曜日

2008年8月4日月曜日

動画投稿テスト

videoできるかどうだか
携帯メールのサイズ制限が厳しい

というか、新幹線車両のパンタグラフって凄い形状だな
研究の跡が滲み出ている
乗り慣れてる人には今更の感想か

2008年8月1日金曜日

ただの日記

7年間くらい1つの眼鏡で通してきたが、
さすがにフレームの歪みやコーティングの剥がれが酷かったので新規購入。
しかし、前の眼鏡と度数は同じで、形状もあまり変えなかったのだが、
レンズの加減にかなりの違和感が残るな。。。
そのうち慣れるか、3か月以内のレンズ交換無料を活用するか。

2008年7月27日日曜日

今更 Perl 5.6 での UTF-8 フラグ

perl 5.8.0 以降ではそれなりに使える UTF-8 フラグであるが、 perl 5.6.x では邪魔でしかない。 perl 5.6.0 では tr 演算子, 5.6.1 以降では pack, unpack 関数を使って外せるが、それよりも bytes semantics で substr を使って外すほうが圧倒的に速い。5.8 以降に持っていっても utf8::encode と実用上ほぼ互角の速度で、特に問題はなさそう。
use bytes;
$utf8off_str = substr $utf8on_str, 0;
perl 5.6.0 未満でも動いてほしいのであればこうなるかな。
BEGIN { eval { require bytes; bytes->import; }; }
$utf8off_str = substr $utf8on_str, 0;

2008年7月6日日曜日

Linux 2.6.26

例によって kernelnewbies.org から抜き出した linux 2.6.26 の新機能。2.6.25 の新機能
  • 読み込み専用バインドマウント
    2.4.0 以降、 Linux はバインドマウントをサポートしている。バインドマウントとは、ディレクトリの symlink のようなもので、これによりあるディレクトリの内容を異なるパス間で共有することができる。例えば、 "mount --bind /foo /bar" は、 /foo の内容を /foo だけでなく /bar にも"バインド"する。別の言い方をすれば、 /foo 及び /bar が同じ内容になる。そして、一方のディレクトリ内で変更を行うと、他方にも変更が及ぶ。これは、 chroot や ftp/web サーバのようなもの対しては有用であるが、今までは、 /foo が書き込み可能であれば、 /bar もどうしても書き込み可能になってしまっていた。

    2.6.26では、読み取り専用で bind mount を行えるようになった。先ほどの例で行ったバインドマウントを読み取り専用で行うと、 /foo の内容は /bar にも現れるが、アプリケーションが /bar の中でファイルを修正しようとしてもできない。(もちろん、 /foo は書き込み可能なままである。)この機能は、色々と応用できる。 chroot では、ファイルシステムの一部を書き込み可能にすることができる。ユーザが、あるコンテナの中ではルートを持ってよいが、いくつかのファイルシステムへ書き込めてはいけない、というように、コンテナに便利である。新しいファイルシステム全体をマウントしておきたくはなかったり、 atime を選択的に更新したいときに、ファイルシステムの一部を読み取り専用にしておくことで、セキュリティの向上が可能となる(自分の FTP サーバを信頼していない場合など)。

    (現在の実装は、直接読み込み専用でバインドマウントすることはできない。バインドマウントをまず行って、 - mount --bind /foo /bar - それから ro としてリマウントする - mount -o remount,ro /bar - 必要がある)
    これは非常に身近な改善であろう。実現していることは単純で、すぐにでも応用されていきそうだが、カーネルのコード的にはやや複雑な変更のようだ。 VFS には、このように身近で明らかな改良の余地がまだまだ残されているので楽しみに待っている。

  • KVM の IA64 PPC 及び S390 への移植
    Linux 2.6.20 で導入された仮想化ソリューション KVM が x86 以外のアーキテクチャ、 IA64 (Itanium)、 S390 及び PPC をサポートできるように再構築された。
    KVM は Xen とは違い Intel VT とか AMD-V とかのハードウェア支援機構を全面的に利用した仮想化方式であるが、移植できたとなると応用範囲が広がりそうである。

  • ワイヤレスメッシュネットワーキング (802.11s) ドラフトサポート
    1 年前 Linux 2.6.22 で Linux は新しいワイヤレススタックを導入した。 2.6.26 では open80211s プロジェクトによりこのスタックにメッシュネットワーキングが追加された。
  • x86 PAT サポート
    PAT (ページ属性テーブル) とは、 x86 プロセッサにある機能で、ページごとの粒度でメモリの属性を設定するものである。 PAT は、物理アドレス範囲に対してメモリの種類を設定できる MTRR 設定と相補的なものである。しかしながら、 PAT はページレベルで属性を設定できる点、属性の設定可能な数にハードウェア上の制限が無い点において、 MTRR よりも柔軟性がある。 Linux にこれをサポートさせるための作業は長きに渡っていた(なんと2006年以来である)が、ついにマージされた。
    完全に俺の知らない領域だ。。。 Documentation/pat.txt に説明がある。

  • プロセス単位の securebits
    ファイルシステムのケイパビリティサポートにより、 (set)uid-0 ベースの特権を排除し、代わりにケイパビリティを用いることができるようになった。つまり、この機能がなくても、ファイルシステムのケイパビリティサポートがあれば、ケイパビリティだけでシステムを管理することが(概念的には)可能であり、 (set)uid-0 経由で特権を取得する必要が出てくることは無い。もちろん、概念的に可能であるというのは、現在可能であるとは言ってしまえないということである。現在、特権を行使するのにケイパビリティを活用するように作られたユーザアプリケーションは殆ど無く、まともなシステムを走らせるには、確実に十分とはいえない。さらに、アプリケーションの多くが、そういうふうにアップグレードされないであろうという状況にある。カーネルは、 setuid-0 ベースの特権の需要を満たすべくあり続けるであろう。ピュアケイパビリティのアプリケーションが発展し、 setuid-0 バイナリを置き換えるには、そういったアプリケーションが特権を内包できる機構があることが望ましい。この機構は、プロセス毎バウンディング及び継承可能セット (per-process bounding and inheritable sets) 、さらにプロセスの子供ツリーからの uid-0 スーパーユーザ権限の制限、からなっている。 2.6.26 で導入されたこの機構は、 (set)uid-0 に関連付けられた特権を制限するために活用することができる。制限を開始するには、 CAP_SETPCAP が必要であり、'現在'のプロセスにしかすぐには影響しない。(fork()/exec()を通して継承される。)この securebits の再実装は、システムワイドで、扱いづらく、枯れ果てており、現代のカーネルソースの化石となっている、過去の securebits サポートとは大きく異なっている。
    まあ確かに setuid には問題がありまくりなんだが、ここまで糾弾されると逆に擁護したくなるな。本文がわかりづらいので、わかりやすい日本語記事を紹介。何にでも制限かけるという方向にはあまり行ってほしくないけどね。

  • KGDB
    Linus があれほど嫌がっていたカーネルデバッガがついにマージ。バグ、特にタイミングバグはデバッガで検知するのではなく、人間の注意力でそもそも未然に防ぐべきであるという理想はこの先も変わらないだろうけれど、現実に屈したのか。これはシリアルケーブルでつないだマシンをデバッグするツールである。似て非なるようなのに KDB がある。

  • cgroups でデバイスのホワイトリスト
    /dev/null デバイスに限り mknod できるようにしたい、などというのを cgroup 単位で許可、禁止できるようになった。

  • memtest
    カーネル組み込みの memtest 。本家 memtest より機能は乏しいが、 Linux のブート機構を使うことで様々なアーキテクチャで動くという特徴がある。

2008年7月5日土曜日

暑さで元気になるのは

駐輪場で立派な◆◆◆◆が這っているのを見かけた。

夏の暑いときは、これをイメージ検索して背筋を凍らせるのがいいらしい。

2008年7月4日金曜日

2008年6月20日金曜日

Firefox 3 のアドレス欄は危険

開発版のころから長らく使っていた Firefox 3 がようやく安定版としてリリースされた。

さて、携帯電話の予測変換で一文字入れて何が候補に出るか、という人格テストが古くからあるが、新たなトレンドとして、Firefox 3 のアドレス欄で一文字入れて何が候補に出るか、という新たなゲームが考えられる。

というわけで、途中までやってみた。

あ: あどけない話
い: 飲み物だから太らない
う: is2005 06/20(きょう)
え: 駅探:乗り換え案内 時刻表 路線検索サービス
お: おいでto F6
か: 飲み物だから太らない
き: is2005 06/20(きょう)
く: マジですごい絵を描くゾウ


かなりプライバシーの侵害だねえ。。。

2008年6月15日日曜日

渋谷の地底

広さに圧倒された

2008年6月13日金曜日

New Zealand 人に感謝される

現実逃避に Ubuntu の Xen カーネルに、ちょっとした修正パッチを投げていたところ、なんと役に立ったらしく、わざわざチョコレートまで送ってくれる人が現れた。珍しいこともあるもんだ。

Conkerorを試す

Gecko をベースにしながら、キーボードだけで操作を完結させようという思想のもとに開発されているブラウザ conkeror を試してみた。

現在の HEAD は xulrunner 1.9 上で動作する。
xulrunner-1.9 /path/to/conkeror/application.ini
全般に Emacs 風味であり、C-x b とか M-x といったキーの挙動はまさにそっくりである。リンクを辿る方法は明快で、 w3m より楽であろう。

設定ファイルの場所は abount:config の conkeror.rcfile で指定できる。
その記法はさすがに Emacs Lisp のように柔軟ではないが、例えば C-i が tab, C-m が return, C-h が backspace と同じ挙動になって欲しい俺は、次のようにすればいいようだ。
interactive("send-backspace", function (I) {
send_key_as_event(I.window, I.buffer.focused_element, "back_space");
});
define_key(default_base_keymap, "C-h", "send-backspace");
interactive("send-tab", function (I) {
send_key_as_event(I.window, I.buffer.focused_element, "tab");
});
define_key(default_base_keymap, "C-i", "send-tab");
define_key(content_buffer_text_keymap, "C-i", "send-tab");
define_key(default_base_keymap, "C-m", "send-ret"); /* send-ret is predefined. */
第一印象は上々なのだが、実際使えるかというと、課題山積と言わざるを得ない。いくつか挙げると:
  • set-mark は実装上の理由からか、 Emacs のそれと挙動が違う。(Firemacsと同じ。)
  • Web ページ側の accesskey や イベントハンドラと競合がしばしば起こる。
  • 範囲選択は結局マウスのほうが便利である。なぜならキャレットモードで込み入ったレイアウトのページを操作するのは神業を要するからだ。

2008年6月9日月曜日

夜の荒川は侘しい


東京二十三区で午後 7 時過ぎにこれほど明かりが灯っていない空間はあまりないであろう。
まあ半分埼玉ではあるが…。
一人でいるのはなかなか怖くて良いね。
奥の方に写っているのは東北新幹線だと思う。

2008年5月25日日曜日

続・五月祭

今年は結局、昼の五月祭にはまったく顔を出さず終わった。
上野界隈での夜の祭は二日とも参加してきたが。

五月災

久々に千石自慢ラーメンに吸い込まれた
飲みすぎである

2008年5月6日火曜日

某合宿の帰り道

道の左右に黄色い建物が林立
通る車も何もかも黄色い

2008年4月27日日曜日

王子駅が

玉子駅に見えて困る

2008年4月22日火曜日

墓でかい

現代版古墳群的

2008年4月12日土曜日

texinfo で日本語処理

Google で検索すると jtexinfo.tex を利用しないと動作しない、という記事ばかり引っかかるが、手元の環境では
TEX=ptex texi2dvi file.texi
とするだけで動作した。

2008年4月3日木曜日

路上にカツラ

南青山付近にて

Linux 2.6.25

そろそろリリースが迫ってきたようなので、目立った新機能をいくつかまとめてみる。引用は kernelnewbies.org より。

  • RCU プリエンプションサポート
    RCU は、Linux で用いられる非常に強力なロック方式であり、単一システム上において非常に多数の CPU にまで適応できる。しかしながら、 Linux を RT OS 化すべく開発されているリアルタイムパッチセットとはうまく適合しない。それは、その一部がプリエンプション不可能であるため、 RT 負荷に対して過大なレイテンシを発生させるからである。2.6.25 では、 RCU もプリエンプション可能となり、レイテンシの原因は削減される。 Linux は、より一歩 RT らしくなる。
    確かにありがたい気がするけど、一体どうやって実現されているのか。

    ポイントは、今のデータ群を触っているスレッドの数 (A とする)と、昔のデータ群を触っているスレッドの数 (B とする)をいつも数えておくことである。 rcu_read_lock で、 A をインクリメントする。rcu_read_unlock で、 A と B のうち、自分がインクリメントしたほうをデクリメントする。

    B は単調減少のはずで、ゼロになれば、昔のデータ群を解放し、 A と B をスイッチする。これを繰り返す。

    大まかな設計はこんな感じで、どちらかというと単純だが、これをいかに一切スピンロックとかメモリバリアを使わずにやるか、という細かい実装の話が複雑で、むしろそこに力が入っている。いかにも Linux らしい。(A と B をスイッチしたよ、という情報が各CPUに伝わるのに時間がかかるのを考慮しないといけなかったり、 A や B を CPU ごとに管理しないといけなかったり、とかいった話である。)

  • FIFO チケットスピンロック
    特定の負荷において、スピンロックが不公平になる場合がある。例えば、スピンロックでスピンしているプロセスが、1,000,000回程度までスタベーションすることがある。通常スピンロックにおけるスタベーションは問題にはならない。というのは、スタベーションに気づけるような状態になるよりも先に性能問題が発生するからである。しかしながら、テストで示されているのはその逆で、ロックに対して激しいコンテンションが発生して、プロセッサはロックを闇雲に取る、という、目立たないケースは、常に存在する。新しいスピンロックでは、プロセスは FIFO 順でスピンロックを取るようになる。

    255 以上のCPUで実行するように設定されたスピンロックは 32 ビット値を、それ以下のCPUの場合は 16 ビットの値を使用するようになった。おまけとして、 Linux がサポートできる CPU の数の理論的上限値は、 65536 プロセッサにまで引き上げられた。
    スピンロックとか、 RCU とか、いい加減もう枯れてそうだが、まだ改良すべきことはあるようだ。

  • プロセスメモリ使用量測定の改善
    プロセスがどれだけメモリを使っているかを測定するのは、案外難しい。特にプロセス群が使用メモリを共有している場合はそうである。 /proc/$PID/smaps (2.6.14 で追加) のような機能は役に立つが、十分ではなかった。 2.6.25 では、この測定を簡単にする新しい統計値が追加される。プロセスごとに /proc/$PID/pagemaps ファイルが新たに作られ、カーネルはこのファイルの中に、プロセスが使っている各ページに対応する物理ページ配置を(バイナリ形式で)エクスポートする。このファイルを他のプロセスの同じファイルと比べることで、共有しているページがわかる。別のファイル /proc/kpagemaps では、システムのページに関してまた別の種類の統計値を公開している。パッチの作者 Matt Mackall は、 2 つの新しい統計値、 "プロポーショナルセットサイズ (PSS) - 共有ページを共有しているプロセスの数で割ったもの" と、 "ユニークセットサイズ (PSS) - 共有されていないページを数えたもの" を提案している。最初の統計値、 PSS は、 /proc/$PID/smap の中の各ファイルに追加される。この HG リポジトリの中に、これら統計値全てを使うコマンドライン及び GUI ツールのサンプルがある。
    あまりメモリまわりは知らないのだが、 2.6.24 までなかったのが疑問な機能ではないだろうか。このあたりの指標は、実は Windows のほうがいいんだろうな。

  • メモリ資源コントローラ
    メモリ資源コントローラは cgroups ベースの機能である。 cgroups, 別名 "Control Groups" は、 2.6.24 でマージされた機能であり、いくつかの "資源コントローラ" の土台となり、プロセススケジューリングやメモリ確保といった、システムの様々な資源を管理するための汎用的な枠組みとなることを目的としている。 cgroups は、仮想ファイルシステムに基づいた統一されたユーザインタフェースを持っている。管理者は、ファイルシステムから選択したタスクのグループに対して任意の資源制約を割り当てることができる。例えば、 2.6.24 では、 Cpusets と Group Schueduling の二つの資源コントローラがマージされた。前者により、任意に選んだタスクのグループ、すなわち cgroup に対して、 CPU 及び メモリのノードを設定することができるようになり、後者により、 cgroup に CPU の帯域ポリシを設定することができるようになっている。

    メモリ資源コントローラにより、タスクグループ -cgroup- に対するメモリの動作を、残りのシステムから分離することができる。

    • アプリケーションまたはアプリケーションのグループを分離する。メモリを食おうとするアプリケーションを分離し、小さいメモリ量に制限する。

    • 制限されたメモリ量の cgroup を作成する。これにより、 mem=XXXX で起動する方法の代わりとなる良い方法である。
    • 仮想化ソリューションが、仮想マシンのインスタンスに割り当てたいメモリ量を制御できるようになる。

    • CD/DVD 書き込みソフトが、システムの残りによって使われるメモリ量を制御して、利用可能な メモリが不足することにより書き込みが失敗することがないことを保証できるようになる

    設定のインタフェースは、他の cgroups と同様、 "-o memory" オプション付きで cgroup ファイルシステムをマウントし、適当な名前のディレクトリ (cgroup) を作成し、 cgroup ディレクトリの中の 'task' ファイルに PID を書き込むことによりタスクを追加し、 'memory.limit_in_bytes' 、 'memory.usage_in_bytes' (cgroup 向けのメモリ統計値) 、 'memory.stats' (RSS 、キャッシュ、非アクティブ/アクティブページ) 、 'memory.failcnt' (cgroup が制限を越えた回数) 及び 'mem_control_type' に値を書き込む、というものである。 OOM 条件も cgroup ごとに処理される。 cgroup のタスクが制限を越えると、 OOM が呼ばれて、当該の cgroup に含まれている全てのタスクのうちから、一つのタスクを kill する。

    2.6.24 で登場して便利だな、と思っていた cgroup が早速グレードアップされたようだ。特に OOM のあたりは、うまく使えば非常に魅力的な機能である。さらに I/O とかに適用されていくか。

  • latencytop
    遅いサーバ、飛び飛びの音声、コマ落ちした動画 - だれもがレイテンシの症状を知っている。しかし、何がシステムの中で本当に起こっているのか、何がレイテンシの原因なのか、どうすれば直るのか…。これらは難しい質問であり、すぐに良い回答があるわけではない。 LatencyTop は、(カーネル、ユーザ空間両方の)ソフトウェア開発者向けの Linux ツールであり、どこでシステムのレイテンシが発生しているのか、どんな種類の操作・動作がレイテンシが発生する原因となっているのかを特定することを目的としている。これを特定すれば、開発者は、最悪のレイテンシ問題を避けるようにコードを変えることができるようになる。

    レイテンシには多くの種類や原因があるが、 LatencyTop は、音飛びとデスクトップの処理落ちを引き起こすような種類、特に、アプリケーションが走って、有用なコードを実行したいが、現在利用可能な資源がない(ゆえにカーネルがプロセスをブロックさせている)場合にフォーカスしている。これは、システムレベルでも、各プロセスレベルでも行うことができ、システムで何が起こっているのか、そして、どのプロセスが遅延させられ、また遅延を引き起こしているのかを見ることができる。

    latencytop.org に latencytop のユーザ空間のツールとスクリーンショットがある。
    カーネルのスケジューラで、タスクがどこでスリープしているかの統計を取るようである。実際使ってみないことにははっきり言えないが、X 環境とか、込み入った環境でもっさりの原因を解析するには良さげなツールである。タスク構造体に余分なフィールドが取られるので、ディストリビューション標準カーネルには入りにくいだろう。

追記: 個人的には rndis ドライバの Windows Mobile 6 対応も重要な改善点である。

2008年3月29日土曜日

サクラサク

六義園のあたりを通ったら、ありえない長蛇の列ができていた。
みなさん遠方から来て、退くに退けないのだろうか。

2008年3月19日水曜日

駅探SS有料化

いつものように、駅探SSで時刻表検索しようとしたところ、有料化されていた。おかげで、5分遅刻した。。。

しかし、かなり昔にサービス終了していたモバイル goo 路線が、いつのまにかサービス再開していたのでそっちに逃げればいいようだ。goo 路線は、同じ「駅探」のエンジンを使っているはずなので、何ら問題はない。

Yahoo! や Google Transit で使われている「駅すぱあと」のエンジンより精度や機能の点で個人的に好みである。

2008年3月16日日曜日

水戸偕楽園・千波公園

水戸偕楽園に行ってきた。ちょうど梅が見頃。
手入れが行き届いていて、なかなか良かった。


偕楽園臨時駅は、水戸駅付近の商人の陰謀のせいか、上りホームが無い。
仕方が無いので、水戸駅まで、千波公園を通って歩く。
こちらは桜並木で、まだ蕾であるが、綺麗な公園である。

至る所に抱卵中のコクチョウがいる。写真のは産まれている。


2km のすぐ先に 5km の距離標。
この距離標によると、ヒトはマッハ1くらいでジョギングすることが可能である。

ad[es] で2日つなぎ放題

辺境の地に出向くため、 2 日間だけつなぎ放題に変えてみた。つなぎ放題ではなく、 WILLCOM 定額プラン+ファミリーパック+リアルインターネットプラスに変えたほうが、若干安かったようだが、これは間違えた。ともあれ、 WILLCOM の料金プラン変更は、日割り計算になるので、臨機応変に変えるだけでかなりお得になるようだ。

advanced [es] を挿すだけでモデム用のカーネルモジュールがロードされるようにするためには、 Linux 2.6.24 だと何も要らない。しかし、 2.6.22 を使っているので、 /etc/modprobe.d/ws011sh を作って

alias usb:v04DDp91ACd*dc*dsc*dp*ic*isc*ip* ipaq
options ipaq vendor=0x04dd product=0x91ac

とした。あらかじめ ad[es] の USB 接続方式はモデムにしておくこと。 PPP は、 pppconfig コマンドで設定して pon/off コマンドで接続/切断する。うまくいかなければ plog コマンドで調査。それでも謎な場合は、ad[es] をリセットすれば復旧することも。

帯域も狭い (30kbps〜80kbps) し、 RTT は無茶苦茶大きい (250ms〜数十秒) 。いろいろパラメータ弄ればもうちょっとマシになるのかも。まあ、無いよりはずっといい。

2008年2月29日金曜日

バイト飲み

やっぱり飲みはいいね。
しかし、うっかりmixiのアカウントを教えてしまったので、この日記も知られてしまった気がする。
もうちょっと面白いコンテンツを提供しないと失格だろうか。

(関係者の皆様)ご馳走になりました。

初確定申告

昨年分は提出しないといけなかったので、放置していた一昨年分(還付)とまとめて提出してみた。
書類を揃えて向かったら約2分で完了。もっと仰々しいかと思っていたね。

2008年2月3日日曜日

続・寒すぎ

東京都心でも積もった。これだけ降ると逆に外へ出たくなる。

雪兎。


紀の川。


雪景色。

2008年2月2日土曜日

寒すぎ

zng.jp ドメインの登録を更新したところ、来年2月29日まで延長されましたという表示が出た。大丈夫なんだろうか。

今日は寒すぎて外へ出る気が萎えたので、ちょっと買い物へ行ったぐらいで家にいた。さらに明日は雪とか。

さらばuim

emacs (emacs22-gtk)の起動が、Ubuntu gutsyよりDebian lennyのほうが、明らかにもっさりしているので、いろいろ調べてみたところ、IMのせいと判明(IMの何の処理のせいかは調べていない)。というわけで、Debianのほうも、uimから scim-bridgeに乗り換えることにした。

ちなみにscim-bridgeは、scimやscim-immoduleのさまざまな不安定性を解消するために開発された機構で、実際Ubuntuで使っていてかなり安定している。ただし、パッケージがim-switchに未対応なので若干の作業が要る。2008 年 6 月 2 日追記: scim-bridge パッケージの更新により、現在ではこの作業は不要となっている。

# cat > /etc/X11/xinit/xinput.d/scim-bridge
XIM=SCIM
XIM_PROGRAM=/usr/bin/scim
XIM_ARGS="-d"
if [ -e /usr/lib/gtk-2.0/*/immodules/im-scim-bridge.so ]; then
    GTK_IM_MODULE=scim-bridge
else
    GTK_IM_MODULE=xim
fi
if [ -e /usr/lib/qt3/plugins/inputmethods/im-scim-bridge.so ]; then
    QT_IM_MODULE=scim-bridge
else
    QT_IM_MODULE=xim
fi
DEPENDS="scim, scim-bridge-agent, scim-bridge-client-gtk | scim-bridge-client-qt"

# update-alternatives --install /etc/X11/xinit/xinput.d/ja_JP xinput-ja_JP /etc/X11/xinit/xinput.d/scim-bridge 100


2008 年 6 月 2 日追記: 確かに emacs の起動は uim から scim への乗り換えによりスピードアップするが、それよりもっと俊敏に起動する方法は、 xim を使わず uim-el や anthy-el を使うことであった。 emacs で xim を使わないようにするには、 ~/.Xdefaults に
Emacs.UseXIM: false
などと記述して X を再起動 (または X リソースを更新) する。というわけで、 scim-bridge を使う必然性がなくなったので、 uim に戻すことにした。

2008年1月27日日曜日

お化け階段の近くの根津神社とか

お化け階段を下ったついでに、久々に根津神社の中へ入ってみる。
そこそこ立派な神社である。ちょうど絵を描いているグループがいた。

講談社発祥の地はさらに路地裏を歩いていたら出現。
微妙に撮影者が写り込んだか。今後注意します。

お化け階段

地図を眺めていたら面白い地名が付いていたのでとりあえず行ってみた。
どう見ても普通の階段…。
何かいわれがあるんだろうか。

2008年1月26日土曜日

Debian Live

casperと、live-initramfs は、インストールすると、CD-ROM, USBメモリ, ネットワークから起動可能なライブシステム対応のinitrdを作ってくれるパッケージである。さらに、chroot環境の構築、casperまたはlive-initramfsによるinitrdの作成、chroot環境のsquashfs化など、ライブシステムの構築に必要な諸々の処理を一括してやってしまおうというのがlive-helperパッケージである。

live-initramfsとcasperの差だが、live-initramfsのほうが、より柔軟な設定が可能である。例えば、ブートオプションで、keyb=jp106 とか utc=no とか、 live-getty とか指定できるようになっている。一方、問題として挙げられるのは、現状upstartなUbuntuへの対応がいまいちな点である。

live-helperは、まだ荒削りで、コマンド一発とはいかず、試行錯誤の手間はかかる。とりあえず、Debian etchの標準システム入りネットワークブートイメージを作るには:

# lh_config -b net -d etch -a i386 -m http://cdn.debian.or.jp/debian/ --mirror-binary http://cdn.debian.or.jp/debian/ --security disabled --initramfs live-initramfs -p none --packages "console-tools console-data console-common" --tasksel tasksel --tasks standard
# ( cd config/chroot_local-packages; wget http://cdn.debian.or.jp/debian/pool/main/l/live-initramfs/live-initramfs_1.110.7-1_all.deb )
# lh_build


2番目のコマンドはlive-initramfsパッケージをlennyから借りるという意味。etch-backportsから借りてもいいがバージョン1.95.2-1~bpo.1はlive-gettyオプションにバグがある。

2008年1月23日水曜日

終バス逃した

ボスのボスへの発表が済んで研究室でぐだぐだしていたらこの時間。
雪だったので自転車を置いてバスで来たんだった。
歩くしかないな。

2008年1月21日月曜日

PukiWikiが駄目な10の理由

主にHikiと比較しての話。
  1. デフォルトの本文の文字が小さすぎる。

  2. 見出しもリストも3階層までに特に根拠もなく制限されている。

  3. ブロック要素とかインライン要素とか専門用語で溢れる説明文。
    そんな面倒を意識したくないからこそWikiを使うんだと思うんだが。

  4. やや関連するが、プラグインの表記法がブロックとインラインで異なる。
    こういうのは同じにしてプログラムが判定すべき。

  5. インラインプラグインが&で始まるのは設計ミス。
    http://example.com/?hoge&br;
    などはURLの規格上問題ないが、Pukiwiki上では表現できない。

  6. 長文の整形済みテキスト用の表記法がない。
    ソースコードなどをそのまま貼り付けられない。

  7. いわゆるテーブルレイアウトである。
    このため横長の整形済みテキストがあるとページ全体が横長になる。
    table-layout:fixedで応急処置は可能。

  8. Content-Type: text/htmlとしては非推奨の規格であるXHTML 1.1に準拠している。

  9. キャッシュを禁止している。
    「このページの有効期限が切れています」などと毎度表示されるのはお節介だ。

  10. CVS などを用いた効率的な履歴管理に対応していない。

2008年1月19日土曜日

駒場の門


所用で駒場学生会館へ。
最近駒場へは自転車を使っている。

例年はセンター試験の日でも裏門は開いているのだが、事前の情報通り、今年はテニスコート脇しか開いていない。
遠回りで起伏越えを余儀なくされた。

ところで正門の扉がいつの間にか取り外されて、安っぽい柵になってるのね。

2008年1月13日日曜日

水害

なんか動坂から富士神社のほうへ歩いていたら、通りすがりのマンションの3階のベランダから2階のベランダへ水が漏れていて、2階のベランダに干してある衣類がびしょ濡れになっていた。
これこそ写真があるべきだったが自重してしまったよ。

×異常な生物 ○危険な生物

一応貼っておく

花園稲荷