タグ

ブックマーク / kernhack.hatenablog.com (9)

  • free(1)のtotalとかusedなどの各項目をカーネルの方から見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    free(1)は/proc/meminfoを読みに行くので、Linuxカーネルでどのような変数を見せているのかを調べてみます。カーネルのバージョンは4.5です。あ、swapのほうは今回は見ません。 最初に見るのはfs/proc/meminfo.cで、このファイルが/proc/meminfoに対する操作を定義しています。/proc/meminfoをopenする処理はmeminfo_proc_open()で、実際の処理はmeminfo_proc_show()が行います。 211 static int meminfo_proc_open(struct inode *inode, struct file *file) 212 { 213 return single_open(file, meminfo_proc_show, NULL); 214 } 215 216 static const str

    free(1)のtotalとかusedなどの各項目をカーネルの方から見てみる - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2016/05/05
    free(1)のtotalとかusedなどの各項目をカーネルの方から見てみる free(1)は/proc/meminfoを読みに行くので、Linuxカーネルでどのような変数を見せているのかを調べてみます。カーネルのバージョンは4.5です。あ、swapのほうは今回は
  • fork/clone時に返すpidの設定(2) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    前回のfork/clone時に返すpidの設定(1) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモの続きです。alloc_pid()を見ていきます。 その前に、pid構造体のnumbers変数はサイズ1の配列として宣言されていますが、pidの処理ではindex番号1とかそれ以上の場所にアクセスしてます。 57 struct pid 58 { 59 atomic_t count; 60 unsigned int level; 61 /* lists of tasks that use this pid */ 62 struct hlist_head tasks[PIDTYPE_MAX]; 63 struct rcu_head rcu; 64 struct upid numbers[1]; 65 }; これはnumbers変数が構造体の最後の位置に宣言されているというところが重要です

    fork/clone時に返すpidの設定(2) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2016/01/13
    "はてなブログに投稿しました #はてなブログ fork/clone時に返すpidの設定(2) : φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ https : //t.co/EzUUf6nq0l https はてなブログに投稿しました #はてなブログ fork/clone時に返すpidの設定(
  • Linux Kernel Hack入門編 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の25日目ですヽ(=´▽`=)ノ 今回はLinux Kernel Hack入門編ということで入門的なことを書いてみたいと思います。 まず使用する環境ですけど最近出たばっかのFedora 21のWorkstationにしました。まあ、今回の内容的にはディストリビューションは問わないんですが、多くの人が馴染んでいるであろうfedora系というかパッケージマネージャがyumということでこれにしてみました。 自分は普段Arch Linuxなんですけど、こっちだとkernelのmake install時にちょっとしたスクリプトを書く必要があったりするのもあって、fedoraのほうが手軽かなというのもあります。 カーネルコード・リーディング ブラウザベースでコード・リーディング 読めるソースは大概メインラインのカーネルということになりますが

    Linux Kernel Hack入門編 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/25
    Linux Kernel Hack入門編 この記事はLinux Advent Calendar 2014の25日目ですヽ(=´▽`=)ノ 今回はLinux Kernel Hack入門編ということで入門的なことを書いてみたいと思います。 まず使用する環境ですけど最近出たばっかのFedora 21のWorkstationに
  • virt-managerで仮想環境作成時に選択するOS Typeは何に使っているのか - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の17日目です。 virt-managerのGUIを使って仮想環境を作るときにOS Typeというのを選択していると思いますが、これの設定はどのように使われているのか見てようと思います。 特に最近のvirt-managerはやたら選択可能なOSが多いように思えるんだけど、LinuxディストリビューションのところではArch LinuxとかGentooが無いんですね。その割にRedhat Linux 1.0なんてかなり昔のディストリビューションも入ってたりする謎さ加減です。 今回使っているvirt-managerのバージョンは1.1.0です。 Windowsだとこうだったり、 Linuxだとこうだったりです。 まず、これら選択項目がどこから来ているのか?というのが最初の疑問です。これはvirt-managerではなくてlibosi

    virt-managerで仮想環境作成時に選択するOS Typeは何に使っているのか - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/18
    virt-managerで仮想環境作成時に選択するOS Typeは何に使っているのか この記事はLinux Advent Calendar 2014の17日目です。 virt-managerのGUIを使って仮想環境を作るときにOS Typeというのを選択していると思いますが、これの設定はどのよ
  • Linuxカーネルで見る最適化の技 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の13日目です。 LWNのACCESS_ONCE() and compiler bugsを読んでなるほどねーと思ったのでその辺について書いてみたいと思います。 最適化の技と言いつつ実際は最適化させすぎない技なんですが\(^o^)/ まずACCESS_ONCEマクロの役割ですが、これは必ずデータを読みたいという場合に使ってます。 例えばこんなコードがあったときに(かなり適当ですが雰囲気は掴めるはず) while (1) { struct foobar *p = foo; if (p->hoge) { .... } } コンパイラはこのように最適化をかけてくる可能性があるんだけど、fooは別のスレッドによって変更されるのでループ毎にデータをfetchして欲してというケースで使うのがACCESS_ONCEマクロみたいです。 struc

    Linuxカーネルで見る最適化の技 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/14
    Linuxカーネルで見る最適化の技 LWNのACCESS_ONCE() and compiler bugsを読んでなるほどねーと思ったのでその辺について書いてみたいと思います。 最適化の技と言いつつ実際は最適化させすぎない技なんですが\(^o^)/ Tags: feedly, ifttt
  • ipコマンドとnetnsでお手軽なテストクライアント作成 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の9日目の記事です。 ネットワークを使う機能でなにかしらテストしたいときに複数のクライアントが欲しい時がありますよね。大量アクセスをしたい場合はjmeterとかありますが、クライアントのIPアドレスも複数あったほうが良いケースもあると思います。kvm等でクライアントを複数作ってbridgeするという方法もありますが、それはちょっと重量級なのでもうちょい手軽な方法がないかなーというところです。 そこでお手軽な方法はなにかというところでネットワークネームスペース(netns)を使って見たいと思います。 ネットワークネームスペースとはなんぞや?という方はten_forwardさんがgihyo.jpで連載している「LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術」の「第6回 Linuxカーネルのコンテナ機能[5] ─ネットワーク

    ipコマンドとnetnsでお手軽なテストクライアント作成 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/09
    ipコマンドとnetnsでお手軽なテストクライアント作成 この記事はLinux Advent Calendar 2014の9日目の記事です。 ネットワークを使う機能でなにかしらテストしたいときに複数のクライアントが欲しい時がありますよね。大量アクセ
  • sysinfo(2)でシステム情報の取得 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の2日目の記事です。 プログラムの中でロードアベレージとかメモリの空き容量を見るのにどうしようかなーと思っていて見つけたのがsysinfo(2)です。 使い方は至って単純でsysinfo構造体のアドレスをsysinfo(2)に渡せば情報が入ってくるのであとはご自由にという感じでいけます。 cだとこんな感じです。SI_LOAD_SHIFTは/usr/include/linux/sysinfo.hにて定義されています。 #include <stdio.h> #include <sys/sysinfo.h> #define LOAD_AVERAGE(x) x / (double)(1 << SI_LOAD_SHIFT) int main(int argc, char **argv) { struct sysinfo info = {

    sysinfo(2)でシステム情報の取得 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/04
    sysinfo(2)でシステム情報の取得 この記事はLinux Advent Calendar 2014の2日目の記事です。 プログラムの中でロードアベレージとかメモリの空き容量を見るのにどうしようかなーと思っていて見つけたのがsysinfo(2)です。 使い方は至
  • slubのコードを読む:__memcg_kmem_get_cacheの処理を読む - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2014の3日目の記事です。 kmem_cache_zalloc()、名前だけ見ると単純そうな気がするけど割とそうでもないのでした。この関数は最初のほうは別の関数へのラッパー程度になっていますが、memcg_kmem_get_cache()、__memcg_kmem_get_cache()辺りでちゃんとした処理になります。 これらは kmem_cache_zalloc()から呼ばれるのでまずはdo_kmem_cache_create()が kmem_cache_zalloc()]を呼んでいるのでここからスタートします。 一番目の引数kmem_cacheはstruct kmem_cache *な変数でmm/slab_common.cで定義されていますが、mm/slab.hの方でextern付きで宣言されています。これはカーネルの初期化のタ

    slubのコードを読む:__memcg_kmem_get_cacheの処理を読む - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/12/03
    slubのコードを読む:__memcg_kmem_get_cacheの処理を読む この記事はLinux Advent Calendar 2014の3日目の記事です。 kmem_cache_zalloc()、名前だけ見ると単純そうな気がするけど割とそうでもないのでした。この関数は最初のほうは別の関数
  • Linuxカーネルハックに興味があるけど特にネタが無いんだよな〜って人向けの小ネタ - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルに興味があるんだけど特に作りたいものってないんだよなーなんて割とあると思う訳です。俺とか。。。 まあ、kernelnewbiesのメーリングリストでもよく見る話題かと思います。この辺なんかもそうですね。 で、そんな時にオススメできるのがkmemleak。カーネルに組み込まれたメモリーリーク検出ツールです。 使い方は至って簡単でカーネルのコンフィグレーションにあるKernel memory leak detectorを有効にしたカーネルを普通に使えばOK。カーネルはメインラインのrcでもtipでもlinux-nextでも何でも良いと思います。 設定の場所はKernel Hacking -> Memory Debugging -> Kernel memory leak detectorにチェックをするのと、 その下のMaximum kmemleak early log ent

    Linuxカーネルハックに興味があるけど特にネタが無いんだよな〜って人向けの小ネタ - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    kasumani
    kasumani 2014/05/10
    Linuxカーネルハックに興味があるけど特にネタが無いんだよな〜って人向けの小ネタ Linuxカーネルに興味があるんだけど特に作りたいものってないんだよなーなんて割とあると思う訳です。俺とか。。。 まあ、kernelnewbiesの
  • 1