はじめに
このドキュメントでは、StarOSシステムでのCPU/メモリ/ファイルの使用の基本と、問題が発生した場合のトラブルシューティング方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
リソース管理サブシステムは、システム内の各タスクに一連のリソース制限を割り当てます。各タスクのリソース使用量を監視し、制限内に収まっていることを確認します。タスクがその制限を超えた場合は、SyslogまたはSimple Network Management Protocol(SNMP)トラップを介してオペレータに通知します。このドキュメントでは、動作の仕組みと、さらにトラブルシューティングを行うために収集する必要があるログについて説明します。
基本情報は、show task resourcesコマンドラインインターフェイス(CLI)の出力で確認できます。
割り当てられたリソースの制限は、ユーザーが変更することはできません。
割り当てられるリソースの上限は、StarOSのバージョンによって異なります。
次に、システムに問題がある場合に発生するSNMPの例を示します。
Mon Aug 26 11:32:19 2013 Internal trap notification 1221 (MemoryOver) facility sessmgr instance 16 card 1 cpu 0 allocated 204800 used 220392
Mon Aug 26 11:32:29 2013 Internal trap notification 1222 (MemoryOverClear) facility sessmgr instance 16 card 1 cpu 0 allocated 1249280 used 219608
Fri Dec 20 13:52:20 2013 Internal trap notification 1217 (MemoryWarn) facility npudrv instance 401 card 5 cpu 0 allocated 112640 used 119588
Fri Dec 20 14:07:26 2013 Internal trap notification 1218 (MemoryWarnClear) facility cli instance 5011763 card 5 cpu 0 allocated 56320 used 46856
Wed Dec 25 12:24:16 2013 Internal trap notification 1220 (CPUOverClear) facility cli instance 5010294 card 5 cpu 0 allocated 600 used 272
Wed Dec 25 12:24:16 2013 Internal trap notification 1216 (CPUWarnClear) facility cli instance 5010294 card 5 cpu 0 allocated 600 used 272
Wed Dec 25 17:04:56 2013 Internal trap notification 1215 (CPUWarn) facility cli instance 5010317 card 5 cpu 0 allocated 600 used 595
Wed Dec 25 17:05:36 2013 Internal trap notification 1216 (CPUWarnClear) facility cli instance 5010317 card 5 cpu 0 allocated 600 used 220
CPU使用率の監視
CPUWarn SNMPトラップは、procletのcpu使用率が割り当て済みの90 %に達すると生成されます。
CPUWarnが生成されると、procletのcpu使用率が警告値から割り当てられた使用率の50 %を超えた場合にCPUOverが生成されます。
CPUWarnが生成される前に、procletのCPU使用率が割り当てられた使用率に達すると、CPUOverが生成されます。
使用率が割り当て済みの50 %に戻ると、CPUWarn/Overはクリアされます。
以下に例を挙げます。
ファシリティのシステム割り当てが60の場合、値が54に達すると、システムはSNMPトラップ(CPUWarn)を生成します。
ファシリティのシステム割り当ては60であるため、procletのCPU使用率が警告値から割り当てられたCPU使用率の50 %以上に達した場合、このシナリオではシステム到達値が84(54+30)になると、システムはSNMPトラップ(CPUOver)を生成します。
メモリ使用量の監視
MemoryWarnは、procletのメモリ使用量が割り当てに達すると生成されます。
MemoryOverは、procletのメモリ使用量が、割り当てられたメモリ+ 15 MB、または割り当ての2倍を超えると生成されます。
使用率が割り当ての95 %に戻ると、MemoryWarn/MemoryOverはクリアされます。
以下に例を挙げます。
ファシリティのシステム割り当てが60MBの場合、60MBを超える値に対してシステムはSNMPトラップMemoryWarnを生成します。
ファシリティのシステム割り当ては60 MBであるため、タスクメモリ使用率が75 MBに達すると、システムはSNMPトラップMemoryOverを生成します。
ファイル使用状況の監視
Filesは、開いているファイルの数、またはプロセスが使用しているファイル記述子を示します。
ファイルの使用状況に関するSNMPトラップは実装されていませんが、Over/Clear状態に関するロギングメッセージが生成されます。
オーバーログは、procletのファイル使用率が、割り当て済み使用率の10 %を超えると生成されます。
clear logは、procletのファイル使用率が割り当て済みの90%に戻ったときに生成されます。
2013-May-28+14:16:18.746 [resmgr 14517 warning] [8/0/4440 <rmmgr:80>
_resource_cpu.c:3558] [software internal system syslog] The task cli-8031369 is over its
open files limit. Allocated 2000, Using 2499
タスクのリソースの表示の状態
show task resources CLIの出力のStatusフィールドの基準は異なります。
次の図では、WARNはwarn、ALARMはoverステータスです。
(「トラブルシューティング」)
CPU使用率
システムがCPUに関連するSNMPトラップの生成を開始したら、アクティブな問題が発生している間に次の情報を収集します。
タスクのリソースの表示
任意のprocletがwarn/over状態になるかどうかを確認します。
タスクのリソースの最大値を表示する
現在の使用量ではなく最大使用量を確認する
CPUWarn/Overイベントがあるかどうかを確認します。
注:これは非表示/testコマンドです。StarOsでテストモードを有効にして開始する方法については、ドキュメントを参照してください。
このコマンドはサービスに影響を与えないため、実稼働環境で実行できます。
show profile card <カード番号> cpu <cpu番号> depth <値>
これは、いわゆるバックグラウンドプロファイラです。
バックグラウンドプロファイラは常に 実稼働環境でも、1秒の固定サンプリング期間で実行を参照。
どのPCがCPUリソースを消費しているか、カード/CPU/ファシリティ/インスタンスごとに把握できます。
デフォルト値の1ではなく深さを指定することをお勧めします(例: 4)。
メモリの使用
システムがメモリに関連するSNMPトラップの生成を開始したら、アクティブな問題発生時に次の情報を収集します。
タスクのリソースの表示
任意のprocletがwarn/over状態になるかどうかを確認します。
タスクのリソースの最大値を表示する
現在の使用量ではなく最大使用量を確認する
show snmp trap history
MemoryWarn/Overイベントがあるかどうかを確認します。
show logs
resmgrから警告またはエラーが報告されているかどうかを確認します。
注:これは非表示/testコマンドです。StarOsでテストモードを有効にして開始する方法については、ドキュメントを参照してください。
このコマンドはサービスに影響を与えないため、実稼働環境で実行できます。
show messenger proclet facility <name> instance <x> heap
Procletのヒープ使用量を確認する
注:これは非表示/testコマンドです。StarOsでテストモードを有効にして開始する方法については、ドキュメントを参照してください。
このコマンドはサービスに影響を与えないため、実稼働環境で実行できます。
show messenger proclet facility <name> instance <x> system heap
プロセスを含むシステムヒープ情報を確認する
ヒント:CPU関連コマンドの出力を10分ごとに複数取得し、4回出力してから、TACにサービスリクエストを送信します。
ファイルの使用
OSレベルでの実際のファイル制限は、StarOsでのファイル使用制限よりも高く設定されます。
タスクDiameter Proxy (diaproxy)の場合、OSレベルの上限は8192です。StarOSでファイルの上限が1000に設定されている間、プロセスは最大8192を消費できます。
asr5500:card3-cpu0# ps -ef | grep diam
root 5934 4555 0 Jul02 ? 00:07:52 diamproxy --readypipe 8 --limit_mode 8 --card_number 3 --cpu_number 0 --master_spc 3
asr5500:card3-cpu0# cat /proc/5934/limits | grep open
Max open files 8192 8192 files
[local]asr5500-2# show task resources facility diamproxy all
Friday July 11 10:05:54 JST 2014
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- --------- ------------- --------- ------------- ------
3/0 diamproxy 2 0.3% 90% 22.83M 250.0M 216 1000 -- -- - good
8/0 diamproxy 1 0.4% 90% 22.71M 250.0M 69 1000 -- -- - good
CPUレベルの制限もあります。確認してください。十分な空き容量があれば問題ありません。
[local]ASR5500# show cpu info card 1 cpu 0
Card 1, CPU 0:
Status : Active, Kernel Running, Tasks Running
Load Average : 0.26, 0.39, 0.44 (1.78 max)
Total Memory : 32768M (16384M node-0, 16384M node-1)
Kernel Uptime : 3D 22H 11M
Last Reading:
CPU Usage All : 0.1% user, 0.3% sys, 0.0% io, 0.0% irq, 99.6% idle
Node 0 : 0.1% user, 0.3% sys, 0.0% io, 0.0% irq, 99.5% idle
Node 1 : 0.1% user, 0.2% sys, 0.0% io, 0.0% irq, 99.7% idle
Processes / Tasks : 185 processes / 29 tasks
Network : 0.326 kpps rx, 0.912 mbps rx, 0.208 kpps tx, 3.485 mbps tx
File Usage : 1792 open files, 3279141 available
Memory Usage : 1619M 4.9% used (1209M 7.4% node-0, 409M 2.5% node-1)
使用可能なポートが256未満になると、次の警告メッセージが生成されます。
event 14516
user_resource_cpu_cpu_low_files(uint32 card, uint32 cpu, uint32 used, uint32 remain)
"The CPU %d/%d is running low on available open files. (%u used, %u remain)"
warning
software internal system critical-info