LoginSignup
1
2

More than 3 years have passed since last update.

OSの統計情報やコールスタックの取得・プロセスファイルシステムについて

Posted at

概要

サービスの運用にあたってサーバーやOSなどアプリケーションを動かす上での基本となる知識を深めていくシリーズとして、
今回はOSのプロセスファイルシステム、OS内部のI/Oの計測の注意とOS内部の統計情報の取得方法についてまとめました。

システムコールとI_O.png
【今回扱う対象の図】

システムコールを確認する方法

strace:現在どのシステムコールを実行しているのかを確認できる

スクリーンショット 2019-11-23 20.47.30.png

さらに、オプションとしてstrace - p PIDで実行中のプロセスが呼び出しているシステムコールを確認できる。

OSのI/O処理の計測についての注意

各レイヤーのI/O
- DBMS
- ライブラリ(及びシステムコール)の呼び出し(pread()やpwrite()など)
- ファイルシステム(UFSやNTFSなど)
- ファイルキャッシュ
- デバイスドライバー(SCSIやファイバーチャネルなど)
- ストレージ

OSのI/O性能情報を見る際にどこで計測された情報なのかということに注意する必要があります。
デバイスドライバーレベルでの性能情報を表示するOSmoあり、ファイルキャッシュで終了するI/Oの性能情報が含まれないものもあります。この場合はDBMSの性能情報とは異なった値になります。その場合はファイルキャッシュによる性能の違いが考えられます。

pstack
コールスタックを確認できる。

コールスタックを見ると現在処理中の箇所がわかるので処理の分析に役立ちます。例えば、アプリケーションやDBMSのあるプロセスが止まっているように見えた時はpstackを実行します。

gdb -p PID
デバッガでコールスタックを表示

プロセスファイルシステム

UNIX系OSのルートディレクトリの /procに位置し、現在のプロセスの状態を表すファイルが配置されています。現時点のプロセスに対応するディレクトリ構造になっています。物理ディスク上には存在せず、メモリ上のみの仮想的なファイルシステムです。

スクリーンショット 2019-11-23 21.30.33.png

/proc/PID/status: そのプロセスの各種状態(実行・スリープなどや仮想メモリの各種サイズなど)がわかる
スクリーンショット 2019-11-23 21.38.49.png

/proc/PID/task: スレッドに関する情報を確認できます

スクリーンショット 2019-11-23 21.33.00.png

/proc/meminfo: システムのメモリのサマリーが表示される
スクリーンショット 2019-11-23 21.38.27.png

このように統計情報をカーネルの外で見ることができます。
アプリケーションやDBMSなどはプロセスファイルシステムを使ってOSに関する情報やCPU使用量などを表示する仕組みもあります。
プロセスファイルシステムに関するコマンドをうまく使うことでトラブル時の分析に役立てることができます。

DBサーバーの定常監視で取得すべきOS情報

vmstat(sar)を使用し、以下の情報を取得します
CPU使用率、CPU待ちの「r」やI/Oniよるブロック「b」。
また、ページングの状況にも注意し、ディスク使用率・レスポンスがわかるコマンドを使って取得します。

取得間隔

コマンドの負荷に応じて取得間隔を変えます。

コマンド 間隔  負荷の程度 
vmstat 数秒 軽い
top 1分 高い

OSの性能情報を確認するときによく使うコマンド

コマンド 内容
vmstat OS全体の統計情報を表示する。CPU,メモリ、ディスクの使用率やI/O状況など。
sar vmstatと同様にOS全体の統計情報を表示する。過去の情報も確認できるがvmstatより表示される情報が少ないです。
iostat I/Oデバイスの統計情報を表示する。デバイス毎にレスポンスタイムや使用率などを確認したいときに使います。
netstat ネットワークの統計情報を表示するコマンド。ネットワークインターフェースやプロトコル毎に送信・受信したデータ量やルーティングテーブルを確認したいときなどに使います。
top 実行中のプロセス情報を一覧表示します。実行中の状態であるプロセスのみ確認できます。プロセス毎に消費しているCPU使用率や時間などを確認したい時に使います。
ps その瞬間に存在しているプロセス情報を一覧表示します。

まとめ

サーバーを運用するにあたってレスポンスを改善したいとなったケースで
どこがボトルネックになっているかを確認したいケースがあると思います。
その時に適切なコマンドを使えるように今回学んだ内容を活かしていきたいと思います。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2