第5回 PDツールでシステムの内部情報に迫れ【前編】:障害発生時の金科玉条(2/2 ページ)
PDを行う際に心強い味方となってくれるのがさまざまなツール類だ。ツールを利用することで、ログや設定ファイルからだけでは分からないシステムの内部情報についても知ることができる。そこで今回は、過負荷状態となったときOSの内部ではどのような動作が行われているのか、幾つかのツールを使用して探ってみよう。
パフォーマンス劣化問題をシミュレートする
さて、今回はPDにおけるツールの利用方法を理解してもらうため、簡単なシミュレーションを行ってみたいと思う。このシミュレーションで「CPUとメモリに負荷をかけた場合にシステムはどのような挙動を起こすのか」ということを体験していただきたい。
まず、CPUおよびメモリに負荷をかけるツールを用意する。CPUとメモリに負荷がかかればどのようなものでも良いが、今回はリスト1のような、簡単な自作サンプルプログラムを使用した。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このプログラムは引数で指定された数だけの子プロセスを生成し、自身と各子プロセスが大きさBUF_SIZEのメモリ領域をMAX_INDEX回割り当てて、そのメモリ領域にゼロを入れる、といった処理を繰り返すプログラムだ。この例ではBUF_SIZEが1Mバイト、MAX_INDEXが10であるため、コマンドの引数に20を渡すと親プロセスと20個の子プロセス、計21個のプロセスがそれぞれ10Mバイト、合計で210Mバイトのメモリを配列として確保し、強制終了させるまでその配列にゼロを埋める処理を行ってCPUを消費し続ける、という動作を行う。このプログラムを次のようにコンパイルし、swaptestを作成する。
$ gcc -o swaptest swaptest.c
また、このプログラムの実行に当たってシステムの挙動を分かりやすくするため、システム全体で使用するメモリサイズを256Mバイトに、CPU数を1に指定した。これはLinux起動時に「mem=256M」と「maxcpus=1」をカーネルパラメータとして与えれば良い。
プログラムの実行
さて、それではこのプログラムを実行してみよう。今回はswaptestプログラムを2つ、段階的に実行することでシステムの挙動の変化を観察する。与える引数は環境によって異なると思うが、今回の例では引数を12とするとコンソール入力やsshセッションに体感できるほどの遅延が発生した。
さて、この「遅延」という現象は、実際には何が原因で発生しているのだろうか? PDを行ってみよう。
コンソールの遅延問題をPDする
PDの手順としては第1回でも解説したとおり、
- 状況把握
- 情報収集
- データ分析
- 解決を図る
というのが一般的だ。それらを踏まえ、今回のシミュレーションを行っていこう。
ステップ1 構成情報の確認
PDに必要な構成情報を実行例1のように取得する。このシミュレーションのテーマは「プログラムによる負荷がシステムに与える影響の観察」であるため、詳細なハードウェアの構成情報などは取得していない。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ステップ2 データの取得
次にシステムの稼働情報を取得するわけだが、プログラムの実行によってシステムの動作が不安定になることは分かっているため、投入前と後のデータを取得して比較を行うことにする。取得するデータは仮想メモリ状況、I/O状況、プロセスの使用状況の3つだ。これらの取得は実行例2のように行う。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
準備が整ったら実行例3のようにプログラムを実行する。これで現象発生中のデータが取得できるはずだ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
さて、ここまでで現象発生中のデータが取得できた。次回では、このデータを使い、ステータスの解釈やデータ分析方法に足を踏み入れていこう。
本記事は、オープンソースマガジン2006年2月号「Linux PD−問題判別脳力養成道場」を再構成したものです。
関連記事
- 連載第1回:PD思考法の基礎と情報収集(その1)連載第1回:PD思考法の基礎と情報収集(その1)
Linux環境で問題が発生した場合、管理者がするべきことは「その原因がどこにあるか」の正確な把握である。今回は、発生した問題に対し原因がどこにあるかを判別するための基本的な考え方と、問題判別に必要な情報収集の基礎について解説しよう。 - 連載第2回:PD思考法の基礎と情報収集(その2)連載第2回:PD思考法の基礎と情報収集(その2)
Linux環境で問題が発生した場合、管理者がするべきことは「その原因がどこにあるか」の正確な把握である。今回は、発生した問題に対し原因がどこにあるかを判別するための基本的な考え方と、問題判別に必要な情報収集の基礎について解説しよう。 - 連載第3回:ハードウェアかOSか、それが問題だ連載第3回:ハードウェアかOSか、それが問題だ
I/O関連のトラブルやカーネルパニックなどの原因にハードウェアがかかわっているのは多々あることだ。しかし、実際にそのような状況に直面した場合、どのように原因を探れば良いだろうか。今回から2回に分けて、PDに必要なハードウェア関連情報の収集方法について解説しよう。 - 連載第4回:ハードウェアかOSか、それが問題だ――ハードウェアRAIDを監視する
障害発生時にPDに必要なハードウェア関連情報の収集方法を解説する本稿。今回は、ハードウェアRAIDの監視について解説する。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.