blog を移行して,一周回って戻ってきました

200x年~2011年くらいはさくらのVPSでホスティングしていたけれど,一周回ってはてなブログに戻ってきました.ちょっとウケる.

ntp の jitter を測定してみた

前回の続き. ntp コマンドと cron 用いて jitter の値を 1 分おきにサンプリングし、その最大値を測定した. 未修正カーネルの jitter dynticks カーネルの jitter 17.813 23.173 一番大事なのはこの値に関する考察なのだが、 jitter の最大値に意味があるの…

ntp の jitter を測定したい!

カーネルVM探検隊で、Dynamic Ticks 有効時の ntp の jitter を測定するようにススメられた. 測定したいが、どうやって測定したものか. LKM を書いて、callout API 使ってその中で rdtsc ? タイマを使うなら別にユーザ空間でも良い? としたら、timer_create …

FreeBSD版 dynamic ticks のプロトタイプ版が動き始めました

FreeBSD 版 dynamic ticks の実装ですが、デバイスドライバと callout queue 走査のコードが密結合した prototype 版が動き始めました. これを、VMware Fusion 上で動作させて CPU 使用率の差を見てみます. タイマ割り込み間隔が狭くなると、VMM は細かい間…

AsiaBSDcon の Work-in-progress talk にて "First step for dynticks in FreeBSD" というタイトルで発表してきました

AsiaBSDcon の WIP( Work-in-progress ) talk のセッションで発表してきました. スライドは First step for dynticks in FreeBSD にあります. 内容としては、"Linux などに導入されている tickless 機構を FreeBSD に 入れてみたらどうか"という内容で、実際…

Keynoteで吐き出した画像ファイルをepsに一括変換するスクリプト

画像をKeynote で作ると、論文用に作った画像を発表にもそのまま利用できてお得. Keynote からはき出せるファイル形式は tiff, png, jpeg のみなので、これを LaTex で認識できるよう eps 形式に変換してやる必要がある. UNIX 系のOS では、ImageMagick とい…

カーネルタイマは何故リストで管理されているのか

カーネルタイマは何故リストで管理されているのか、という理由がわかった気がするのでメモ. カーネルタイマは expires (点火する時間)で5段階に場合わけされて管理されているが、ロックはこの5段階ごとに保持されている. 何故タイマ毎にロックをしないのだろ…

dyn-ticks ってどうなってるの

目標 いまいち dyn-ticks(Tickless kernel) についてよくわかっていなかったので、コードを読みながらまとめる. カーネルのバージョンは 2.6.27.8(古くてごめんなさい) で、CPU は i686(SMP環境)としておく. 話が行ったり来たりしますが、ご了承を. ハードウ…

新山さんによる python コーディング実況動画

tabesugi.netの中の人である新山さんが、 youtube にpython によるプログラミングの実況動画をアップロードされています. 大変面白いのと、デバッグの仕方が凄く参考になるので、是非見てみると良いかと思います.

今はまっているバグ

Linux のカーネルタイマを使う簡単なサンプルなんだけど、なぜか上手く動かない. 何が上手く動いていないのかというと、コールバック時に、何故か登録した情報が飛んでしまっている. (timer->functionと、timer->dataが何故がふっとぶ). 実はこれはゲスト上…

container_of という大変便利なマクロ関数の存在を知った

今更ながら、include/linux/kernel.h container_of が相当使えるマクロ関数だと気づきました. 一見わかりにくいのですが、なんと「変数が入っている構造体へのポインタ」をコンパイル時に計算してくれるのです.container_of を用いることで、API に縛られず…

clockevents

Linux カーネルには clockevents というフレームワークがあるのだけど、LWN.netの記事を見る限り、どうもハードウェアタイマのドライバを書くためのフレームワークという認識が正しいみたいです. もっとレイヤの高いものだと思っていたんだけど. 話が変わり…

デバッグ用の出力関数

gcc

最近の gcc だと、可変長引数マクロを使っても特に警告を出さないようです. そこで、以下のようなマクロを定義しておくと、デバッグメッセージのON/OFFが手軽にできて便利です. #ifdef __DEBUG__ #define dprintf(fmt,...) \ printf("[%s]%d:" fmt "\n",__FU…

GDB stub on kvm, 復活の巻

kvm

以前qemu+kvmに実装されているGDBStubに関する記事を書いた段階では、kvm に実装されている GDBstub が壊れてしまっていて、使えないという状態になっていました. しかし、本日 git から最新版を落としてきてビルド、動作させたところ、GDBstub が正常に動作…

本日発売の Software Design 2009/12 月号にメモリ管理の記事をかかせて頂きました

色々ご縁がありまして、id:syuu1228 さんと一緒に Software Design 2009/12月号の Linux カーネルの特集にメモリ管理の記事をかかせて頂きました.Software Design (ソフトウェア デザイン) 2009年 12月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2009/11/…

高精度カーネルタイマ hrtimer のコールバックの仕組み(途中)

hrtimer は、 tick ベースの timer_list を用いた従来のカーネルタイマよりも、よりきめ細やかにタイマ管理を行いたい、というニーズに合わせて実装されました*1. カーネルタイマはタイマ割り込みのカウンタ jiffies が指定した値になると起動しますが、hrti…

カーネルタイマー add_timer のコールバックの仕組み(途中)

現状のLinuxには、2種類のカーネルタイマがあります. timer_list構造体を使用するカーネルタイマ. hrtimer構造体を使用する高精度カーネルタイマ(hrtimer). 今回は、前者について調べてみました. 呼び出しの仕組み カーネルタイマの基本的な呼び出しフローは…

Qemu に VNC オプションつけたときに、Grubの画面で矢印キーがきかなくなる

Qemu に VNC オプションつけたときに、Grubの画面で矢印キーがきかなくなるという問題があったのですが、Qemuの起動オプションに -k jaをつけると、日本語キーボード対応してくれて、動くようになります. ちなみに、-vnc オプションは -kernel オプションと…

PCが突然落ちる!

PCが突然落ちるという状態になってしまったので、原因究明のために lm-sensors というパッケージを導入. sudo aptitude install lm-sensors sudo sensors-detect # 基本全部デフォルトでOK(ひたすらEnter!) #----cut here---- it87 coretemp #----cut here-…

Linus の git tree

Linus の管理している git tree は、このURLに掲載されている.git で落とすには、 $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.gitとすれば OK.

*.soは...

どうも実行できるらしい. http://www.artonx.org/diary/20091020.html#p01へぇー!

bananajour を Ubuntu hardy 上で動作させる

bananajour は乱立しがちな git レポジトリを集中管理しよう、というプログラムです. まず、gemcutter というホスティングサービスを使っているので、これを利用するように gem の設定ファイルを書き換える必要があります. $ gem source -a http://gemcutter…

Pragger用Wikiが誕生

ドキュメントを整備したい! http://d.hatena.ne.jp/big-eyed-hamster/20090919/1253320767 という声が届いたのか、PraggerのWikiが誕生しました. http://ikejima.org/wiki/pragger/時間があるときに書いていこうと思います. それと mixi voice用のプラグイ…

RSS::Maker.make に失敗する =>設定ミスと判明

2009/09/20 追記 完全に設定ミスでした>< 失礼しました. なんぞこれ>< 何か設定を忘れているのかな?? config.yaml - module: Feed::mixi::get_echo_list config: id: xxxxxxx - module: RSS::save config: filename: output.rdf title: mixi echo $ ./pr…

mixiボイス用のPraggerプラグインを作ってみた

追記:「本家統合希望」と書いておくと、マージされるらしいので、統合希望にしておきますwtwitterからmixiボイスにマルチポストするRubyスクリプト書いたそれ、Praggerでできるよ!ってなわけで、Praggerのmixiエコーのソースを元にmixiボイスに対応させてみ…

カーネルのコンパイルなしにカーネルモジュールをコンパイルする環境を作る

Linuxカーネル用のモジュールをコンパイルする際には、通常 /lib/modules/`uname -r`/build をカーネルのソースディレクトリとして指定し、それを make コマンドに引数として渡す必要があります. カーネルモジュールは、カーネル側の保持しているシンボルテ…

Writing kernel modules in Haskell

LWN.netで、大変頭のおかしいプロジェクトが紹介されていました(いい意味で). Writing kernel modules in Haskellというもので、カーネルモジュールのインターフェースとGHCを合わせることで、Haskellを用いてカーネルモジュールを書くことができるんだとか.…

Praggerのレポジトリ、復活

某停電で死んだと思われる Ruby 実装の Plagger こと Pragger のレポジトリですが、 復活したみたいです!http://dev.ikejima.org/src/svn/pragger/わーい!

distccを用いた分散コンパイル環境の構築

カーネルを触っていると、コンパイル時間が開発のボトルネックになってしまうことがあります. この問題を解決するために、distccを用いた分散コンパイル環境を構築してみました. なお、ファイルパスなどはすべてubuntuのものとなっており、分散先のマシンのg…

パッチの返信が返ってきた!

先日投げたパッチですが、なんと 開発者の Avi さんから返信がありました! 日本語版のユーザドキュメントしか見てなかったので知りませんでしたが、 -drive オプションなんてできていたのですねー(日本語版のユーザドキュメントを見ると、-driveオプションは…