タグ

kernelに関するhikazohのブックマーク (9)

  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita
  • systemd時代に困らないためのlimits設定 | 外道父の匠

    数年前に、こういう記事「ulimitが効かない不安を無くす設定」を書きました。しかし、ディストリビューションのバージョンが上がり、デーモン管理が systemd に変わったことで、インターネットのゴミとなりつつあります。 そのため今回は、その次世代バージョン的な内容ということで、systemd の場合はこうしておけば見えない敵と闘うこともなくなるはずです、というものになります。例によって、抑えきれていないパターンがあったら御免なさいです、押忍。 limits設定で目指す所 復習になりますが、limits の設定で困るのはだいたいこういうパターンでしょう。 作業中ユーザーのシェルのlimits設定が思い通りにならない コンソール/SSHログインしてデーモンを再起動したら、limits設定が戻っていた su/sudoを使ってデーモンを再起動したら同上 デーモンをシステムに自動再起動させたら同上

    systemd時代に困らないためのlimits設定 | 外道父の匠
  • Linux Insides : カーネル起動プロセス part4 | POSTD

    64ビットモードへの移行 Kernel booting process もパート4になりました。4回目の今回は、 プロテクトモード での最初の一歩についてご紹介します。CPUがサポートする ロングモード 、 SSE(ストリーミングSIMD拡張命令) 、 ページング方式 、そしてページテーブルの初期化やロングモードへの移行のお話しです。 注:このパートでは、アセンブリ言語のソースコードが頻出しますので、知識がない方は、事前に参考書を読むなどして理解を深めておいてください。 前回の パート では、 arch/x86/boot/pmjump.S 内にある32ビットのエントリーポイントにジャンプするところで終了しました。

    Linux Insides : カーネル起動プロセス part4 | POSTD
  • Linux Insides : カーネル起動プロセス part3 | POSTD

    ビデオモード初期化とプロテクトモードへの移行 カーネル起動処理シリーズのパート3です。前回の パート では、 set_video ルーチンを main.c .から呼び出す直前までを扱いました。今回は、次の内容を見ていきます。 カーネルセットアップコードにおけるビデオモードの初期化 プロテクトモードに切り替える前の準備 プロテクトモードへの移行 注 プロテクトモードについてよく知らない場合は、前回の パート の内容を見てください。また、参考になる リンク も同ページに掲載しています。 上にも書いたように、 arch/x86/boot/video.c ソースコードファイルに定義された set_video 関数から始めましょう。内容を見ると、まずビデオモードを boot_params.hdr 構造体から取得することから始まるのがわかります。

    Linux Insides : カーネル起動プロセス part3 | POSTD
  • Linux のページ回収まわりのカーネルパラメータ - ablog

    Linux(kernel 2.6.32-303 以降)のDBサーバでメモリ16GB、スワップ領域16GBの場合、ざっくりこんな感じが良いかなという妄想メモ。 vm.swapiness=1 vm.overcommit_memory=2 vm.overcommit_ratio=80 vm.min_free_kbytes=524288 vm.extra_free_kbytes=1048576(kernel 3.5以降) vm.swappiness=1 でページアウトよりページキャッシュ解放を優先させる。kernel 2.6.32-303 以降、0 にすると OOM Killer が発動しやすくなるらしいので、1 にする。 vm.overcommit_memory=2 でオーバーコミットしないようにして、OOM Killer が発動しにくくする vm.overcommit_ratio=80 で仮想

    Linux のページ回収まわりのカーネルパラメータ - ablog
  • vm.min_free_kbytes からの wmark_{min|low|high} 算出式 - ablog

    Linux のページ回収の閾値である wmark_min、wmark_low、wmark_high の算出式を調べたメモ。 算出式 正確には NUMA ノードの ZONE 毎に計算されるが、合計の概算は下記の式で計算できる。 min_free_kbytes = sqrt(物理メモリサイズ(KB) * 16) wmark_min = min_free_kbytes wmark_low = wmark_min + (wmark_min / 4) wmark_high = wmark_min + (wmark_min / 2) 具体例 例えば、x86_64 で物理メモリサイズが 16GB の場合、以下のようになる。 min_free_kbytes = sqrt(16,777,216KB * 16) = 16,384 KB wmark_min = 16,384 KB wmark_low = 16,

    vm.min_free_kbytes からの wmark_{min|low|high} 算出式 - ablog
  • Linux Insides : カーネル起動プロセス part5(終) | POSTD

    カーネルの展開 カーネルの起動処理( Kernel booting process )シリーズの第5弾です。 前回 は、64ビットモードへの移行を見てきましたが、今回はその続きを説明していきたいと思います。カーネル展開の前準備と再配置、実際のカーネル展開処理のコードにジャンプする前の、最後のステップを見ていきます。それでは、カーネルコードの世界に再び飛び込んでいきましょう。 カーネル展開の前準備 前回は64ビットのエントリポイント startup_64 にジャンプする直前まででした。これは arch/x86/boot/compressed/head_64.S のソースコードファイルの中にあります。すでに startup_32 での startup_64 へのジャンプは見てきましたね。 pushl $__KERNEL_CS leal startup_64(%ebp), %eax ... ..

    Linux Insides : カーネル起動プロセス part5(終) | POSTD
  • GitBook – Knowledge management for technical teams

    GitBook brings all your technical knowledge together in a single, centralized knowledge base. So you can access and add to it in the tools you use every day — using code, text or even your voice.

    GitBook – Knowledge management for technical teams
  • Linux のページテーブルのサイズの見方と見積式 - ablog

    Linux Kernel 2.6 (x86-64) でのページテーブルのサイズの確認方法と見積式を調べてみた。 あっているか自信のないところもある&まだ書きかけ。 ページテーブルのサイズの見方 OS全体のページテーブルのサイズ $ cat /proc/meminfo MemTotal: 16158544 kB MemFree: 13134056 kB (中略) PageTables: 34428 kB ★ 34MB プロセス毎のページテーブルのサイズ $ cat /proc/10225/status # 10255 は PID Name: zsh State: S (sleeping) Tgid: 10225 Pid: 10225 PPid: 10222 (中略) VmPTE: 124 kB ★ 124KB ページテーブルのサイズの見積式 見積式 (プロセスが使用している物理メモリサイズ

    Linux のページテーブルのサイズの見方と見積式 - ablog
  • 1