소개
이 문서에서는 4300 Series 제품군의 ISR(Integrated Service Router)에서 CPU(Central Process Unit) 사용량을 읽는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
사용되는 구성 요소
이 문서의 정보는 하드웨어 및 소프트웨어 버전을 기반으로 합니다.
- ISR4321/K9
- ISR4331/K9
- ISR4351/K9
- 03.16.01a.S // 15.5(3)S1a
- 03.16.04b.S // 15.5(3)S4b
- 16.9.7
- 16.12.4
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
아키텍처
Cisco ISR 4000 Series 플랫폼은 Cisco IOS XE를 실행합니다. 분산 소프트웨어 아키텍처는 Linux 커널을 실행하며 Cisco IOS®는 여러 Linux 프로세스 중 하나로 실행됩니다. Cisco IOS는 데몬으로 실행되며 이를 Cisco IOS-Daemon(IOSd)이라고 합니다.
Cisco IOSd의 CPU 사용량
IOSd에서 CPU 사용량을 모니터링하려면 show process cpu 명령을 실행합니다.
#show process cpu
CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 0%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
1 2 8 250 0.00% 0.00% 0.00% 0 Chunk Manager
2 5 18 277 0.07% 0.00% 0.00% 0 Load Meter
3 0 2 0 0.00% 0.00% 0.00% 0 DiagCard4/-1
4 0 1 0 0.00% 0.00% 0.00% 0 Retransmission o
5 0 1 0 0.00% 0.00% 0.00% 0 IPC ISSU Dispatc
출력에 CPU 사용량에 대한 두 개의 값이 표시됩니다. 첫 번째 값은 총 CPU 사용률이고 두 번째 값은 IOSd로 전송된 인터럽트에 의한 CPU 양입니다.
총 CPU 양과 인터럽트에 의한 CPU 양의 차이는 프로세스에서 사용한 CPU 값입니다. 확증적으로 마지막 5초 동안의 모든 프로세스 사용량을 추가하려면
- 프로세스의 CPU 소비량 = 1% - 0% = 1% = 명령에 나열된 모든 프로세스 CPU 소비량
상단의 CPU를 가장 많이 사용하는 프로세스를 표시하려면 show process cpu sorted 명령을 실행합니다.
#show process cpu sorted
CPU utilization for five seconds: 1%/0%; one minute: 0%; five minutes: 0%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
64 103 10 10300 0.33% 0.02% 0.00% 0 Licensing Auto U
83 26 231 112 0.27% 0.00% 0.00% 0 PuntInject Keepa
235 555 48176 11 0.11% 0.09% 0.07% 0 Inline Power
1 2 8 250 0.00% 0.00% 0.00% 0 Chunk Manager
참고: 모든 프로세스를 추가하면 부동 소수점 값이 될 수 있습니다. IOSd는 결과를 다음 정수로 반올림합니다.
트래픽별 CPU 사용량
트래픽을 전달하기 위해 ISR4300 제품군 설계는 QFP(QuantumFlow Processor)라는 요소를 통해 이루어집니다.
주의: QFP는 ASR1K에서 하나 또는 여러 개의 물리적 칩으로, ISR4400에서는 Cavium Octeon 코프로세서와 동일한 기능을, ISR4300에서는 주 Intel CPU의 특정 코어에서 수행됩니다. ISR4300 제품군의 QFP는 패킷을 전달하는 소프트웨어라고 생각할 수 있습니다.
트래픽에서 소비한 CPU의 양을 확인하려면 show platform hardware qfp active datapath utilization 명령을 실행할 수 있습니다.
#show platform hardware qfp active datapath utilization
CPP 0: Subdev 0 5 secs 1 min 5 min 60 min
Input: Priority (pps) 0 0 0 0
(bps) 0 0 0 0
Non-Priority (pps) 3 2 2 1
(bps) 1448 992 992 568
Total (pps) 3 2 2 1
(bps) 1448 992 992 568
Output: Priority (pps) 0 0 0 0
(bps) 0 0 0 0
Non-Priority (pps) 3 2 2 1
(bps) 12216 8024 8024 4576
Total (pps) 3 2 2 1
(bps) 12216 8024 8024 4576
Processing: Load (pct) 0 0 0 1
이 명령은 우선순위 및 비우선순위 패킷에 대한 입력 및 출력 CPU 사용량을 나열하고, 정보는 PPS(packets per second) 및 BPS(bits per second)와 함께 표시되며, 마지막 줄에는 PCT(packet forward) 값으로 인한 총 CPU 로드 양이 표시됩니다.
설치된 CPU 코어
ISR4300 제품군에는 모델에 따라 설치된 다른 CPU 코어 양이 있습니다. 디바이스에 설치된 코어 수를 확인하기 위해 show processes cpu platform 명령을 실행합니다.
#show processes cpu platform
CPU utilization for five seconds: 30%, one minute: 29%, five minutes: 29%
Core 0: CPU utilization for five seconds: 13%, one minute: 13%, five minutes: 13%
Core 1: CPU utilization for five seconds: 2%, one minute: 3%, five minutes: 3%
Core 2: CPU utilization for five seconds: 0%, one minute: 0%, five minutes: 0%
Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99%
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
1 0 0% 0% 0% S 1863680 init
2 0 0% 0% 0% S 0 kthreadd
또는 show platform software status control-processor 명령을 실행합니다.
#show platform software status control-processor
<output omitted>
Per-core Statistics
CPU0: CPU Utilization (percentage of time spent)
User: 4.80, System: 10.30, Nice: 0.00, Idle: 84.50
IRQ: 0.40, SIRQ: 0.00, IOwait: 0.00
CPU1: CPU Utilization (percentage of time spent)
User: 2.00, System: 3.40, Nice: 0.00, Idle: 94.59
IRQ: 0.00, SIRQ: 0.00, IOwait: 0.00
CPU2: CPU Utilization (percentage of time spent)
User: 0.50, System: 0.00, Nice: 0.00, Idle: 99.49
IRQ: 0.00, SIRQ: 0.00, IOwait: 0.00
CPU3: CPU Utilization (percentage of time spent)
User: 24.72, System: 75.27, Nice: 0.00, Idle: 0.00
IRQ: 0.00, SIRQ: 0.00, IOwait: 0.00
반면, show platform software status control-processor brief 명령을 실행하면 다음 명령 중 하나에 설치된 코어의 양이 표시됩니다.
#show platform software status control-processor brief
<output omitted>
CPU Utilization
Slot CPU User System Nice Idle IRQ SIRQ IOwait
RP0 0 4.30 9.80 0.00 85.90 0.00 0.00 0.00
1 0.79 0.99 0.00 98.20 0.00 0.00 0.00
2 0.50 0.00 0.00 99.50 0.00 0.00 0.00
3 24.60 75.40 0.00 0.00 0.00 0.00 0.00
CPU 코어 분포
ISR4300 제품군의 설계로 패킷 프로세스에 사용되는 특정 코어가 생성됩니다. 코어 4~7은 ISR4331 및 4351에서 패킷 프로세스에 예약되며, 코어 2와 3은 ISR4321에 사용됩니다.
Cisco IOS XE 버전 16.5.x까지 성능 상의 이유로 포함되기 전까지, HQF(Hierarchical Queue Framework)는 항상 스레드가 핫 스핀되며 시스템의 어떤 컨피그레이션이나 시스템을 통과하는 트래픽의 양에 관계없이 높은 CPU 사용률로 실행됩니다. ISR4300 플랫폼에서는 QFP 소프트웨어가 주 CPU에서 실행되므로 하나 이상의 코어에서 CPU 사용률이 높은 것으로 나타날 수 있습니다.
그러나 Cisco IOS XE 버전 16.6.x 이후에 포함된 이러한 플랫폼에서는 스레드를 핫 스핀하지 않도록 변경이 구현되었습니다. 이 경우 CPU 사용률이 코어를 통해 더 분산됩니다.
hot-spin 사용량을 표시하려면 Cisco IOS XE 16.6.x 이전에 show processes cpu platform sorted 명령을 실행합니다.
#show processes cpu platform sorted
CPU utilization for five seconds: 28%, one minute: 29%, five minutes: 29%
Core 0: CPU utilization for five seconds: 12%, one minute: 13%, five minutes: 14%
Core 1: CPU utilization for five seconds: 2%, one minute: 3%, five minutes: 3%
Core 2: CPU utilization for five seconds: 0%, one minute: 0%, five minutes: 0%
Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
2541 1955 99% 99% 99% S 1073807360 qfp-ucode-utah <<< high CPU process
1551 929 7% 7% 7% S 2038525952 fman_fp_image
8코어 아키텍처에서도 Cisco IOS XE 16.6.x 이전에 핫 스핀에 대한 다른 코어와 함께 동일한 결과를 볼 수 있습니다.
#show processes cpu platform sorted
CPU utilization for five seconds: 15%, one minute: 14%, five minutes: 15%
Core 0: CPU utilization for five seconds: 6%, one minute: 4%, five minutes: 8%
Core 1: CPU utilization for five seconds: 1%, one minute: 0%, five minutes: 2%
Core 2: CPU utilization for five seconds: 9%, one minute: 10%, five minutes: 7%
Core 3: CPU utilization for five seconds: 1%, one minute: 2%, five minutes: 1%
Core 4: CPU utilization for five seconds: 1%, one minute: 1%, five minutes: 1%
Core 5: CPU utilization for five seconds: 0%, one minute: 0%, five minutes: 0%
Core 6: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin
Core 7: CPU utilization for five seconds: 0%, one minute: 0%, five minutes: 0%
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
3432 2779 99% 99% 99% S 1086341120 qfp-ucode-utah <<< high CPU process
2612 1893 7% 7% 7% S 2038697984 fman_fp_image
26114 25132 4% 5% 5% R 42803200 hman
Cisco IOS XE 16.6.x 이후에 포함되지만 코어 2와 코어 3 간에 로드 분배가 있음을 확인할 수 있습니다.
------------------ show process cpu platform sorted ------------------
CPU utilization for five seconds: 31%, one minute: 32%, five minutes: 29%
Core 0: CPU utilization for five seconds: 3%, one minute: 3%, five minutes: 3%
Core 1: CPU utilization for five seconds: 3%, one minute: 2%, five minutes: 2%
Core 2: CPU utilization for five seconds: 39%, one minute: 41%, five minutes: 34% <<< load distributed
Core 3: CPU utilization for five seconds: 84%, one minute: 83%, five minutes: 79% <<< load distributed
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
26939 26344 127% 126% 116% S 1195311104 qfp-ucode-utah <<< high CPU process
Cisco IOS XE 16.6.x 이후에 이전 출력과 동일한 결과가 적용되지만 코어 4~7의 경우
------------------ show process cpu platform sorted ------------------
CPU utilization for five seconds: 30%, one minute: 24%, five minutes: 27%
Core 0: CPU utilization for five seconds: 41%, one minute: 13%, five minutes: 13%
Core 1: CPU utilization for five seconds: 23%, one minute: 11%, five minutes: 13%
Core 2: CPU utilization for five seconds: 19%, one minute: 10%, five minutes: 12%
Core 3: CPU utilization for five seconds: 38%, one minute: 12%, five minutes: 12%
Core 4: CPU utilization for five seconds: 28%, one minute: 26%, five minutes: 28% <<< load distributed
Core 5: CPU utilization for five seconds: 53%, one minute: 40%, five minutes: 37% <<< load distributed
Core 6: CPU utilization for five seconds: 18%, one minute: 16%, five minutes: 17% <<< load distributed
Core 7: CPU utilization for five seconds: 93%, one minute: 81%, five minutes: 81% <<< load distributed
Pid PPid 5Sec 1Min 5Min Status Size Name
--------------------------------------------------------------------------------
26049 25462 164% 165% 170% S 394128 qfp-ucode-utah <<< high CPU process
주의: 코어 CPU 사용량에 문제가 있다고 생각되면 TAC(Technical Assistance Center) 케이스를 열어 지원을 받고 디바이스 안정성을 확인합니다.
CPU 모니터링에 대한 모범 사례
데이터 경로 사용률 또는 IOSd 사용률에 특정 명령을 사용하는 것이 가장 좋으며, core display 명령의 결과는 오탐(false positive) 알림을 초래할 수 있습니다.
데이터 경로 사용률을 모니터링하는 명령은 다음과 같습니다.
- 플랫폼 하드웨어 qfp 활성 데이터 경로 사용률 표시
IOSd 사용을 모니터링하는 명령은 다음과 같습니다.
다음 OID(Object Identifier)를 사용하여 SNMP(Simple Network Management Protocol)로 IOSd CPU 사용량을 모니터링합니다.
- busyPer = 최근 5초 동안의 IOSd CPU 사용 비율
- avgBusy1 = IOSd 1분, CPU 사용률 이동 평균의 기하급수적으로 감소됨
- avgBusy5 = IOSd 5분 CPU 사용 중 백분율 이동 평균