2014-02-01から1ヶ月間の記事一覧
パフォーマンスに関するスライド「What Linux can learn from Solaris performance and vice-versa」を見ててARCって単語が出てきて参照カウンタ?と思ったんだけど調べてみたらAdaptive replacement cache(ARC)のことだったので調べてみた。英語版のwikip…
paging_init()の続きで残りの2行を。。 node_clear_state()は特に見るほどではないのでzone_sizes_init()を見る。 650 void __init paging_init(void) 651 { 652 sparse_memory_present_with_active_regions(MAX_NUMNODES); 653 sparse_init(); 654 655 /* 6…
paging_init()の2行目、sparse_init()のところを読む。 sparse_init()の関数にあるコメントを見るとやろうとしていることはなんとなくわかる。 ここで言っているaccumulated non-linear sectionsというのは前回までの記事で見てきた部分で、e820のメモリマッ…
paging_init()の2行目で実行するsparse_init()を見る前にここで使っている関数を先に軽く見ておく。 alloc_usemap_and_memmap()はこのようなI/Fの関数。 引数の最後のdataはalloc_func()の一番目の引数として使う。 469 static void __init alloc_usemap_and…
今日はx86_64のpaging_init()から呼ばれるsparse_memory_present_with_active_regions()とそこで使われるmemory_present()のあたりを読む。 ディレクトリ的にはarch/x86/以下ではなくてmm/になる。 まずはsparse_memory_present_with_active_regions()を。 …
x86_64のページングを設定している部分を読もうと思って読み始めて前回の続きになるsparse_memory_present_with_active_regions()を読もうと思ったんだけど、この関数で使う変数(struct memblockのメンバ変数のmemory(型はstruct memblock_type))を調べた…
Linuxカーネルの解説本は何種類か出版されているけど大概はx86_32が対象なんですよね。ということでx86_32を基本として大まかな内容は解説本を参考にしつつ、実際のx86_64の処理はコードを読む必要があるのです。。。 ということでx86_64の場合のページング…
githubのTrendingと見ていてOSがどんなハイパーバイバー上で動いているか確認できるツールslabbed-or-notがあったので見てみた。 README.mdによると現状対応しているハイパーバイザーはXen、VMware、Hyper-V、KVM、bhyveに対応している。コンテナ型のOpenVZ…