オープンソース・ソフトウエアによるシステム管理、監視 1

SMPを制御しているAPIC


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%になっており、メモリー利用率が低いことを意味しています。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る