プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

カーネルハックをするのに英語はひつようか? このエントリーをはてなブックマークに追加

本日、某所でおいらの英語力の驚異的な低さについて、議論がおこなわれる。
まあ、いろいろと意見はあろうが、英語がまったく出来なくてもカーネルのVMいれかえパッチとかは無事マージされてるんだから、まあ、なんとかなってるんじゃないでしょーか。

関連記事
雑談 | 【2008-06-11(Wed) 01:10:12】 | Trackback:(0) | Comments:(0)

Google Developer Day 2008 このエントリーをはてなブックマークに追加

今日は不貞寝もーどの日なので会社をやすんで、Google Developer Dayに参加してきた。
ぶっちゃけ、浜地さんを冷やかすのが目的だったのだが、顔を出した瞬間にこのセッションは事前登録が必要です。と門前払いされる。
な、なんですとー

でも、結論からいうと、いろいろなセッションが聞けてよかったかもしれない。
GoogleのAPIとか普段まったく使わないからなー

その後、河内さん、市川さん、伊藤さん、浜地さんという驚くべき豪華メンツ(ごとむさんは残念ながら断られてしまった)とメシ&酒をする。
一流どころと話をするのはやっぱり楽しい。

ところで、楽勝だと思っていたら沼津に来たら終電だった件について。
田舎、あなどりがたし!!

関連記事
雑談 | 【2008-06-11(Wed) 00:30:39】 | Trackback:(0) | Comments:(2)

2.6.26-rc5-mm1 release このエントリーをはてなブックマークに追加

ぐぎゃーん
これで、2.6.26-rc2-mm1用のパッチはすべてご破算。しくしくしく

明日は会社休む

関連記事
雑談 | 【2008-06-09(Mon) 22:31:24】 | Trackback:(0) | Comments:(0)

とりあえず このエントリーをはてなブックマークに追加

次の記事の話は返信してみたけど、まだ返事がこないので向こうから断られるかもしれぬ。

関連記事
雑談 | 【2008-06-09(Mon) 21:15:47】 | Trackback:(0) | Comments:(0)

atimeはいつ更新される? のつづき このエントリーをはてなブックマークに追加

404 Blog Not Found さんがトラックバックくれてるみたいだ。
すばらしいまとめ記事をありがとうございます。

せっかくなのでお礼がてら、トラバのトラバをば


ITProのチューニング記事(noatime付加)を検証してみた - 科学と非科学の迷宮

1. 電源投入してからGUIログイン画面が表示されるまでの時間を測定する。
2. 「# time find /usr/ -name linux」を実行し、findの実行時間を測定する。

1.はとにかく、2.では検証になりません。




基本的な「atimeはいつ更新されるのか」が誤解されているためです。
atimeは、データを読み出した時に更新される → メタデータを読んでも更新されない



あー、これは2つ目の段落単体では正しいけれども、1つ目の段落の否定にはならないんだな。
どういうことかというと


% stat .
File: `.'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 3968156 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 500/ kosaki) Gid: ( 500/ kosaki)
Access: 2008-06-09 19:26:09.000000000 +0900
Modify: 2008-06-09 19:25:53.000000000 +0900
Change: 2008-06-09 19:25:53.000000000 +0900

% ls -l
total 8
-rw-r--r-- 1 kosaki kosaki 4096 Jun 9 19:25 test.txt

% stat .
File: `.'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 3968156 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 500/ kosaki) Gid: ( 500/ kosaki)
Access: 2008-06-09 19:27:49.000000000 +0900
Modify: 2008-06-09 19:25:53.000000000 +0900
Change: 2008-06-09 19:25:53.000000000 +0900


のように、lsしただけでディレクトリのatimeは更新されるから。
これはreaddir でatime更新規則でこうなる。
んでもって、findとかでディレクトリにを再帰的にたどろうと思うと、readdirは絶対発行されるので、
(あ、Linux的にはシステムコールはdirentですね。libcとvfsのレイヤでreaddirという名前なので、ついクセでreaddirといってしまうけど。)
ファイルのatimeは更新されない、かつ、ディレクトリのatimeは更新される


ということになります。
なので、無意味と弾言しちゃうとちょっと違う

ただ、惜しむらくは(DANさんご指摘の通り) atimeネックが明に見えやすいベンチマークじゃないので
もうちょっと測定のしかたを変えると、いいかもって言いたくなる気持ちは分かるかも

結論ないな。うじゃうじゃ




関連記事
linux | 【2008-06-09(Mon) 18:47:51】 | Trackback:(0) | Comments:(1)

split LRU パッチが -mmにマージされました このエントリーをはてなブックマークに追加

うーむ、メールでは、あんまり賛成っぽくない雰囲気だったのに、いきなりマージされたぞ。
おそるべし、Andrew Morton.

おかげで、おいらの戦果がいきなり増えた。
今の mm-commit のメール末尾はこんな感じ。

ううむ、少ないのう

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Patches currently in -mm which might be from kosaki.motohiro@jp.fujitsu.com are

origin.patch
mm-fix-incorrect-variable-type-in-do_try_to_free_pages.patch
page-allocator-inlnie-some-__alloc_pages-wrappers.patch
page-allocator-inlnie-some-__alloc_pages-wrappers-fix.patch
mm-hugetlbc-fix-duplicate-variable.patch
page-flags-record-page-flag-overlays-explicitly.patch
slub-record-page-flag-overlays-explicitly.patch
slob-record-page-flag-overlays-explicitly.patch
call_usermodehelper-increase-reliability.patch
cgroup-list_for_each-cleanup-v2.patch
memcg-clean-up-checking-of-the-disabled-flag.patch
per-task-delay-accounting-update-document-and-getdelaysc-for-memory-reclaim.patch
vmscan-use-an-array-for-the-lru-pagevecs.patch
vmscan-second-chance-replacement-for-anonymous-pages.patch
vmscan-noreclaim-lru-infrastructure.patch
vmscan-noreclaim-lru-page-statistics.patch
vmscan-shm_locked-pages-are-non-reclaimable.patch
vmscan-mlocked-pages-are-non-reclaimable.patch
vmscan-handle-mlocked-pages-during-map-remap-unmap.patch
vmscan-mlocked-pages-statistics.patch
vmscan-noreclaim-and-mlocked-pages-vm-events.patch
mm-only-vmscan-noreclaim-lru-scan-sysctl.patch
make-mm-memoryc-print_bad_pte-static.patch
mm-swapfilec-make-code-static.patch
make-mm-rmapc-anon_vma_cachep-static.patch



関連記事
linux | 【2008-06-09(Mon) 17:31:26】 | Trackback:(0) | Comments:(0)

因果応報 このエントリーをはてなブックマークに追加

先週、人のパッチにパッチの説明が1行もないってどうなのよ。
ってコメントしたらAndrewから因果応報レビューコメント食らった。


> add throttle to shrink_zone() for performance improvement and prevent incorrect oom.

We should have a description of how all this works, please. I thought
that was present in earlier iterations of this patchset.

It's quite hard and quite unreliable to reverse engineer both the
design and your thinking from the implementation.



はい、まったくもっておっしゃるとおりです。
申し訳ないです。今すぐ書きます。ほんますいません。


関連記事
雑談 | 【2008-06-09(Mon) 07:37:37】 | Trackback:(0) | Comments:(0)

世界樹 このエントリーをはてなブックマークに追加

id:shiumachi のblogを読んでいると世界中の迷宮というゲームが面白いらしい。
買ってみるか?


関連記事
雑談 | 【2008-06-09(Mon) 02:30:47】 | Trackback:(1) | Comments:(2)

relatimeがどこで実装されているのか調べてみた このエントリーをはてなブックマークに追加

ITProのLinuxチューニングの記事がひどい事になっている件について
http://mkosaki.blog46.fc2.com/blog-entry-535.html


という数本前の記事について、id:shiumachiさんが追試してくれました。

つ http://d.hatena.ne.jp/shiumachi/20080605


むむむ、すばらしいです。
特にrelatimeのあたりが秀逸です。relatimeの性能測定って他にあんまりないのではないかしら。

複数の方からご指摘いただいておりますが、noatimeはあの記事のなかで数少ない、現在でも意味のあるオプションです。
せっかくなので、お礼がてら、relatimeについてちょいと追記してみます。

まず、atimeまわりのオプションの意味から


デフォルト:   常にatimeを更新する
noatime:    常にatimeを更新しない
nodiratime: 対象がファイルのときは常に更新、ディレクトリの時は常に更新しない
relatime:    inode上でatimeがmtimeやctimeよりも古くなってしまった時だけ更新


nodiratimeとrelatimeは両方ともnoatimeの副作用を軽減するために追加された機能です。
この副作用を説明するにあたって、atimeとは何か、について説明します。

まず、atimeとは(Access TIME)の略でその名のとおり、アクセスした時間を表します。
うーん、説明になってない。
こいつがなぜパフォーマンスを落とすかというと
atime更新 = inode情報の更新 = ディスク書き込みの必要が発生
という連鎖を引き起こすからです。
さらに悪いことに、inode情報はたいていデータ本体とはディスクの物理的な位置が離れているので、無駄なシークが誘発されます。
たいていのディスク系ベンチマークはシーク回数で勝負が決するので、これがベンチで性能がよく見える原因です。

あと、ITproの記事に


一方,書き出し性能はほとんど変化していない。これはnoatimeオプションを指定していても,ファイルの書き出し時にはatimeが更新されるためである。


という記述もあるけど、これは間違い。

atimeが更新されるのは、だいたい
1.readしたとき
2.readdirしたとき
3.readlinkしたとき(openの副作用による暗黙のリンクオープンも含む)
4.mmapしたとき
の4ケースで、writeは最初から入ってない。


で、話を戻すとnoatimeが非常に効くのは以下の2つのケース。

1.findやメーラーなど、山ほどファイルを開きまくるケース
2.ベンチマークソフトなど、あんまり大きくないバッファをひたすらreadしまくるケース

で、atimeなんてstat(2)あたりでアプリが明示的にチェックしない限り意味ないんだから、
特定アプリしか使わないマウントポイントに関しては、atimeを記録しなくても大丈夫なはずだよねー
というアイデアが出てくる。と。

で、nodiratimeとrelatime は両方ともnoatimeの副作用を緩和するために開発されたもので

relatimeは、いくつかのアプリケーションは特定のファイルの更新をファイルしていて、
mtimeとatimeを比較してmtimeのほうが新しければ、「誰かが俺が読んだ後に更新した」
とみなしてもう一度読みにいくわけ。
だから、mtimeが新しいときはatimeの更新に意味があるけど、mtimeが古いときは
それ以上atimeを更新しても誰もうれしくねーぜ。
という、なんというかmuttをinotifyに対応させろよ。とか頭がよぎるような
ステキwork around 実装。

nodiratimeは、ファイルのatimeをチェックするアプリケーションはよくあるが(メーラとか)
ディレクトリのatimeをチェックするアプリケーションなんてないんじゃね?
という思想でディレクトリだけ記録を省いてみた。
というやっぱり決めうち感あふれるwork around.

となっています。
たぶん、relatimeで99%の人がハッピーになれるので、ビジネスでlinuxを使っている人は、
ディストリにバックポートを依頼するとハッピーになれるかもしれません。
#特にしかたなくnoatimeを使っている人にとっては。

んで、ここからが詳細。

まとめ記事としてはいつものように、kerneltrapが秀逸

http://kerneltrap.org/node/14148

パッチ自体は以下、超短くて分かりやすい

http://lkml.org/lkml/2006/8/25/381


最近のカーネルだとリファクタリングされた結果、上記パッチ投稿時と関数のつくりが若干変わってるので、関数全体ものせとく


/**
* touch_atime - update the access time
* @mnt: mount the inode is accessed on
* @dentry: dentry accessed
*
* Update the accessed time on an inode and mark it for writeback.
* This function automatically handles read only file systems and media,
* as well as the "noatime" flag and inode specific "noatime" markers.
*/
void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
{
struct inode *inode = dentry->d_inode;
struct timespec now;

if (mnt && mnt_want_write(mnt))
return;
if (inode->i_flags & S_NOATIME)
goto out;
if (IS_NOATIME(inode))
goto out;
if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
goto out;

/*
* We may have a NULL vfsmount when coming from NFSD
*/
if (mnt) {
if (mnt->mnt_flags & MNT_NOATIME)
goto out;
if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
goto out;
if (mnt->mnt_flags & MNT_RELATIME) {
/*
* With relative atime, only update atime if the
* previous atime is earlier than either the ctime or
* mtime.
*/
if (timespec_compare(&inode->i_mtime,
&inode->i_atime) < 0 &&
timespec_compare(&inode->i_ctime,
&inode->i_atime) < 0)
goto out;
}
}

now = current_fs_time(inode->i_sb);
if (timespec_equal(&inode->i_atime, &now))
goto out;

inode->i_atime = now;
mark_inode_dirty_sync(inode);
out:
if (mnt)
mnt_drop_write(mnt);
}
EXPORT_SYMBOL(touch_atime);


見てのとおり、超単純で、atimeが更新されるようなケースで、mtime, ctimeよりも新しかったら無視。
というだけ。
てゆーか、あんまり速度が落ちる可能性があるコードに見えないなー

さらに個人的なレス



回数 real user sys
1 80.533 1.031 2.370
2 0.741 0.345 0.396
3 0.719 0.325 0.394

このように、同一起動時に複数回コマンドを実行すると、2回目以降の実行時間は極端に短くなります。

これはおそらくキャッシュを読み込んでるためだと思われますが、詳しい動作はわかりません。

(知ってる人がいたら教えてほしい)



このテスト手順では、ようするにfindを使って、readdirしまくるってテストなので、
一回目はdcacheとicacheが空なので、全部ディスク上から読まないといけない。
だけど、二回目以降はメモリ操作ですむからだと思う。


YOU FAIL 相対的な大小が重要です! ランキング!



関連記事
linux | 【2008-06-09(Mon) 02:21:43】 | Trackback:(2) | Comments:(2)

本日のsplit lru series このエントリーをはてなブックマークに追加

やっと、Andrew Mortonがレビューしてくれたようだ。
マージが近くなってきた気がするね。

関連記事
linux | 【2008-06-07(Sat) 11:08:24】 | Trackback:(0) | Comments:(0)

task cgroup作った このエントリーをはてなブックマークに追加

昨日、スレッド数を制限するcgroupを作ってポストした。
/proc/sys/kernel/thread-max で制限すると、あらゆるプロセスがリミットにかかるから
fork bomb食らったときに、アドミンがログインすることすらできなくなって
解決になってないじゃーん。
・・・と、patch descriptionでは言い訳しておいた。

むーん、(否定的な)コメントがいっぱい付いてるなー

関連記事
linux | 【2008-06-07(Sat) 11:07:46】 | Trackback:(0) | Comments:(0)

SubmittingPatches このエントリーをはてなブックマークに追加

Andrew に SubmittingPatches を読み直せ。と怒られたので
読み直していたのですが1つ面白い事に気が付きました。

> 15個より多くのパッチを同時に vger.kernel.org のメーリングリストへ送らな
> いでください!!!

という記述があるのですが、典拠となっているのはDavid Millerの
以下のメール

http://marc.info/?l=linux-kernel&m=112112749912944&w=2

見ての通り、29個しかないパッチでも苦情が出てる。
当時は平和だったんですね。

最近はGregKH あたりは50連パッチとか平気で投げるもんなぁ・・・

関連記事
linux | 【2008-06-04(Wed) 10:58:01】 | Trackback:(0) | Comments:(0)

ITProのLinuxチューニングの記事がひどい事になっている件について このエントリーをはてなブックマークに追加

http://itpro.nikkeibp.co.jp/article/COLUMN/20080528/304432/


あまりに酷いのでdisる記事を書こうかと思ったら、末尾に小さく

出典:日経Linux 2002年4月号 45ページより
(記事は執筆時の情報に基づいており,現在では異なる場合があります)



と書いてあった。6年前の記事かよ!!

古い内容が多いので、よい子は信用しないでね。

関連記事
blog | 【2008-06-03(Tue) 23:16:55】 | Trackback:(2) | Comments:(3)

Dave Miller このエントリーをはてなブックマークに追加

今月のkernel watchだけど、Dave Miller は David Miller の誤植だよね?

LKMLではみんなが、Daveって呼んでるからたまに忘れるが、Daveは愛称。
本人に直接指摘する勇気はないので、チラ裏

関連記事
雑談 | 【2008-06-02(Mon) 17:04:53】 | Trackback:(0) | Comments:(5)

FF3クリア このエントリーをはてなブックマークに追加

ラストは演出に失敗していて、闇の4戦士がダサすぎるので、いまいち雰囲気に浸れなかった。
光のクリスタル系のイベントのときは、すごくいい感じだったので、スタッフが力尽きたか、手を抜いたか。。

あと、ラスト近くのサブキャラ全員集合イベントでにせ勇者のじじいまでやってくるくせに、エリアが復活しないのは(FC版と同じとはいえ)納得いかん。

どちらにしろ、30時間もかけて解くゲームではないとオモタ。。

関連記事
雑談 | 【2008-06-02(Mon) 06:15:30】 | Trackback:(0) | Comments:(0)

ホットコーヒー このエントリーをはてなブックマークに追加

おうちの近くの自販機からホットコーヒーがとうとう消えた。
かなしい

関連記事
雑談 | 【2008-06-02(Mon) 02:10:49】 | Trackback:(0) | Comments:(0)

cgroupにもとめられる機能 このエントリーをはてなブックマークに追加

ってなんだろう?
誰かトラブル事例とか持ってないっすかね?

関連記事
雑談 | 【2008-06-01(Sun) 01:04:38】 | Trackback:(0) | Comments:(0)
前のページ
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。