シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel

IOS-XR: マルチコア CPU と CPU 使用率の関係

IOS-XR において、パフォーマンス限界や、S/W 不具合等で CPU 使用率の高騰が発生した際、CPU 使用率が 25% や 50% 前後で固定された状態が継続する場合があります。

この症状は、IOS-XR がマルチコア CPU をサポートしており、多くのモジュールでマルチコア CPU が使用されていることに起因します。
※マルチコア CPU の場合でも、状況によっては 100% の CPU 使用率(High CPU) になることがあります。


CPU 使用率の確認方法と例

コマンドの実行例

パターン1(負荷なしの例)

RP/0/RP0/CPU0:XR#show processes cpu | inc util
CPU utilization for one minute: 1%; five minutes: 1%; fifteen minutes: 1%


パターン2 (100% の負荷が発生した例)

RP/0/RP0/CPU0:XR#show processes cpu | inc util
CPU utilization for one minute: 100%; five minutes: 76%; fifteen minutes: 26%


パターン3 (50% の負荷が発生した例)

RP/0/RP0/CPU0:XR#show processes cpu | inc util
CPU utilization for one minute: 50%; five minutes: 50%; fifteen minutes: 34%


パターン4(25% の負荷が発生した例)

RP/0/RP0/CPU0:XR#show processes cpu | inc util
CPU utilization for one minute: 25%; five minutes: 25%; fifteen minutes: 22%

 

IOS-XR では、各プロセスの中にスレッドがあり、各スレッドが別の CPU コア上で動作しています。
以下の例では、4コア CPU の RP 上で動作する BGP プロセスの状況を show processes コマンドを使用して確認しています。TID の値から、 BGP プロセスの中に23個のスレッドが存在することが確認できます。CPU の値からは、各スレッドが 0~3 の 4 つのコアに振り分けられて動作していることが分かります。

BGP プロセスの詳細情報

コマンドの実行例

RP/0/RSP0/CPU0:ASR9K#show processes bgp detail
                  Job ID: 1049 << スレッドの名前を確認する際に使用します
                     PID: 573758
         Executable path: /disk0/iosxr-routing-4.3.1/0x100000/bin/bgp
<snip>

JID   TID CPU Stack pri state        TimeInState    HR:MM:SS:MSEC   NAME
1049   1    1  392K  10 Receive        0:00:12:0222    0:00:00:0347 bgp
1049   2    0  392K  10 Receive      359:12:28:0410    0:00:00:0000 bgp
1049   3    2  392K  10 Receive      359:12:28:0392    0:00:00:0000 bgp
1049   4    3  392K  10 Receive        0:00:03:0906    0:00:00:0017 bgp
1049   5    1  392K  10 Receive      359:12:18:0812    0:00:00:0000 bgp
1049   6    2  392K  10 Sigwaitinfo  359:12:19:0701    0:00:00:0000 bgp
1049   7    3  392K  10 Receive        0:01:49:0982    0:00:00:0002 bgp
1049   8    2  392K  10 Receive        0:00:58:0570    0:00:00:0607 bgp
1049   9    1  392K  10 Receive        0:00:49:0977    0:00:00:0006 bgp
1049   10   3  392K  10 Nanosleep      0:00:00:0567    0:00:00:0044 bgp
1049   11   3  392K  10 Receive        0:00:49:0977    0:00:00:0011 bgp
1049   12   3  392K  10 Receive        0:00:02:0636    0:00:43:0721 bgp
1049   13   3  392K  10 Receive        0:00:00:0600    0:00:44:0163 bgp
1049   14   2  392K  10 Receive        0:00:58:0557    0:00:00:0012 bgp
1049   15   1  392K  10 Receive        0:00:58:0564    0:00:00:0007 bgp
1049   16   3  392K  10 Receive        0:00:50:0013    0:00:00:0003 bgp
1049   17   1  392K  10 Receive        0:00:50:0004    0:00:00:0001 bgp
1049   18   3  392K  10 Receive        0:00:58:0120    0:00:00:0010 bgp
1049   19   3  392K  10 Receive        0:00:08:0833    0:00:21:0598 bgp
1049   20   2  392K  10 Receive      359:11:28:0520    0:00:00:0000 bgp
1049   21   2  392K  10 Receive        0:00:00:0805    0:00:00:0006 bgp
1049   22   1  392K  10 Receive        0:00:49:0978    0:00:00:0000 bgp
1049   23   2  392K  10 Receive      359:09:55:0658    0:00:00:0005 bgp

 

BGP プロセスの各スレッドの名前は show processes threadname <jid> にて確認できます。
※jid は show processes コマンドで確認できる Job Id を指定します。

BGP プロセスの各スレッドの名前

コマンドの実行例

RP/0/RSP0/CPU0:ASR9K#show processes bgp threadname 1049 << show processes bgp で確認した jid を指定

JID    TID  ThreadName      pri state      TimeInState     NAME
1049   1    bgp-io-control  10 Receive        0:00:06:0598 bgp
1049   2    cdm_evm_thread  10 Receive      359:21:47:0206 bgp
1049   3                    10 Receive      359:21:47:0188 bgp
1049   4    bgp-rpki        10 Receive        0:00:02:0590 bgp
1049   5    spp_nsr_client_conn_monitor 10 Receive      359:21:37:0608 bgp
1049   6                    10 Sigwaitinfo  359:21:38:0497 bgp
1049   7    bgp-label       10 Receive        0:01:08:0769 bgp
1049   8    bgp-mgmt        10 Receive        0:00:17:0357 bgp
1049   9    bgp-rib-upd-0   10 Receive        0:00:08:0764 bgp
1049   10   lspv_lib BGPv4  10 Nanosleep      0:00:04:0253 bgp
1049   11   bgp-rib-upd-1   10 Receive        0:00:08:0764 bgp
1049   12   bgp-io-read     10 Receive        0:00:01:0332 bgp
1049   13   bgp-io-write    10 Receive        0:00:01:0332 bgp
1049   14   bgp-router      10 Receive        0:00:17:0344 bgp
1049   15   bgp-import      10 Receive        0:00:17:0351 bgp
1049   16   bgp-upd-gen     10 Receive        0:00:08:0800 bgp
1049   17   bgp-sync-active 10 Receive        0:00:08:0791 bgp
1049   18   bgp-crit-event  10 Receive        0:00:16:0908 bgp
1049   19   bgp-event       10 Receive        0:00:27:0622 bgp
1049   20   bgp-mib-trap    10 Receive      359:20:47:0318 bgp
1049   21   bgp-io-ka       10 Receive        0:00:07:0483 bgp
1049   22   bgp-l2vpn-thr   10 Receive        0:00:08:0766 bgp
1049   23   async           10 Receive      359:19:14:0456 bgp

 

例として、BGP プロセス内の bgp-router スレッドが CPU リソースを 100% 消費したとします。

bgp-router スレッド は TID(Thread ID) 14 なので、show processes bgp detail から CPU コア2 で動作していることが分かります。この状況で show processes cpu にて CPU 使用率を確認した場合は以下のようになります。

BGP プロセスの CPU 使用率

コマンドの実行例

RP/0/RSP0/CPU0:ASR9K#show processes cpu

CPU utilization for one minute: 25%; five minutes: 16%; fifteen minutes: 3%

PID     1Min   5Min   15Min Process
<snip>
573758   25%    12%      2% bgp
<snip>

 

CPU 使用率は4つのコアの使用率を合計して計算する為、1つのコアで 100% 近いCPU 使用率になったとしても、この環境での CPU 使用率は 25% 程度となります。よって、マルチコアCPUの場合は、CPU 使用率を監視をしていたとしても High CPU 状態であるとには気づきにくいです。
※動作に問題はなくとも、25% や 50% の CPU 使用率が継続することで、問合せ頂くことがあります。

CPU のコア単位で CPU 使用率が確認できる ”run top_procs -D -i1" コマンドを使用すると、CPU コア2 のCPU リソースが 0 に近い(idle が少ない)ことが分かります。
※run コマンドは TAC から指示のあった場合以外は非サポートです。

CPU コア単位の CPU 使用率の確認

コマンドの実行例

RP/0/RSP0/CPU0:ASR9K#run top_procs -D -i1

node0_RSP0_CPU0: 328 procs, 4 cpus, 5.08 delta, 359:54:21 uptime

Memory: 8192 MB total, 6.303 GB free, sample time: Sat Jan 20 08:09:51 2014

cpu 0 idle: 99.30%, cpu 1 idle: 98.74%, cpu 2 idle: 0.56%, cpu 3 idle: 98.60%, total idle: 74.87%, kernel:  0.05%

<snip>

 

以上の理由で、IOS-XR でマルチコア CPU が搭載されたモジュールを使用されている場合、一つのプロセスが CPU 使用率 25% や 50% 前後で固定された状態が継続している場合は、CPU 全体の使用率が100% を継続していなくとも従来の High CPU 問題と同様にパフォーマンス限界や、S/W 不具合等の可能性があります。CPU 使用率について気になるようであれば TAC までお問い合わせください。


CRS-1/CRS-3/ASR9000 でサポートする RP と LC の CPU コア数については、下記ドキュメントに記載してあります。

IOS-XR: CRS-1/CRS-3/ASR9000 でサポートする RP/LC の CPU コア数
https://supportforums.cisco.com/ja/document/12067881

2251
閲覧回数
5
いいね!
0
コメント