Linuxカーネル Hacks

―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

[cover photo]
TOPICS
Hacks , Linux
発行年月日
PRINT LENGTH
564
ISBN
978-4-87311-501-6
FORMAT
PDF
Ebook
4,400円
Ebookを購入する

第一線で活躍するカーネルハッカーたちが贈る渾身の書下ろしHack集。カーネルハックの神髄と魅力を紹介します。カーネルの基本から、CPU/メモリ/プロセスなどのリソース管理、ファイルシステム、ネットワーク、仮想化、省電力、デバッグ、プロファイリング、トレースなど、扱うトピックは多岐に渡ります。カーネルチューニングの際、大いに役立つ実用的なHackを満載。カーネルハックの醍醐味が存分に味わえる一冊です。

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表

1刷正誤表

LinuxカーネルHacks 第1刷正誤表

2012年3月16日更新

位置
pxi
1行目
初心者の方は最初に 初心者の方は最初に
p87
下から
4行目
Fair Gropu Scheduling Fair Group Scheduling
p110
下から
9行目
物理メモリが2G、スワップが2Gで現在1GB消費している場合は、約3GBをさらに3GBの大きさの仮想空間割り当てが可能です。 物理メモリが2GB、スワップが2GBで現在1GB消費している場合は、約3GBの大きさの仮想空間割り当てが可能です。
p133
下から
2行目
trancate処理 truncate処理
p135
最終行
# mount -t ext4 /dev/DEV MOUNTPOINT # mount -t ext4 /dev/sdb1 /mnt
p141
14行目
session_write_kbyteは0にリセットされていることがわかります。 session_write_kbyteリセットされていることがわかります。
p149
下から
12行目
$ fio simple_read.fio $ fio fio_exam.fio
p161
9行目
CentOS5.4が提供するCBQ(Class Based Queueing)の設定を例に説明します。 CentOS 5.4を例にCBQ(Class Based Queueing)について説明します。
p173
図4-1
左下
(eth3) (eth1)
p177
下から
2行目
通信可能ですが、同じハブや 通信可能です同じハブや
p183
15行目
ハッシュ値を算出します。layer2+3はMACアドレスと ハッシュ値を算出します。layer3+4はMACアドレスと
p189
17行目
-lコマンドを実行します。 -lオプションを追加してコマンドを実行します。
p191
12行目
ncコマンドはUDPのパケットを受信しデータを表示するだけのプログラムです。 ncコマンドは受信したパケットデータを表示するだけのプログラムです。
p385
表7-10
表7-10 表7-10 IPMIウォッチドッグタイマのオプション
p387
8行目
ipmiサービスを起動して、IPMIモジュールを組み込みます。 (この1行を削除)
p387
図7-2
直前
以下を設定します。 以下を事前に定義します。
p392
5行目
CPC PC
p451
1行目
イベント発生直後に例外を発生させることで イベント発生直後の状態を保存してから例外が発生することで
p475
コード
3行目
[tracing] # echo 0 > tracing_off [tracing] # echo 0 > tracing_on
p483
一番上の
コード

[tracing] # cat › set_event
irq:irq_handler_entry
irq:irq_handler_exit
^D

[tracing] # cat ‹‹EOF › set_event
irq:irq_handler_entry
irq:irq_handler_exit
EOF

目次

目次
クレジット
監修者まえがき
はじめに

1章 カーネル入門
    1. Linuxカーネルを入手する
    2. Linuxカーネルをコンパイルする
    3. カーネルモジュールの作り方
    4. Gitを使う
    5. checkpatch.plでパッチの書式をチェックする
    6. localmodconfigでカーネルのコンパイル時間を短縮する

2章 リソース管理
    7. Cgroup、Namespace、Linuxコンテナ
    8. スケジューリングポリシー
    9. RT Group SchedulingとRT Throttling
    10. Fair Group Scheduling
    11. cpuset
    12. Memory Cgroupでメモリ使用量を制限する
    13. Block I/OコントローラでI/Oの優先度を設定する
    14. 仮想記憶サブシステムのチューニング
    15. ramzswap
    16. OOM Killerの動作と仕組み

3章 ファイルシステム
    17. ext4を利用する
    18. ext4への移行
    19. ext4のチューニング
    20. fioでI/Oのベンチマークを行う
    21. FUSE

4章 ネットワーク
    22. ネットワークの帯域制御
    23. TUN/TAPデバイス
    24. ブリッジデバイス
    25. VLAN
    26. bondingドライバ
    27. Network Drop Monitor

5章 仮想化
    28. Xenを使う
    29. KVMを使う
    30. DVDを使わずにOSをインストールする
    31. 仮想CPUの割り当て方法を変更して性能を上げる
    32. Extended Page Tables(EPT)を利用してゲストOSの性能を上げる
    33. IOMMUでゲストOSを高速化
    34. IOMMU+SR-IOVでゲストOSを高速化
    35. SR-IOVで帯域制御
    36. KSMでメモリを節約する
    37. ゲストOSのディスクをマウントする
    38. ゲストOSから仮想マシン環境を識別する
    39. ゲストOSをデバッグする

6章 省電力
    40. ACPI
    41. ACPI Sステートを利用する
    42. CPUによる省電力(C, Pステート)を利用する
    43. PCIデバイスのホットプラグ
    44. 仮想化環境下での省電力
    45. リモートからマシンの電源を管理する
    46. USBの電力管理
    47. ディスプレイの省電力
    48. ネットワークデバイスによる電力削減
    49. キーボードのLEDを消して省電力?
    50. PowerTOP
    51. ハードディスクの省電力

7章 デバッグ
    52. SysRqキー(Magic System Request Key)
    53. diskdumpを使ってカーネルクラッシュダンプを採取する
    54. Kdumpを使ってカーネルクラッシュダンプを採取する
    55. クラッシュテストを行う
    56. IPMIウォッチドッグタイマ
    57. NMIウォッチドッグタイマ
    58. soft lockup
    59. crashコマンド
    60. コアダンプフィルタ
    61. カーネルクラッシュダンプに含まれるユーザモードプロセスの
  プロセスコアダンプを作成する
    62. lockdepでシステムのデッドロックを調べる
    63. カーネルのメモリ解放漏れ検出

8章 プロファイリング、トレース
    64. perf toolsを使ったプロファイリング(その1)
    65. perf toolsを使ったプロファイリング(その2)
    66. カーネルやプロセスの様々なプロファイリングを行う
    67. カーネルの関数呼び出しをトレースする
    68. ftraceのプラグイントレーサ
    69. カーネルの動作イベントを記録する
    70. trace-cmdを使ったカーネルトレース
    71. 動的トレースイベントをカーネルに追加する
    72. SystemTapを使ったカーネルトレーシング
    73. SystemTapで対話的なプログラムを書く
    74. SystemTapのスクリプトを再利用する
    75. SystemTapを運用する

索引