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

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


SMPを制御しているAPIC

最近のサーバー・システムでは、マルチコアのCPUが複数ソケット搭載されており、1Uサーバーにおいて、CPUコア数が8、12、24というSMP(Symmetric Multi Processing)システムも珍しくなくなりました。

SMPと呼ばれる機構は、IntelやAMDプロセッサを搭載したx86サーバー以外のUNIXサーバーにおいて、古くから一般的に存在していました。現在では、x86サーバーにおいてマルチコアCPUが搭載されるようになり、仮想化やクラウド・コンピューティングのニーズも後押ししたことから、x86サーバーでのSMPシステムの利用が一般的になりました。

IntelやAMDプロセッサーを搭載したx86サーバーのSMPシステムは、APIC(Advanced Programmable Interrupt Controller)と呼ばれる割り込みコントローラや、ACPI(Advanced Configuration and Power Interface)と呼ばれる電源制御機構が制御を行っています。このため、APICやACPIのOSに関するパラメータを適切に設定しないと、SMPとして認識できないばかりか、システムの安定稼働にも影響を及ぼします。

例えば、FreeBSDにおいては、OSのAPICおよびACPIのパラメータを、/boot/device.histsファイルに記載することにより、APICやACPIを有効化または無効化することができます。以下は、FreeBSDにおけるOSのAPICとACPIのパラメータを有効化することで、OSからSMPとして認識させる設定例です。

# vi /boot/device.hists
…
hint.apic.0.disabled="0"
hint.acpi.0.disabled="0"
# reboot

/boot/device.hintsに、hint.apic.0.disabled="0"とhint.acpi.0.disabled="0"を記述することで、APICとACPIを有効にしています。このパラメータはOS起動時に読み込まれますので、パラメータを追加や変更した場合はFreeBSDを再起動させます。

図9: FreeBSDにおけるAPICの様子。dmesgコマンドで、APICとACPIの状況を確認できる(クリックで拡大)


APICやACPIをdisableにすると、SMPで認識せず、1CPUとして認識します。このため、システムのパフォーマンスが低下します。しかし、ACPIによる電源制御機能を切ることでシステム障害の切り分けを行う場合もあります。システム管理者は、APICとACPIを無効にする影響を熟知した上で運用を行う必要があります。通常は、APICを有効にしてSMPシステムとして運用しますが、OSが起動できない場合や追加コンポーネントの認識可否のトラブル・シューティングのための緊急の対応の場合は、その限りではありません。

サーバー環境におけるメモリー管理

近年、サーバーのECCメモリー・モジュールの利用は、大容量化が進んでいます。仮想化やクラウド・コンピューティングにおいて、ProLiantサーバーのようなIntelやAMDプロセッサを搭載したx86サーバーが広く利用されるようになった背景には、CPUのマルチコア化以外に、ECCメモリー・モジュールの大容量化が挙げられます。

LinuxやFreeBSD環境に限らず、OSが利用できる最大メモリー容量は、利用しているOSのアーキテクチャが32ビット版なのか64ビット版なのか、また4GB以上の壁を越えられるカーネルを使っているかどうかによって変わります。

近年、アプリケーションの対応状況から64ビット版OSを利用することが多くなり、4GBメモリーの壁を意識することはあまりなくなりました。しかし、レガシー・システムのアプリケーションの開発費用削減や旧システムのP2V移行などにより、やむなく32ビット版OSを利用することもあります。

そのような場合も含め、メモリーの管理では主に、OSのアーキテクチャ、メモリー容量、メモリー利用率の確認が必要になります。OSのアーキテクチャは、unameコマンド、メモリー容量はvmstatや/proc/meminfo、メモリー利用率についてはtopコマンドなどの利用が一般的です。

# uname -a
Linux dl360g7rhel60.jpn.linux.hp.com 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

# cat /proc/meminfo |grep Mem
MemTotal:       18389460 kB
MemFree:        17331228 kB

また、サーバーでは、ECCメモリーが搭載されているかどうかのチェックをしたい場合があります。そのような場合は、ベンダーから無料で提供されているhpasmcliなどの管理コマンドを利用することで、簡単に確認することができます。

図10: unameでアーキテクチャを確認し、/proc/meminfoでメモリー容量、使用量を確認している様子。また、ベンダー提供の管理コマンドによりメモリーがECC対応かどうかもあわせて確認している(クリックで拡大)


CPUの利用率と同様に、メモリー使用量を時系列で見たい場合があります。この場合にも、sarコマンドが有用です。sarコマンドでメモリー使用量を監視するには、-rオプションを付与します。ファイルに保存する場合は、-oオプションが利用できます。CPU利用率と同様にバイナリ・データで結果が保存されます。

# sar -r 1 -o /root/sar.mem.log

過去のメモリ使用量の状態を確認するには、sarコマンドに-fオプションで出力済みのバイナリ・ファイルを指定します。

# sar -f /root/sar.mem.log

図11: Red Hat Enterprise Linux 6に付属のsarコマンドにより、メモリーの空き容量や使用量、利用率の時系列データをファイルに保管しながらリアルタイムで監視を行っている様子(クリックで拡大)


上図の例では、%memusedの値が6.82%になっており、メモリー利用率が低いことを意味しています。

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター 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メルマガ会員のサービス内容を見る

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