サーバー・システムにおける運用管理

2010年12月1日(水)
古賀 政純

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利用率を確認することができる(クリックで拡大)
日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています