サーバー・システムにおける運用管理
CPUの管理手法
LinuxやFreeBSDにおけるCPUの管理は、主に、CPUの認識、CPU利用率、CPUの動作周波数の管理などです。CPUは、システム全体に大きくかかわる重要なコンポーネントであるため、システムの要件に応じた事前設定の基本を知っておく必要があります。まずは、OSの有無に限らず、CPUがハードウエアから正しい個数で認識されているかどうかを確認する必要があります。やり方は、サーバーに搭載されている管理用チップにログインし、システムが認識されているCPUの詳細を確認します。
以下の図は、1CPUあたり6コアのXeon CPU 2.66GHzを搭載したサーバーの様子を示したものです。ハードウエアとして、CPU数、コア数、ハイパースレッドの有無などが分かります。
図2: 認識されているCPU情報を確認する。上記では1CPU、6コアでHyper-Threading Technologyが有効になっており、12スレッドが有効なCPUが搭載されていることが確認できる(クリックで拡大) |
では、上図のCPUを搭載したサーバーにOSをインストールすると、CPUの状態がどのように見えるでしょうか。Red Hat Enterprise Linux 6をインストールし、less /proc/cpuinfoで確認してみると、以下のように表示されます。
図3: ハードウエアで認識されるCPU周波数(2667MHz)と現在の動作周波数(1596MHz)が異なっている点に注意する(クリックで拡大) |
/proc/cpuinfoにより、Red Hat Enterprise Linux 6では、現在のCPU動作周波数が1596MHzになっていることが分かります。これは、OSが持つ、CPU周波数を動的に変更する仕組みによって、周波数が抑えられて動作しているためです。この設定は、/etc/sysconfig/cpuspeedファイルのGOVERNORパラメータで設定することが可能です。
図4: Red Hat Enterprise Linux 6における/etc/sysconfig/cpuspeedファイルでのGOVERNORパラメータの設定例。パラメータとしてpowersave、performance、ondemandが設定可能である |
GOVERNORの値をpowersaveにすると省電力モードになり、performanceにすると最大周波数で動作します。ondemandにするとCPU周波数は必要に応じて変化するようになります。GOVERNORの値を変更したら、serviceコマンドでcpuspeedサービスを再起動させます。
# service cpuspeed restart
大量のサーバーを管理しなければならないデータ・センターにおいては、しばしば消費電力が気になる場合があります。省電力で運用したい場合はGOVERNERパラメータにpowersaveを設定します。一方、製造業における解析サーバーや研究施設での科学技術計算システムなどでは、CPUによる計算を最大限利用するため、GOVERNORはperformanceで設定される場合もあります。
認識されているCPUの個数に注意する
サーバーに搭載されているCPUソケット数、コア数、Hyper-Threading Technology設定の有無により、OSから見えるCPUの数も異なるため、注意が必要です。認識されているCPUの数を知るには、Red Hat Enterprise Linux 6の場合は、/proc/cpuinfoでも分かりますが、CPUの数とそのCPUのどのような状態を知りたいのかによって、駆使するコマンドが異なります。CPUの個数と現在の動作周波数を一度に知る場合は、/proc/cpuinfoを使うのが便利です。
# grep "MHz" /proc/cpuinfo
図5: Red Hat Enterprise Linux 6における/proc/cpuinfoの表示例。CPU個数と現在の動作周波数を一度に見ることができる |
CPUの個数とCPUそれぞれの動作周波数を見る場合には、さまざまな方法がありますが、topコマンドの利用が便利です。topコマンドは、CPU利用率の高いプロセスやプロセスIDを監視する場合に利用しますが、topコマンドのサブコマンドを利用すると、CPUコアごとのCPU利用率の様子をリアルタイムに見ることが可能です。
Red Hat Enterprise Linux 6で用意されているtopコマンドは、topコマンドが表示されているウインドウ内で、サブコマンドの「1」を入力すると、CPUコアとそのコアごとの利用率をリアルタイムで表示することが可能です。topコマンドは通常「&(アンパサンド)」を付与せずに、フォアグラウンドで実行します。
図6: Red Hat Enterprise Linux 6におけるtopコマンドでのCPU利用率の監視。サブコマンドを実行することで、各CPUの利用率を見ることができる(クリックで拡大) |
FreeBSDにおいてCPUの個数を把握するには、dmesgコマンドやtopコマンドを利用します。FreeBSDのtopコマンドでは、STATE値とTIME値の間に「C」値が表示でき、現在どのコアでどのようなプロセスが実行されているかを知ることができます。
dmesgコマンド | topコマンド |
図7: FreeBSDにおけるdmesgコマンド、topコマンドでのCPU個数の把握の様子(クリックで拡大) |
Red Hat Enterprise Linux 6とFreeBSDでのtopコマンドに、仕様の違いが見られることに注意してください。
CPU利用率の履歴を保存しておく
CPU利用率をリアルタイムで見たい場合には、topコマンドやvmstatコマンドなどが有用ですが、過去のCPU利用率をファイルに保存しておき、あとで閲覧したい場合があります。そのような場合には、sarコマンドが便利です。sarコマンドでCPU利用率を監視するには、-uオプションを付与し、ファイルに保存するには-oオプションを付与します。
# sar -u 1 -o /root/sar.cpu.log
出力したファイル、sar.cpu.logは、バイナリ形式で保存されます。保存したバイナリ形式を使って過去のCPU利用率を見るには、-fオプションを指定します。
# file /root/sar.cpu.log sar.cpu.log: data # sar -f /root/sar.cpu.log
図8: Red Hat Enterprise Linux 6におけるsarコマンドによるCPU利用率の監視。ファイルに保存できるため、サーバーの過去のCPU利用率を確認することができる(クリックで拡大) |