タグ

kernelに関するmtbtaizoのブックマーク (37)

  • ダンプ解析講座 VA Linux Systems Japan

    講座では、Linuxシステムを対象にダンプの解析方法について解説していきます。 "ダンプ解析"と言われてもピンとこない方もいらっしゃるかもしれません。先ずは、「ダンプの解析とは何なのか?」という観点で少し解説します。 そもそもダンプとは何かと言うと、マシンに搭載されているメモリの内容を(一般に)ディスクに出力したものです。(「出力する」という行為を、「吐き出す」とか「吐く」という表現もよく使われます。講座内でも使用いたしますが、お客様向け資料等ではあまり好ましくない表現であることにご注意ください。) ダンプを吐く契機は、カーネルが自分自身の異常を検知したことです。カーネルは、これ以上動作を継続するのは危険と判断するとダンプを吐いてシステムをダウンさせます。(※1)つまり、ダンプが取られたということは、カーネルに障害が発生したということを意味します。察しのいい方はお気づきかと思いますが

    mtbtaizo
    mtbtaizo 2010/01/06
    ダンプ読めないよ。
  • Red Hat Enterprise Linux Plus FAQ : サイオステクノロジー株式会社 kernel-smp と kernel-hugemem の違いは?

    カテゴリ選択 製品・サービス 導入事例 お知らせ セミナー・イベント 会社情報 採用情報 タイプ選択 全て HTML PDF オープンソースソリューションNo.1のサイオステクノロジー Red Hat Enterprise Linux (RHEL)は、全世界のシステムで採用されている高性能なオペレーティング・システムです。 レッドハットのパートナーとして10年以上の実績を持ち、アジア・パシフィックでの販売実績No.1のサイオステクノロジーは、お客様のデスクトップ環境からミッションクリティカルシステム、仮想化のプラットフォームまで、RHELを安心して導入していただくための、専門的なノウハウおよびサービスを提供します。 Red Hat Enterprise Linux 製品ラインナップ

    Red Hat Enterprise Linux Plus FAQ : サイオステクノロジー株式会社 kernel-smp と kernel-hugemem の違いは?
    mtbtaizo
    mtbtaizo 2009/12/08
    smpとhugememの使い分け、4GB - 16GB : smp カーネル 16GB - 64GB : hugemem カーネル。RHEL5以降は、kernel-hugememは提供されない。
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 第5回 カーネル・メモリー管理

    前回は,プロセスが利用するメモリーをLinuxがどのように管理するかを説明しました。Linuxでは,ページングという仕組みに基づいた仮想記憶機構を利用して,プロセスごとに実際のメモリー空間とは別の仮想メモリー空間を準備します。この仮想メモリー空間は,プロセス・スケジューラによって実行が切り替わるたびに切り替えられます。このような仕組みを採ることで,複数のプロセスで競合を起こさず,できるだけ効率的にメモリーを使えます。 ところで,メモリーを利用するのはプロセスだけではありません。カーネル自身もメモリーを使いますが,その利用方法はプロセスの場合とは異なっています。また,物理メモリー・アドレスと仮想メモリー・アドレスの変換を行うのはプロセッサ(MMU)の仕事ですが,実際にその変換表(ページ・テーブル)を用意するのはカーネルの役割です。空き物理ページのうちどのページを割り当てるのか判断するのもカー

    第5回 カーネル・メモリー管理
  • Open Source (dupe) news, trend analysis and opinion | Network World

    Subscribe to access expert insight on business technology - in an ad-free environment. Learn more

    Open Source (dupe) news, trend analysis and opinion | Network World
  • ロードアベレージに関する考察

    ここ最近ロードアベレージについて調べています。業の Oracle サーバのロードアベレージが最近高いのです。日の夜はまだまだ安定した値。下のグラフは loadavg x 100 のグラフ。 Dual Core Xeon が2枚のサーバなので一般的なロードアベレージの解釈からすると4以下なら安全圏。ここ最近は6〜8という数値が多いわけですが、実際の体感的なパフォーマンスがそれほど悪いるわけではなくと言うか全然重く無くってイマイチ良く判らない。CPU とか他の数値は至って安全圏のものばかり。仕方がないので kernel 2.6 のソースを眺める日々がここ数日。とにかく kernel まわりの記事を手当たり次第読んでみました。 マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー

  • naoyaのはてなダイアリー - 負荷とは何か

    調べごとをしたので blog に書いて理解を深めようのコーナーです。長文です。 Linux でシステム負荷を見る場合にお世話になるのが top や sar (sysstat パッケージに同梱されてるコマンド) などのツールです。 top ではシステム統計のスナップショットを見ることができます。今システムがどういう状態かなーというときは top が便利。 top - 08:16:54 up 3 days, 14:43, 6 users, load average: 0.18, 0.07, 0.03 Tasks: 43 total, 2 running, 41 sleeping, 0 stopped, 0 zombie Cpu(s): 18.2% us, 0.0% sy, 0.0% ni, 81.8% id, 0.0% wa, 0.0% hi, 0.0% si一方の sar では10分ごとのシ

    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のはてなダイアリー
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 第9回 機能拡張でよく使われる共用体(union)

    構造体によく似たC言語の機能に「共用体」(union)があります。これは,IPv4をIPv6に拡張するときなど,カーネルの機能を拡張する際によく使われます。共用体の使い方とカーネルでの利用例を実際に見ていきましょう。 カーネルは,機能がよく拡張されます。例えば,ネットワーク・プロトコルの「IPv4」と「IPv6」の関係です。現在の主流はIPv4ですが, LinuxカーネルはIPv6に対応しています。ソース・コードを見ると分かるように,IPv6のコードを一から書いているのではなく,IPv4を処理する部分でIPv6と共用できるところを機能拡張しています。ここで使うのが,「共用体」(union)です。 共用体は,カーネル内部のあらゆる部分に利用されています。カーネルの読者にはとても大事なものですが,C言語の教科書の多くには詳細な解説がありません。そこでまず最初に,共用体とは何かを説明しましょう。

    第9回 機能拡張でよく使われる共用体(union)
  • 第8回 データに意味付けするキャスティング手法

    演算データの型を変換したり,代入時にデータの型を変換したりするときに「キャスティング」という手法を用います。キャスティングは, char,int,long,float,double,あるいは構造体の型を相互に変換する手法です。カーネルでは,構造体型に変換する手法が多く見受けられます。 まず,キャスティングの例を見てみましょう。図1のプログラムをコンパイルして実行すると, #include <stdio.h> int main() { printf("%f\n", (float)(7/2)); printf("%f\n", (float)(7)/(float)(2)); } となります。 最初のprintf関数は,整数型定数である7と2の演算結果を浮動小数点型に変換しています。整数型で割り算すると,小数点以下を切り捨て,7÷2=3となり,この整数値3を浮動小数点型の3.0に変換します。 次の

    第8回 データに意味付けするキャスティング手法
  • 第7回 ネットワーク処理はモジュール処理と上下が逆

    前回は,カーネルにモジュールを追加する処理をデバイス・ドライバを例に解説しました。デバイスに依存しない上位層の共通関数と,デバイスに依存する下位層の実関数を結び付けているのが構造体でした。今回は,下位に共通関数,上位に実関数がくる場合をネットワーク処理を例に見ていきます。 前回は,カーネルでよく使われている構造体の利用方法を紹介しました。デバイスに依存する処理を記述した「実関数」と,どのデバイスでも共通に使える「共通関数」を別々に定義しておき,構造体を使って,実関数と共通関数を同じものとして定義するというものでした。これにより,いかなるデバイスを使うときでも同じ共通関数名が使えるようになり,デバイスを物理的に差し替えたときも,上位層のプログラムのソース・コードを書き換えずに済みます。この方法はデバイス・ドライバだけではなく,カーネルのモジュール一般でよく用いられています。 今回も,同じよう

    第7回 ネットワーク処理はモジュール処理と上下が逆
  • 第6回 構造体に「関数」を登録する

    カーネル・ソースの読解が難しい理由の一つは「構造体の多用」にあります。構造体は,複数の種類のデータをまとめるものですが,カーネルでは,関数の先頭番地を登録する手法が多く見られます。この手法を使えば,モジュールを簡単に差し替えられます。デバイス・ドライバを例に,その様子を見ていきましょう。 パソコンのネットワーク・カードを異なるものに取り替えると,新しいデバイス・ドライバのモジュールをカーネルに組み込む必要があります。でも,カーネルのソース・コードを書き変える必要はありません。 デバイス・ドライバは,デバイスを操作するハードウエアに依存する処理と,ハードウエアに依存しない処理とに分けられます。これらをそれぞれ下位層,上位層の2つに分けて,それぞれの層の間でデータをやり取りする仕組みになっています。 2 つの層を接続するインタフェースを共通化しておけば,カードを付け替えたときも下位層だけを取り

    第6回 構造体に「関数」を登録する
  • 第5回 デバイス・ドライバとモジュール

    カーネルのソースを読みこなすためには,モジュールの仕組みを知る必要があります。カーネルの多くがモジュールでできているからです。デバイス・ドライバを例に,モジュールをコンパイルする仕組みやカーネルに付加する仕組みを見ていきましょう。 カーネルとデバイス・ドライバは切っても切り離せない関係にあります。 一つの理由は,カーネル・コードの一番多くの部分を占めているのがデバイス・ドライバだという事実です。 もう一つは,デバイス・ドライバをカーネルに組み込む方法を理解することが,カーネル・ソースを読みこなす近道になるということです。カーネルは,「モジュール」という単位でプログラムを追加したり削除したりできます。デバイス・ドライバだけではなく,いろいろなプログラムをモジュールとしてカーネルに組み込めます。特にデバイス・ドライバの起動方法などを理解すると,モジュールの考え方が分かり,カーネルのソースも読み

    第5回 デバイス・ドライバとモジュール
  • 第4回 カーネルが構造体を好むワケ

    カーネルのソース・コードでは,あらゆる場所でデータの構造を定義した「構造体」が使われています。構造体の読み方をマスターすればカーネル・ソースが一段と理解しやすくなります。今回は,「構造体とは何か」と「なぜカーネルが構造体を駆使するのか」を解説します。 連載の第2回「C言語とライブラリの初歩」で,変数や配列について解説しました。そこで述べたように,変数や配列を定義するときは,その名前の前に「int(整数)」や「char(文字)」のような「型」の種類を指定する必要があります。 こうした異なる種類のデータを複数個組み合わせて,プログラマが独自に定義した型が構造体です。例えば,あらかじめ「table」という構造体を「struct table」と定義しておけば,プログラムの中で「struct table aaa」と書くだけで,構造体table型の実体aaaを使えます。この場合,tableという箱を

    第4回 カーネルが構造体を好むワケ
  • 第2回 C言語とライブラリの初歩

    なかなかハードルが高く,多くの人が踏み出せないでいるカーネルのソース・コードの読解。連載では,今までカーネル・ソースなんて見たことがないという人に,読みこなすコツをお教えします。今回は,ソースを読むための大前提となるC言語の基知識について学びます。 カーネルのソース・コードは,基的にC言語で書かれています。そのため,C言語をある程度読めなければ話になりません。といっても,カーネル・ソースを読むのが目的ですから,C言語のプログラムを書く必要はありません。コツさえ分かれば,読みこなすのはびっくりするほど簡単です。そこで,今回は,カーネルを読みこなすために最低限知っておくべき,C言語の知識をお教えします。 まず,図1を見てください。C言語をほとんど見たことがない読者の方は,何が何やらさっぱり分からないのではないでしょうか。でも大丈夫です。意外に難しくありません。 1 #include <s

    第2回 C言語とライブラリの初歩
  • はじめてのカーネル・ソース 第1回 どうしたら読めるようになるのか:ITpro

    なかなかハードルが高く,多くの人が踏み出せないでいるカーネルのソース・コードの読解。連載では,今までカーネル・ソースなんて見たことがないという人に,読みこなすコツをお教えします。今回は,どうしたらカーネル・ソースを読みこなせるようになるのか,筆者の経験をお話します。 Linuxユーザーなら誰しもカーネルのソース・コード(カーネル・ソース)を読んで,どのような処理を行っているのかを確認したり,自分なりの変更を加えたりしたくなるのではないでしょうか。しかし,カーネル・ソースの量は膨大な上,C言語で書かれているので,コンピュータ内部やOS(オペレーティング・システム)の仕組みを理解したプログラマでないとなかなか読みこなせません。そのため,カーネルを読むための第一歩を踏み出せない人が数多くいることは事実です。 講座では,プログラマではないごく普通のLinuxユーザーが,カーネルをある程度自力で

    はじめてのカーネル・ソース 第1回 どうしたら読めるようになるのか:ITpro
  • OOM Killer

    OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保する,Linuxカーネルの仕組みです。OOM Killerは,空きメモリーが確保できないことによりシステム自体が停止するという最悪の事態を避けるために用意されています。 OOM Killerは,空きメモリーを十分確保でき,システム上損失のなるべく少ないプロセスを選んで,強制終了します。また,強制終了するプロセスの数がなるべく少なくなるようにしています。実際に,どのプロセスを強制終了するかは,カーネル内部のbadness()関数が決めます。 ただし,OOM Killerにより,システム上大切なプロセスが強制終了させられることもあります。システム・トラブルの原因に成り得ること

    OOM Killer
  • KernelHacking - Kernel Newbies Japan

    KernelHackingに関する日語の技術情報のページ。 ボランティア募集: このページの情報について追加してくださるボランティアを募集しています。 書籍情報 詳解 Linuxカーネル第3版 Dniel P.Bovet/Marco Cesati著 (オライリージャパン ISBN978-4-87311-313-5) Linux2.6 に対応 LINUXデバイスドライバ 第3版 Jonathan Corbet/Alessandro Rubini/Greg Kroah-Hartman著 (オライリージャパン ISBN4-87311-253-2) 英語版については Linux Device Drivers 3 online または LDD3 htmlから参照可能 Linuxカーネル クイックリファレンス Greg Kroah-Hartman 著 (オライリージャパン ISBN978-4-873