2011-01-01から1年間の記事一覧

「iPad 2欲しいですか?」

今週のお題「iPad 2欲しいですか?」 いえ特に…。

Direct Cache Accessについて理解を深める為、CPUのデータシートも読んでみる

CPUについては、Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide, Part 2に書いてある。 Table B-2. IA-32 Architectural MSRsにDCA関連のレジスタがあった: 1F8H IA32_PLATFORM_DCA_CAP DCA Capabili…

Direct Cache Accessについて理解を深める為、MCHのデータシートを読んでみる

Intel I/O Acceleration Technologyの構成要素で一番「!?」となったDirect Cache Accessについて、第一回 カーネル/VM探検隊@関西では調査不足で十分に説明出来てなかったので調べてみた。元となる論文はこれなのだが: Direct Cache Access for High Ba…

Direct Cache Accessについて理解を深める為、NICのデータシートも読んでみる

DCA対応NICはいくつかあるようだが、例えばIntel® 82598 10 GbE Controller Datasheetの3.5.6 DCAに書いてある。これによると、初期化時にドライバは送り先CPU ID・CPU Bus IDを設定してDCAを初期化する必要があり、DCAが有効化されるとPCIe TLBヘッダのTAG …

item構造体

memcachedのitem構造体って任意サイズのデータを入れるために後ろの方が可変長になってて、マクロでアクセスしてるっぽいんだけど、まとめるとこんな感じに使ってるようだ。 [header|(cas)|key|suffix|data]headerは普通にit->nsuffixのようにアクセス出来る…

mmcmodをdevelopment branchのmemcachedで動かしてみた

この話って今どうなってんのかなー、って思ったんだけど、どうも実際のコードは無いようだし、じゃぁtmaesakaさんのmmcmod試してみるかぁ、と思ったんだけども。 mixi engineer blog …記事は2008年。memcached-1.2.4ベース。古い…って訳で、取り敢えず何も考…

libprocで空きメモリ容量を取得してみる

空きメモリ容量取るのってprocfsかsysfsを読みに行かないといけないのかなーとか思ってprocpsを眺めてみたらライブラリあるのね。 #include <proc/sysinfo.h> #include <stdio.h> int main(void) { meminfo(); printf("free:%luMB cached:%luMB\n", (kb_main_free << 10) >> 20, (kb_m</stdio.h></proc/sysinfo.h>…

MacBook Air 11インチ欲しい!

Mac

MacBook Air 11インチ欲しい! もらったら速攻OpenBSD入れるんでくだしあ

NetBSD/i386のパケット受信フロー

まぁ予想通りというか、依然としてOpenBSDとかなりの部分が共通してますね。 ロック粒度と並列性ですが…割り込み以外でBig kernel lockは使わないのでOpenBSDのようにシステムコールでブロックしてしまってプロセスの並行実行を阻害したりはしないものの、サ…

FreeBSD/i386のパケット受信フロー

TCPとフォワーディングをサクっと省略しちゃった簡易バージョン。 LinuxみたいにRCUとかは使ってなくて粒度の細かいロックがそれぞれのデータに対して存在してて、ハードウェア割り込みもソフト割り込みもそれぞれスレッドで処理してるという事のよう。

mincore(2)でファイルがページキャッシュに乗っているか調べる

シェルから調べたい人 Google Code Archive - Long-term storage for Google Code Project Hosting.をインストールして、 fincore ファイル名 って打つ。 自分のプログラムから調べたい人 要するにさっきのfincoreコマンドから必要な所を抜き出してくれば良…

Linux/i386のパケット受信フロー

同じものを何度も書いてはいるのだが、OpenBSDの図のように共有データとロックの関係についてはあまり調べて無かったと思ったのでこちらも作ってみた。正直、RCUがどうなっているのか未だ理解出来ていない。 恐らくロック区間でロックした時点でのバージョン…

OpenBSD/i386のパケット受信フロー

共有データとジャイアントロックの位置に注意しながら関数レベルで追ってみた(実際にはかなり簡略化しているが)。 SMP対応が全く進んでいないという事が容易に見て取れる。

Linuxのパケット受信フロー図(RPSを使う場合)

せっかく書いたので貼ってみる。