タグ

Kernelに関するmogwaingのブックマーク (96)

  • Disk Arm Scheduling Simulations Introduction

  • Opensource.com

    Guilt is usually considered a negative emotion, but by steering it well, you can achieve surprising success.

    mogwaing
    mogwaing 2010/01/04
    redhat oracle
  • Completely fair queueing - Wikipedia

    mogwaing
    mogwaing 2010/01/04
    [i/o scheduler] It was an optional I/O scheduler until it became the default scheduler in the 2.6.18 release. Red Hat Enterprise Linux 4 uses this I/O scheduler as the default even though it provides a 2.6.9 based kernel.
  • Anticipatory scheduling - Wikipedia, the free encyclopedia

    mogwaing
    mogwaing 2010/01/04
    [i/o scheduler] anticipatory scheduler (AS) was the default Linux kernel scheduler between 2.6.0 and 2.6.18, by which time it was replaced by the CFQ scheduler.
  • AdvancedPageReplacement - linux-mm.org Wiki

    The basic assumptions behind LRU have been invalidated by streaming media, garbage collection and other things possible in large address spaces, but until 2002 there weren't many replacements available that are suitable to be implemented in a general purpose OS. However, with the advent of LIRS, ARC, Clock-pro and CAR/CART algorithms, it looks like there could be a benefit to Linux in implementing

  • RCUの全面書き直しも! 2.6.29は何が変わった?(1/2) - @IT

    4月版 RCUの全面書き直しも! 2.6.29は何が変わった? 小崎資広 2009/5/8 いやあ、文字数の都合で書けませんでしたが、4月最終週はIngoがいい出した「カーネル専用コンパイラを作ろうぜ!」スレッドが大盛り上がり。おバカな話題ほどスレッドが伸びるのは、全世界共通ですね。 それでは予告どおり、今回はカーネル2.6.29についてのよもやま話をお送りいたします。どうぞ。 カーネル2.6.29の主な変更点 ■ランダムシード受け渡し方法の変更によるアプリケーション起動の高速化 最近のgccには、glibcと連携してスタック破壊を検知するSSP(Stack Smashing Protector)という機構が実装されています(-fstack-protectorオプション)。これはスタックに「カナリア値」と呼ばれる特殊な値を埋め込み、関数リターン時に、その値が無変更であることを確認することで

    mogwaing
    mogwaing 2009/05/11
    rcuをまだちゃんと理解できていない
  • Linux I/O scheduler queue size and MyISAM performance

    At MySQL Conference and Expo 2009, I explained how Linux I/O scheduler queue size affects MyISAM insert performance. It is well known that Linux implemented four types of I/O schedulers (noop/deadline/anticipatory/cfq) in Linux kernel 2.6.10. The default is cfq in most distributions including RHEL, which is not so good then noop normally outperforms, but I'll talk this in other posts. Linux I/O sc

    Linux I/O scheduler queue size and MyISAM performance
    mogwaing
    mogwaing 2009/05/11
    I/O scheduler queue size settings is not helpful for InnoDB because InnoDB internally sorts I/O requests to optimize disk seek overheads, and sending limited number of i/o requests controlled by InnoDB internal i/o threads.inno
  • メモリ管理のお勉強 - 書きとめておきたいことたち

    HEAP領域とSTACK領域の間の未使用領域は、下記の領域に使われる 共有ライブラリのロード領域 メモリ・マップト・ファイル用領域 プロセス間共有メモリ用領域 メモリ・マップト・I/O用領域 メモリ・マップトによる追加HEAP領域 小さなサイズをmallocをしたときはHEAP領域に確保されるが、大きなサイズのメモリをmallocしたときはメモリマップ領域に確保される(glibcの場合) すべてmmapにするとメモリのフラグメンテーションがおきないが、mmapは重いしページサイズ単位しか扱えない。 32bit環境では論理メモリが2^32=4GBまでしか確保できない。このうちOSがメモリの上位1or2GBを使うので、実際にはアプリは3or2GBまでしかメモリは使えない。64bit環境になると、もっと使えるようになる。 HEAP領域は下に(上位アドレス方向)、STACK領域は上に(下位アドレス

    メモリ管理のお勉強 - 書きとめておきたいことたち
    mogwaing
    mogwaing 2009/01/30
    よくまとまっている
  • アジアのペンギン: Linuxのメモリアロケータ

    昨年、Linuxカーネルメモリ管理についての社内勉強会がありました。そういえば、2002年頃の春頃(随分昔だなあ。。。)に2.4.17を対象にメモリアロケータに関する技術資料を作ったことを思い出しました。当時は、その資料を使って社内勉強会やYLUGで発表したりしていました。今回はその資料の一部の内容を、若干手直しして紹介します。 Linux のメモリアロケータは下図のように3つのコンポーネント(ページアロケータ、スラブアロケータ、vmalloc) によって構成されています。 ◎ページアロケータ メモリアロケータのベースとなる 物理メモリをページ(4KB)単位で管理。 効率的にメモリを管理するために、バディシステムによって実装され、 ページ間フラグメンテーションの発生を抑制している。 インタフェースは、__get_free_pages()/alloc_pages()/__free_pages

  • 詳解Linuxカーネル Wiki*

    14 ディスクキャッシュ ディスクキャッシュ=> ディスクアクセスをできるだけ減らすことでシステム性能を向上させる方法 通常はディスクに保存するデータをRAMに保存する。 ディスクキャッシュの種類 dエントリキャッシュ(ファイルのパス名からiノードへの変換) バッファキャッシュ ページキャッシュ バッファキャッシュ=> ブロックI/O操作により使用される。各バッファはカーネルがブロックの内容を保存するのに使用する領域。 ページキャッシュ=> ページI/O操作の前にページキャッシュ内に必要なデータが格納されていないか、カーネルが確認する。 ページは通常ファイルやブロック型デバイスファイルに対応する。 キャッシュを使用するI/O操作 Ext2 スーパブロックの読み取り Ext2 iノードの読み取り Ext2 ディレクトリの読み取り Ext2 通常ファイルの読み取り Ext2 通常ファイルへの書

    詳解Linuxカーネル Wiki*
  • ユメのチカラ: Linux Kernel 2.6.18とCache Pollution Aware Patch

    9月20日に最新のLinuxカーネルが公開された。最近ではだいたい3ヶ月程度で新バージョンが公開されているというペースである。 2.6.12  2005/06/17   2.6.13  2005/08/29   2.6.14  2006/10/28   2.6.15  2006/01/03   2.6.16  2006/03/20   2.6.17  2006/06/18   2.6.18  2006/09/20 実はこのバージョンには、わたしが書いた cache pollution aware patch というのが入っている。パッチそのものは昨年の今頃に書いたもので、すぐにAndrew Mortonのmmツリーと呼ばれるものにはマージされたのであるが、Linus Torvaldsの家のツリーにはなかなかマージされていなかった。 Cache Pollution Aware Patchと

  • はじめてのカーネル・ソース---目次:ITpro

    なかなかハードルが高く,多くの人が踏み出せないでいるカーネルのソース・コードの読解。連載では,今までカーネル・ソースなんて見たことがないという人に,読みこなすコツをお教えします。 カーネルのコンパイル方法については,関連記事「やってみると意外に簡単!? Linuxカーネル・コンパイル入門」をお読みください。 また,カーネル・パラメータの項目については,関連記事「「Linuxカーネルの設定パラメータ」」で公開しています。 第1回 どうしたら読めるようになるのか 第2回 C言語とライブラリの初歩 第3回 カーネル・ソース内のシステム・コールを確認する 第4回 カーネルが構造体を好むワケ 第5回 デバイス・ドライバとモジュール 第6回 構造体に「関数」を登録する 第7回 ネットワーク処理はモジュール処理と上下が逆 第8回 データに意味付けするキャスティング手法 第9回 機能拡張でよく使われる共

    はじめてのカーネル・ソース---目次:ITpro
  • sodex — ありえるえりあ

    はじめまして、ありえるに入社し2ヶ月ほどたつsodexです。 よろしくお願いします。 早速ですが、入社以前の今年4月から趣味で書いているオリジナルカーネルsodexがカーネルとしての体面が整いましたのでReleaseしてみました。 sodex 0.0.1 このカーネル、今のところ私個人の勉強目的で書いているため、これで何かをする事は出来ませんがカーネルに興味がある方は原形が残らないほど改造して頂き、出来ればそのコードを提示頂けたら僥倖です。 さて、WindowsLinux, Solaris, BSD系, Tron等 巷には様々なカーネルが開発されており、もはや枯れた分野とも言えるカーネルを今しかも個人が何故趣味で開発しているのか?疑問に思う方もいらっしゃると思います。その理由はただ一つ「知的好奇心」です。皆さんも物の動きや動作原理を不思議に思ったり疑問を抱き調べた事があるかと思いますが、

  • x86 Linux のメモリモデル、プロセス空間切り替え、カーネルスタック - naoyaのはてなダイアリー

    ひとつ前のエントリ id:naoya:20070924:1190653790 では Linux のコンテキストスイッチにおける、主にハードウェアコンテキストの退避/復帰の処理を追ってみました。その中で カーネルスタック (switch_to() 内で pushl %ebp とかして値が積まれるスタック)とはそのときの実行コンテキストに紐づくカーネルプロセススタックという理解でよいか。 という疑問がもやもや湧いて出てきました。ここ数日 はじめて読む486―32ビットコンピュータをやさしく語る を読んでいたのですが、その中にこの疑問への答えへの入り口が載っていまして、そこを糸口に調べてみました。で、結果としては 答え: 良い でした。 x86 は特権レベルの移行と連動してスタックポインタを切り替える仕組みを持っています。Linux の場合モードはカーネルモード(特権レベル0) とユーザーモード

    x86 Linux のメモリモデル、プロセス空間切り替え、カーネルスタック - naoyaのはてなダイアリー
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
  • Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー

    UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行

    Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす

    Linux 2.6 には sched_setaffinity(2) というシステムコールがあり、これを利用して任意のスレッドを(マルチCPU環境下で)特定の CPU で実行させることができます。http://www-06.ibm.com/jp/developerworks/linux/051028/j_l-affinity.shtml によるとリアルタイムプロセスでマネージャとなるスレッドをこのシステムコールで特定の CPU に固定する...といった応用が考えられるそうです。 へえ、と思ったのでちょっと遊んでみました。LD_PRELOAD を使って任意のプログラムを任意の CPU に固定して動かしてみます。GCC の __attribute__)((constructor))( で sched_setaffinitiy(2) を呼びます。(参考: http://0xcc.net/blog/

    naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす
  • Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー

    Linux カーネルのプロセススケジューラの核である kernel/sched.c の schedule() を読み進めていくと、タスク切り替え(実行コンテキスト切り替え)はその名も context_switch() という関数に集約されていることが分かります。2.6.20 の kernel/sched.c だと以下のコードです。 1839 static inline struct task_struct * 1840 context_switch(struct rq *rq, struct task_struct *prev, 1841 struct task_struct *next) 1842 { 1843 struct mm_struct *mm = next->mm; 1844 struct mm_struct *oldmm = prev->active_mm; 1845 184

    Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー
  • http://www.9203.net/~takech/pukiwiki/index.php?Kernel

  • HighMemory - linux-mm.org Wiki