本書は、エンタープライズとクラウド環境を対象としたオペレーティングシステムとアプリケーションのパフォーマンス分析と向上について解説します。
主にLinuxベースのオペレーティングシステムに含まれるツールとその使用例を通じてシステムパフォーマンスを引き出す手法を説明します。システム評価のためのベンチマーク、キャパシティプランニング、ボトルネックの解消について解説しスケーラビリティを制限する要因を発見、分析し、解決する方法を学びます。
第2版では、perf、Ftrace、BPFの解説が加わり、Linuxとクラウドコンピューティングについての説明が充実しました。
システムのパフォーマンスを向上させ、コストを削減し、レイテンシの外れ値を減らすための方法を学ぶ本書はエンジニア必携の一冊です。
詳解 システム・パフォーマンス 第2版
Brendan Gregg 著、西脇 靖紘 監訳、長尾 高弘 訳
- TOPICS
- System/Network
- 発行年月日
- 2023年01月
- PRINT LENGTH
- 940
- ISBN
- 978-4-8144-0007-2
- 原書
- Systems Performance, 2nd Edition
- FORMAT
- Print PDF EPUB
目次
まえがき 1章 イントロダクション 1.1 システムパフォーマンス 1.2 職種 1.3 作業 1.4 分析の視点 1.5 パフォーマンスエンジニアリングの難しさと面白さ 1.5.1 主観的な性質 1.5.2 複雑さ 1.5.3 複数の原因の相互作用 1.5.4 複数のパフォーマンス障害の同時発生 1.6 レイテンシ 1.7 可観測性 1.7.1 カウンタ、統計量、指標 1.7.2 プロファイリング 1.7.3 トレーシング 1.8 実験 1.9 クラウドコンピューティング 1.10 メソドロジ 1.10.1 60秒で終わるLinuxパフォーマンス分析 1.11 ケーススタディ 1.11.1 ディスクの速度低下 1.11.2 ソフトウェア変更 1.11.3 より深く学ぶために 1.12 参考文献 2章 メソドロジ 2.1 用語 2.2 モデル 2.2.1 テスト対象システム(SUT) 2.2.2 キューイングシステム 2.3 コンセプト 2.3.1 レイテンシ 2.3.2 タイムスケール 2.3.3 トレードオフ 2.3.4 チューニング 2.3.5 適切性のレベル 2.3.6 いつ分析を止めるか 2.3.7 基準時の推奨値 2.3.8 負荷かアーキテクチャか 2.3.9 スケーラビリティ 2.3.10 パフォーマンス指標 2.3.11 使用率 2.3.12 飽和度 2.3.13 プロファイリング 2.3.14 キャッシング 2.3.15 Known-Unknowns 2.4 視点 2.4.1 リソース分析 2.4.2 ワークロード分析 2.5 メソドロジ 2.5.1 街灯のアンチメソッド 2.5.2 ランダム変更アンチメソッド 2.5.3 誰か他人のせいにするアンチメソッド 2.5.4 アドホックチェックリストメソッド 2.5.5 問題の記述 2.5.6 科学的メソッド 2.5.7 診断サイクル 2.5.8 ツールメソッド 2.5.9 USEメソッド 2.5.10 REDメソッド 2.5.11 ワークロードの特性の把握 2.5.12 ドリルダウン分析 2.5.13 レイテンシ分析 2.5.14 メソッドR 2.5.15 イベントトレーシング 2.5.16 ベースライン統計 2.5.17 静的パフォーマンスチューニング 2.5.18 キャッシュのチューニング 2.5.19 マイクロベンチマーキング 2.5.20 パフォーマンスマントラ 2.6 モデリング 2.6.1 エンタープライズシステムかクラウドシステムか 2.6.2 視覚的な究明 2.6.3 スケーラビリティに関するアムダールの法則 2.6.4 ユニバーサルスケーラビリティ法則 2.6.5 待ち行列理論 2.7 キャパシティプランニング 2.7.1 リソースの限界 2.7.2 要素分析 2.7.3 スケーラビリティを向上させる方法 2.8 統計量 2.8.1 パフォーマンスゲインの定量化 2.8.2 平均 2.8.3 標準偏差、パーセンタイル、中央値 2.8.4 変動係数 2.8.5 多峰分布 2.8.6 外れ値 2.9 モニタリング 2.9.1 時系列的なパターン 2.9.2 モニタリングプロダクト 2.9.3 ブート以降の集計 2.10 ビジュアライゼーション 2.10.1 折れ線グラフ 2.10.2 散布図 2.10.3 ヒートマップ 2.10.4 タイムライン図 2.10.5 表面プロット 2.10.6 ビジュアライゼーションツール 2.11 練習問題 2.12 参考文献 3章 オペレーティングシステム 3.1 用語 3.2 基礎知識 3.2.1 カーネル 3.2.2 カーネルモードとユーザーモード 3.2.3 システムコール 3.2.4 割り込み 3.2.5 クロックとアイドル状態 3.2.6 プロセス 3.2.7 スタック 3.2.8 仮想メモリ 3.2.9 スケジューラ 3.2.10 ファイルシステム 3.2.11 キャッシング 3.2.12 ネットワーキング 3.2.13 デバイスドライバ 3.2.14 マルチプロセッサ 3.2.15 プリエンプション 3.2.16 リソースコントロール 3.2.17 可観測性 3.3 カーネル 3.3.1 Unix 3.3.2 BSD 3.3.3 Solaris 3.4 Linux 3.4.1 Linuxが開発したカーネル機能 3.4.2 systemd 3.4.3 KPTI(メルトダウン対策) 3.4.4 拡張BPF 3.5 その他の項目 3.5.1 PGOカーネル 3.5.2 ユニカーネル 3.5.3 マイクロカーネルとハイブリッドカーネル 3.5.4 分散OS 3.6 カーネルの比較 3.7 練習問題 3.8 参考文献 3.8.1 本文で言及していない参考文献 4章 可観測性ツール 4.1 取り上げるツール 4.1.1 静的パフォーマンスツール 4.1.2 クライシスツール 4.2 ツールタイプ 4.2.1 固定カウンタ 4.2.2 プロファイリング 4.2.3 トレーシング 4.2.4 モニタリング 4.3 可観測性ツールの情報ソース 4.3.1 /proc 4.3.2 /sys 4.3.3 遅延アカウンティング 4.3.4 netlink 4.3.5 トレースポイント 4.3.6 kprobe 4.3.7 uprobe 4.3.8 USDT 4.3.9 ハードウェアカウンタ(PMC) 4.3.10 可観測性ツールのその他の情報ソース 4.4 sar 4.4.1 sar(1)でできること 4.4.2 sar(1)モニタリング 4.4.3 sar(1)のライブ出力 4.4.4 sar(1)のドキュメント 4.5 トレーシングツール 4.6 可観測性ツールに対する観察 4.7 練習問題 4.8 参考文献 5章 アプリケーション 5.1 アプリケーションの基礎知識 5.1.1 パフォーマンスの目標 5.1.2 よく実行されるコードの最適化 5.1.3 可観測性 5.1.4 ビッグオー記法 5.2 アプリケーションのパフォーマンス向上のためのテクニック 5.2.1 I/Oサイズの選択 5.2.2 キャッシング 5.2.3 バッファリング 5.2.4 ポーリング 5.2.5 並行実行と並列処理 5.2.6 ノンブロッキングI/O 5.2.7 プロセッサのバインド 5.2.8 パフォーマンスマントラ 5.3 プログラミング言語 5.3.1 コンパイル言語 5.3.2 インタープリタ言語 5.3.3 仮想マシン 5.3.4 ガベージコレクション 5.4 メソドロジ 5.4.1 CPUプロファイリング 5.4.2 off-CPU分析 5.4.3 システムコール分析 5.4.4 USEメソッド 5.4.5 スレッド状態の分析 5.4.6 ロック分析 5.4.7 静的パフォーマンスチューニング 5.4.8 分散トレーシング 5.5 可観測性ツール 5.5.1 perf 5.5.2 profile 5.5.3 offcputime 5.5.4 strace 5.5.5 execsnoop 5.5.6 syscount 5.5.7 bpftrace 5.6 注意点 5.6.1 不明なシンボル 5.6.2 不明なスタック 5.7 練習問題 5.8 参考文献 6章 CPU 6.1 用語 6.2 モデル 6.2.1 CPUのアーキテクチャ 6.2.2 CPUのメモリキャッシュ 6.2.3 CPUのランキュー 6.3 コンセプト 6.3.1 クロックスピード 6.3.2 命令 6.3.3 命令パイプライン 6.3.4 命令幅 6.3.5 命令サイズ 6.3.6 SMT 6.3.7 IPC、CPI 6.3.8 使用率 6.3.9 ユーザー時間/カーネル時間 6.3.10 飽和 6.3.11 プリエンプション 6.3.12 優先度の逆転 6.3.13 マルチプロセスとマルチスレッディング 6.3.14 ワードサイズ 6.3.15 コンパイラの最適化 6.4 アーキテクチャ 6.4.1 ハードウェア 6.4.2 ソフトウェア 6.5 メソドロジ 6.5.1 ツールメソッド 6.5.2 USEメソッド 6.5.3 ワークロードの特性の把握 6.5.4 プロファイリング 6.5.5 サイクル分析 6.5.6 パフォーマンスモニタリング 6.5.7 静的パフォーマンスチューニング 6.5.8 優先度のチューニング 6.5.9 リソースコントロール 6.5.10 CPUのバインド 6.5.11 マイクロベンチマーキング 6.6 可観測性ツール 6.6.1 uptime 6.6.2 vmstat 6.6.3 mpstat 6.6.4 sar 6.6.5 ps 6.6.6 top 6.6.7 pidstat 6.6.8 time、ptime 6.6.9 turbostat 6.6.10 showboost 6.6.11 pmcarch 6.6.12 tlbstat 6.6.13 perf 6.6.14 profile 6.6.15 cpudist 6.6.16 runqlat 6.6.17 runqlen 6.6.18 softirqs 6.6.19 hardirqs 6.6.20 bpftrace 6.6.21 その他のツール 6.7 ビジュアライゼーション 6.7.1 使用率ヒートマップ 6.7.2 秒未満オフセットヒートマップ 6.7.3 フレームグラフ 6.7.4 FlameScope 6.8 実験 6.8.1 アドホックテスト 6.8.2 SysBench 6.9 チューニング 6.9.1 コンパイラのオプション 6.9.2 優先度とクラスの操作 6.9.3 スケジューラオプション 6.9.4 スケーリングガバナー 6.9.5 電力状態 6.9.6 CPUへのバインド 6.9.7 排他的cpuset 6.9.8 リソースコントロール 6.9.9 セキュリティブートオプション 6.9.10 プロセッサオプション(BIOSチューニング) 6.10 練習問題 6.11 参考文献 7章 メモリ 7.1 用語 7.2 コンセプト 7.2.1 仮想メモリ 7.2.2 ページング 7.2.3 デマンドページング 7.2.4 オーバーコミット 7.2.5 プロセスのスワッピング 7.2.6 ファイルシステムキャッシュの使い方 7.2.7 使用率と飽和 7.2.8 アロケータ 7.2.9 共有メモリ 7.2.10 ワーキングセットサイズ 7.2.11 ワードサイズ 7.3 アーキテクチャ 7.3.1 ハードウェア 7.3.2 ソフトウェア 7.3.3 プロセスの仮想アドレス空間 7.4 メソドロジ 7.4.1 ツールメソッド 7.4.2 USEメソッド 7.4.3 使用形態の特性の把握 7.4.4 サイクル分析 7.4.5 パフォーマンスモニタリング 7.4.6 リーク検出 7.4.7 静的パフォーマンスチューニング 7.4.8 リソースコントロール 7.4.9 マイクロベンチマーキング 7.4.10 メモリシュリンク 7.5 可観測性ツール 7.5.1 vmstat 7.5.2 PSI 7.5.3 swapon 7.5.4 sar 7.5.5 slabtop 7.5.6 numastat 7.5.7 ps 7.5.8 top 7.5.9 pmap 7.5.10 perf 7.5.11 drsnoop 7.5.12 wss 7.5.13 bpftrace 7.5.14 その他のツール 7.6 チューニング 7.6.1 パラメータ 7.6.2 複数のページサイズ 7.6.3 アロケータ 7.6.4 NUMAバインディング 7.6.5 リソースコントロール 7.7 練習問題 7.8 参考文献 8章 ファイルシステム 8.1 用語 8.2 モデル 8.2.1 ファイルシステムインターフェイス 8.2.2 ファイルシステムキャッシュ 8.2.3 2次キャッシュ 8.3 コンセプト 8.3.1 ファイルシステムレイテンシ 8.3.2 キャッシング 8.3.3 ランダムI/Oとシーケンシャル I/O 8.3.4 プリフェッチ 8.3.5 先読み 8.3.6 ライトバックキャッシング 8.3.7 同期書き込み 8.3.8 Raw I/OとDirect I/O 8.3.9 ノンブロッキングI/O 8.3.10 メモリマップトファイル 8.3.11 メタデータ 8.3.12 論理I/Oと物理 I/O 8.3.13 オペレーションは平等ではない 8.3.14 特殊ファイルシステム 8.3.15 最終アクセス時刻 8.3.16 容量 8.4 アーキテクチャ 8.4.1 ファイルシステムI/Oスタック 8.4.2 VFS 8.4.3 ファイルシステムキャッシュ 8.4.4 ファイルシステムのパフォーマンスに関わるその他の機能と属性 8.4.5 ファイルシステムタイプ 8.4.6 ボリュームとプール 8.5 メソドロジ 8.5.1 ディスク分析 8.5.2 レイテンシ分析 8.5.3 ワークロードの特性の把握 8.5.4 パフォーマンスモニタリング 8.5.5 静的パフォーマンスチューニング 8.5.6 キャッシュのチューニング 8.5.7 ワークロードの分離 8.5.8 マイクロベンチマーキング 8.6 可観測性ツール 8.6.1 mount 8.6.2 free 8.6.3 top 8.6.4 vmstat 8.6.5 sar 8.6.6 slabtop 8.6.7 strace 8.6.8 fatrace 8.6.9 LatencyTOP 8.6.10 opensnoop 8.6.11 filetop 8.6.12 cachestat 8.6.13 ext4dist(xfs、zfs、btrfs、nfs) 8.6.14 ext4slower(xfs、zfs、btrfs、nfs) 8.6.15 bpftrace 8.6.16 その他のツール 8.6.17 ビジュアライゼーション 8.7 実験 8.7.1 アドホックテスト 8.7.2 マイクロベンチマークツール 8.7.3 キャッシュのフラッシュ 8.8 チューニング 8.8.1 アプリケーションからの呼び出し 8.8.2 ext4 8.8.3 ZFS 8.9 練習問題 8.10 参考文献 9章 ディスク 9.1 用語 9.2 モデル 9.2.1 単純ディスク 9.2.2 オンディスクキャッシュ 9.2.3 コントローラ 9.3 コンセプト 9.3.1 時間の計測 9.3.2 タイムスケール 9.3.3 キャッシング 9.3.4 ランダムI/Oとシーケンシャル I/O 9.3.5 読み書きの割合 9.3.6 I/Oサイズ 9.3.7 IOPSは等しくない 9.3.8 非データ転送ディスクコマンド 9.3.9 使用率 9.3.10 飽和度 9.3.11 I/O待ち時間 9.3.12 同期I/Oと非同期I/O 9.3.13 ディスクI/OとアプリケーションI/O 9.4 アーキテクチャ 9.4.1 ディスクのタイプ 9.4.2 インターフェイス 9.4.3 ストレージタイプ 9.4.4 OSのディスクI/Oスタック 9.5 メソドロジ 9.5.1 ツールメソッド 9.5.2 USEメソッド 9.5.3 パフォーマンスモニタリング 9.5.4 ワークロードの特性の把握 9.5.5 レイテンシ分析 9.5.6 静的パフォーマンスチューニング 9.5.7 キャッシュチューニング 9.5.8 リソースコントロール 9.5.9 マイクロベンチマーキング 9.5.10 スケーリング 9.6 可観測性ツール 9.6.1 iostat 9.6.2 sar 9.6.3 PSI 9.6.4 pidstat 9.6.5 perf 9.6.6 biolatency 9.6.7 biosnoop 9.6.8 iotop,biotop 9.6.9 biostacks 9.6.10 blktrace 9.6.11 bpftrace 9.6.12 MegaCli 9.6.13 smartctl 9.6.14 SCSIロギング 9.6.15 その他のツール 9.7 ビジュアライゼーション 9.7.1 折れ線グラフ 9.7.2 レイテンシ散布図 9.7.3 レイテンシヒートマップ 9.7.4 オフセットヒートマップ 9.7.5 使用率ヒートマップ 9.8 実験 9.8.1 アドホックテスト 9.8.2 カスタムロードジェネレータ 9.8.3 マイクロベンチマークツール 9.8.4 ランダム読み出しの例 9.8.5 ioping 9.8.6 fio 9.8.7 blkreplay 9.9 チューニング 9.9.1 OSのパラメータ 9.9.2 ディスクデバイスのパラメータ 9.9.3 ディスクコントローラのパラメータ 9.10 練習問題 9.11 参考文献 10章 ネットワーク 10.1 用語 10.2 モデル 10.2.1 ネットワークインターフェイス 10.2.2 コントローラ 10.2.3 プロトコルスタック 10.3 コンセプト 10.3.1 ネットワークとルーティング 10.3.2 プロトコル 10.3.3 カプセル化 10.3.4 パケットサイズ 10.3.5 レイテンシ 10.3.6 バッファリング 10.3.7 接続バックログ 10.3.8 インターフェイスのネゴシエーション 10.3.9 輻輳回避 10.3.10 使用率 10.3.11 ローカル接続 10.4 アーキテクチャ 10.4.1 プロトコル 10.4.2 ハードウェア 10.4.3 ソフトウェア 10.5 メソドロジ 10.5.1 ツールメソッド 10.5.2 USEメソッド 10.5.3 ワークロードの特性の把握 10.5.4 レイテンシ分析 10.5.5 パフォーマンスモニタリング 10.5.6 パケットスニッフィング 10.5.7 TCP分析 10.5.8 静的パフォーマンスチューニング 10.5.9 リソースコントロール 10.5.10 マイクロベンチマーキング 10.6 可観測性ツール 10.6.1 ss 10.6.2 ip 10.6.3 ifconfig 10.6.4 nstat 10.6.5 netstat 10.6.6 sar 10.6.7 nicstat 10.6.8 ethtool 10.6.9 tcplife 10.6.10 tcptop 10.6.11 tcpretrans 10.6.12 bpftrace 10.6.13 tcpdump 10.6.14 Wireshark 10.6.15 その他のツール 10.7 実験 10.7.1 ping 10.7.2 traceroute 10.7.3 pathchar 10.7.4 iperf 10.7.5 netperf 10.7.6 tc 10.7.7 その他のツール 10.8 チューニング 10.8.1 システム全体でのチューニング 10.8.2 ソケットオプション 10.8.3 構成オプション 10.9 練習問題 10.10 参考文献 11章 クラウドコンピューティング 11.1 基礎知識 11.1.1 インスタンスタイプ 11.1.2 スケーラブルなアーキテクチャ 11.1.3 キャパシティプランニング 11.1.4 ストレージ 11.1.5 マルチテナンシー 11.1.6 オーケストレーション(Kubernetes) 11.2 ハードウェア仮想化 11.2.1 実装 11.2.2 オーバーヘッド 11.2.3 リソースコントロール 11.2.4 可観測性 11.3 OS仮想化 11.3.1 実装 11.3.2 オーバーヘッド 11.3.3 リソースコントロール 11.3.4 可観測性 11.4 軽量仮想化 11.4.1 実装 11.4.2 オーバーヘッド 11.4.3 リソースコントロール 11.4.4 可観測性 11.5 その他のタイプ 11.6 比較 11.7 演習問題 11.8 参考文献 12章 ベンチマーキング 12.1 基礎知識 12.1.1 理由 12.1.2 効果的なベンチマーキング 12.1.3 まずいベンチマーキング 12.2 ベンチマーキングのタイプ 12.2.1 マイクロベンチマーキング 12.2.2 シミュレーション 12.2.3 リプレイ 12.2.4 産業標準 12.3 メソドロジ 12.3.1 パッシブベンチマーキング 12.3.2 アクティブベンチマーキング 12.3.3 CPUプロファイリング 12.3.4 USEメソッド 12.3.5 ワークロードの特性の把握 12.3.6 カスタムベンチマーク 12.3.7 ランプ負荷 12.3.8 サニティチェック 12.3.9 統計的分析 12.3.10 ベンチマーキングのチェックリスト 12.4 ベンチマークについて問うべきこと 12.5 練習問題 12.6 参考文献 13章 perf 13.1 サブコマンドの概要 13.2 1行プログラム 13.2.1 イベントのリストの表示 13.2.2 イベント数の計算 13.2.3 プロファイリング 13.2.4 静的トレーシング 13.2.5 動的トレーシング 13.2.6 レポート作成 13.3 perfイベント 13.4 ハードウェアイベント 13.4.1 周波数サンプリング 13.5 ソフトウェアイベント 13.6 トレースポイントイベント 13.7 プローブイベント 13.7.1 kprobe 13.7.2 uprobe 13.7.3 USDT 13.8 perf stat 13.8.1 オプション 13.8.2 インターバルごとの統計 13.8.3 CPU間のバランス 13.8.4 イベントフィルタ 13.8.5 シャドウ統計 13.9 perf record 13.9.1 オプション 13.9.2 CPUプロファイリング 13.9.3 スタックウォーク 13.10 perf report 13.10.1 TUI 13.10.2 STDIO 13.11 perf script 13.11.1 フレームグラフ 13.11.2 トレーススクリプト 13.12 perf trace 13.12.1 カーネルのバージョンによる違い 13.13 その他のコマンド 13.14 perfのドキュメント 13.15 参考文献 14章 Ftrace 14.1 機能の概要 14.2 tracefs(/sys) 14.2.1 tracefsの内容 14.3 Ftraceの関数プロファイラ 14.4 Ftraceの関数トレーサー 14.4.1 traceの使い方 14.4.2 trace_pipeの使い方 14.4.3 オプション 14.5 トレースポイント 14.5.1 フィルタ 14.5.2 トリガー 14.6 kprobe 14.6.1 イベントトレーシング 14.6.2 引数 14.6.3 戻り値 14.6.4 フィルタとトリガー 14.6.5 kprobeプロファイラ 14.7 uprobe 14.7.1 イベントトレーシング 14.7.2 引数と戻り値 14.7.3 フィルタとトリガー 14.7.4 uprobeプロファイラ 14.8 Ftraceの関数グラフトレーサー 14.8.1 コールグラフのトレーシング 14.8.2 オプション 14.9 Ftraceのハードウェアレイテンシ(hwlat)トレーサー 14.10 Ftrace histトリガー 14.10.1 単一キー 14.10.2 フィールド 14.10.3 修飾子 14.10.4 PIDフィルタ 14.10.5 複数キー 14.10.6 スタックトレースキー 14.10.7 合成イベント 14.11 trace-cmd 14.11.1 サブコマンドの概要 14.11.2 trace-cmdの1行プログラム 14.11.3 trace-cmdと perf(1) 14.11.4 trace-cmdによる関数グラフトレーシング 14.11.5 KernelShark 14.11.6 trace-cmdのドキュメント 14.12 perf ftrace 14.13 perf-tools 14.13.1 対象領域 14.13.2 単一目的ツール 14.13.3 多目的ツール 14.13.4 perf-toolsの1行プログラム 14.13.5 例 14.13.6 perf-toolsと BCC/BPF 14.13.7 ドキュメント 14.14 Ftraceのドキュメント 14.15 参考文献 15章 BPF 15.1 BCC 15.1.1 インストール 15.1.2 ツールの対象領域 15.1.3 単一目的ツール 15.1.4 多目的ツール 15.1.5 1行プログラム 15.1.6 多目的ツールの実行例 15.1.7 BCCとbpftrace 15.1.8 ドキュメント 15.2 bpftrace 15.2.1 インストール 15.2.2 ツール 15.2.3 1行プログラム 15.2.4 プログラミング 15.2.5 リファレンス 15.2.6 ドキュメント 15.3 参考文献 16章 ケーススタディ 16.1 予想外の成果 16.1.1 問題の記述 16.1.2 分析の戦略 16.1.3 統計の数値 16.1.4 構成 16.1.5 PMC 16.1.6 ソフトウェアイベント 16.1.7 トレーシング 16.1.8 結論 16.2 その他の情報 16.3 参考文献 付録A USEメソッド: Linux A.1 物理リソース A.1.1 全般的な注 A.2 ソフトウェアリソース A.3 参考文献 付録B sarのまとめ 付録C bpftrace1行プログラム C.1 CPU C.2 メモリ C.3 ファイルシステム C.4 ディスク C.5 ネットワーキング 付録D 練習問題の解答 D.1 2章メソドロジ D.2 3章オペレーティングシステム D.3 6章 CPU D.4 7章メモリ D.5 8章ファイルシステム D.6 9章ディスク D.7 11章クラウドコンピューティング 付録E システムパフォーマンス関連の著名人リスト E.1 参考文献 付録F 用語集 索引