2014-02-01から1ヶ月間の記事一覧

Adaptive replacement cache(ARC)とはどんなものか調べてみる

パフォーマンスに関するスライド「What Linux can learn from Solaris performance and vice-versa」を見ててARCって単語が出てきて参照カウンタ?と思ったんだけど調べてみたらAdaptive replacement cache(ARC)のことだったので調べてみた。英語版のwikip…

linux:x86_64のpageing_init()での最後の処理、zone_sizes_init()を読む。

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…

linux:sparse_init()で細かいメモリ領域の断片達を管理できるように

paging_init()の2行目、sparse_init()のところを読む。 sparse_init()の関数にあるコメントを見るとやろうとしていることはなんとなくわかる。 ここで言っているaccumulated non-linear sectionsというのは前回までの記事で見てきた部分で、e820のメモリマッ…

linux:sparse_init()の前にalloc_usemap_and_memmap()を見ておく

paging_init()の2行目で実行するsparse_init()を見る前にここで使っている関数を先に軽く見ておく。 alloc_usemap_and_memmap()はこのようなI/Fの関数。 引数の最後のdataはalloc_func()の一番目の引数として使う。 469 static void __init alloc_usemap_and…

linux:x86_64のpaging_init()を読み進める。

今日はx86_64のpaging_init()から呼ばれるsparse_memory_present_with_active_regions()とそこで使われるmemory_present()のあたりを読む。 ディレクトリ的にはarch/x86/以下ではなくてmm/になる。 まずはsparse_memory_present_with_active_regions()を。 …

linux:x86_64のメモリ管理のうちe820のメモリマップを扱っている部分読む

x86_64のページングを設定している部分を読もうと思って読み始めて前回の続きになるsparse_memory_present_with_active_regions()を読もうと思ったんだけど、この関数で使う変数(struct memblockのメンバ変数のmemory(型はstruct memblock_type))を調べた…

linux:x86_64のページング初期化処理周りを読んでみる

Linuxカーネルの解説本は何種類か出版されているけど大概はx86_32が対象なんですよね。ということでx86_32を基本として大まかな内容は解説本を参考にしつつ、実際のx86_64の処理はコードを読む必要があるのです。。。 ということでx86_64の場合のページング…

OSがどんなハイパーバイザー/コンテナ上で動いているか確認するツールのコードを読んだ

githubのTrendingと見ていてOSがどんなハイパーバイバー上で動いているか確認できるツールslabbed-or-notがあったので見てみた。 README.mdによると現状対応しているハイパーバイザーはXen、VMware、Hyper-V、KVM、bhyveに対応している。コンテナ型のOpenVZ…