まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:top

CentOS などの Linux/UNIX 環境で top コマンドを使ってプロセスの様子を確認することは珍しくないと思いますが、その機能拡張版である htop コマンドを使ってみました。普通の(?)top コマンドではわからない情報も表示してくれて便利です。Mac 環境でも使えます。


RedHat/CentOS 系 OS であれば、導入は yum コマンドで一発ですが、EPEL リポジトリを有効にする必要があります。未導入の場合は最初に EPEL を導入しておきます。以下は CentOS 6 の場合のコマンド例です:
# rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm (64bit 環境の場合)
# rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm (32bit 環境の場合)

リポジトリの導入ができていれば、次のコマンドで htop のインストールもできます:
# yum install htop

シェルから "htop" で実行します:
# htop

こんな感じで起動します。テキストモードですが、画面は色分けされ、top と比べて見やすく表示されています。画面上部に CPU やメモリの様子がテキストグラフィックで表示されていて、これはこれでわかりやすくなっています:
2015032701



実はこの画面内ではカーソルキーが有効になっていて、カーソルキーの上下で特定のプロセスに移動し、F7/F8 でプロセスの優先度を変えたり、F9 で Kill したり、、といった操作もできます:
2015032702

 

F1 キーを押すとショートカットキーコマンドの一覧が表示されます:
2015032703


F5(t) でツリービューにして、+/- で展開/格納したり、といった表示も可能になるようです。試してみるとこんな感じ。カーソルがある行の情報だけが格納されています:
2015032704


F3 キーでプロセスの検索もできます。この図では "/sbin/rsys" まで検索して、カーソル行が rsyslogd のプロセスに移動している様子です:
2015032705


特定のユーザーのプロセスだけを表示する、といった操作も可能です。まず u キーを押して、ユーザーの一覧から目的のユーザーを選んで Enter 、です:
2015032706


インストールも簡単だし、シェル環境では入れておいて損のない、便利なツールだと思ってます。


 

Amazon EC2 インスタンスの負荷測定をどうやって行うべきか、という問題です。結論を先にいうと「EC2 インスタンスの場合は top コマンドではなく、CloudWatch を使うべき」ということになります。

きっかけは自分が先日ツイートしたこの現象に気付いたことでした:


EC2 で運用しているサーバーの CPU 負荷を測定すると、CloudWatch で測定した場合は80%超え(上図左)になってアラート出まくりなのに、直接ログインして top コマンドで測定するとせいぜい10%前後(上図右)になる、というものです。

なぜ測定方法によって負荷値が異なるのか? CPU 負荷の定義が違うのか? だとしたらどちらを信用すべきなのか、どちらかはそもそも信用してはいけないのか、・・・・

よくわからんなあ・・・ と思っていたのですが、ある日こんな情報を見つけました:
EC2 monitoring: the case of stolen CPU


簡単に言うと、「例えば CPU が 0.1 個割り当てられた仮想マシンでは、(topコマンドでの)CPU 負荷 = 10% の状態でその仮想マシンのCPU的には100%になっている」ということです。なので EC2 上の(Xen上の)仮想インスタンスを1台のマシンとみなして負荷を計測するのであれば CloudWatch を使うべき、ということになります。逆に言えばこの環境下での top コマンドの結果には注意が必要です。


上記ページには "If you’re an IBM cus­tomer with a pSeries frame these ques­tions aren’t entirely new to you"(IBM の pSeries の顧客であれば特別目新しいことではない) とも書かれてます。へぇ、AIX ってそうなんだ。知らなかったけどね・・・ :P


 

このページのトップヘ