SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』

Linux OSリソースのパフォーマンス分析(1) ~ OSリソースを取得してみよう

性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』 第5回


OSリソース情報を取得するときの注意点

ここまでに紹介した情報取得のコマンド群には、(特に商用運用中の本番環境で)実行する際にいくつか注意するべき点があります。

取得間隔は長すぎても短すぎてもダメ

先に紹介した取得コマンドは、いずれも10秒間隔を指定しています。この長さは、コマンド引数の「10」の部分やsleepの引数を変更すれば任意の間隔に変更可能です。 しかし、ことパフォーマンス解析の目的においては、10秒を推奨しています。というのも、これらのコマンドの出力結果は、いずれも取得間隔における平均値であるため、あまり長すぎると粒度が粗くなり解析に役立ちません。 商用での性能監視で、10分おきや1時間おきに取得しているケースがあるのですが、これは長期的なサイジングのためならばともかく、性能問題の解析には使えません。

かといって、あまり短すぎると、ログファイルへの出力量が大きくなり、ストレージへのI/O負荷が高くなるとともに、ログファイルがストレージを圧迫する危険があります。vmstatのように1回あたりに1行しか出力しないコマンドはまだよいのですが、mpstatのようにCPUコア別に出力したり、iostatのようにボリューム別に出力するコマンドでは、空き領域が十分であることの確認が必要です。

fflushで取り漏れをなくす

fflush()関数は、バッファ上のデータをフラッシュしてファイルに書き出します。これがないと、コマンドを停止したとき最後の数分間のデータが取り漏れることがあります。これは、awkが出力時にバッファリングを行っているためです。

strftimeでタイムスタンプを付与する

性能取得コマンドの中は、vmstatのようにデフォルトではタイムスタンプを出力しないものもあります。また、mpstatは出力したタイムスタンプに日付が含まれていないため、日またぎの場合にうまく集計できません。

日付と時刻を含むタイムスタンプを出力することで、出力結果のファイルをExcelなどに取り込んで簡単にグラフ化することができます。たとえば、mpstatの結果をグラフ化すると下図のようになります。

mpstatの結果をグラフ化
mpstatの結果をグラフ化

このように可視化すると、時系列での傾向を一望することができるため、スローダウンが起きていた状況と平常時の比較などが簡単に行えます。

なお、「nagios」や「cacti」のようなオープンソースの監視ツールを使って、このような可視化を行っているシステムもあると思いますが、性能解析時に必要な詳細情報まではグラフ化されないことが少なくありません。必要な情報をすぐにグラフ化することのできるフォーマットで出力しておくことが、問題解析のためには重要です。

次回は、それぞれのリソースについて、どのような観点から解析を行っていくかを解説したいと思います。お楽しみに。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』連載記事一覧

もっと読む

この記事の著者

若山 勝吾(株式会社NTTデータ 「まかせいのう」チーム)(ワカヤマ ショウゴ)

NTTデータの性能プロフェッショナルチーム「まかせいのう」の古参メンバ。12年前、大規模プロジェクトの性能課題に直面し、満身創痍になる日々を経験する。からくも性能改善できたときの喜びをきっかけに、現場の教訓とともに性能の道を歩むことを決意する。今では、50を超えるプロジェクトにて、お客様とともに性能...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9067 2016/02/24 02:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー