이 문서에서는 인터럽트로 인해 CPU 사용률이 높은 이유를 설명하고 문제 해결 팁 및 지침을 제공합니다.
이 문서에 대한 특정 요건이 없습니다.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
인터럽트 레벨의 높은 CPU 사용률은 주로 인터럽트 레벨에서 처리되는 패킷에 의해 발생합니다. 인터럽트는 라우터의 콘솔 또는 보조 포트에서 문자가 출력될 때마다 생성됩니다.
UART(Universal Asynchronous Receiver/Transmitter)는 라우터의 처리 속도에 비해 속도가 느리므로 콘솔 또는 보조 인터럽트가 라우터의 CPU 사용률을 높일 수 있습니다(라우터에 많은 수의 tty 라인이 사용되지 않는 경우).
인터럽트로 인해 CPU 사용률이 높은 이유는 다음과 같습니다.
이 잠재적 문제를 해결하려면 다음을 확인하십시오.
라우터에서 Cisco Express Forwarding을 실행 중인지 확인:
show ip cef summary 명령을 실행하여 Cisco Express Forwarding이 활성화되고 작동하는지 확인합니다.
Cisco Express Forwarding이 모든 인터페이스에서 스위칭 경로로 활성화되어 있는지 확인합니다. show cef interface 및 show ip interface 출력에서 이를 볼 수 있습니다. Cisco Express Forwarding이 구성되었지만 인터페이스에서 활성화되지 않은 경우, 이는 인터페이스 캡슐화가 Cisco Express Forwarding에서 지원되지 않음을 의미합니다. Cisco Express Forwarding이 작동 중인지, 즉 show cef not-cef-switched(show cef not-cef-switched)를 통해 Cisco Express Forwarding을 사용하여 라우터를 통해 패킷이 실제로 스위칭되는지 확인합니다.
show cef drop 명령 및 show interfaces switching 명령(캐시 실패를 찾는 데 사용할 수 있는 숨겨진 명령)을 사용하여 Cisco Express Forwarding에서 패킷을 삭제하지 않는지 확인합니다. 이 경우 CEF 문제 해결 페이지를 참조하십시오.
인터페이스 중 긴 액세스 목록이 구성되어 있는지 확인합니다.
일반적으로 10개 이상의 행이 있는 액세스 목록은 긴 것으로 간주됩니다.
긴 액세스 목록을 반복적으로 살펴보는 것은 CPU가 매우 많이 사용됩니다. NetFlow 스위칭에서 플로우가 이미 캐시에 있는 경우 액세스 목록을 더 이상 확인할 필요가 없습니다. 이 경우 NetFlow 스위칭이 유용할 것입니다. ip route-cache flow 명령을 실행하여 NetFlow 전환을 활성화할 수 있습니다.
Cisco Express Forwarding과 NetFlow가 모두 인터페이스에 구성된 경우 Cisco Express Forwarding을 사용하여 스위칭 결정을 내릴 수 있습니다.
NetFlow 스위칭이 라우터에 구성되어 있는지 확인합니다.
show ip cache flow 명령을 실행하여 통계를 확인합니다. 초당 새 플로우 수를 확인합니다.
Cisco Express Forwarding이 활성화되지 않은 경우 Cisco Express Forwarding을 활성화하여 스위칭 결정을 가속화합니다.
긴 액세스 목록이 없는 경우 NetFlow 전환을 비활성화하십시오.
정렬 오류는 잘못된 읽기 및 쓰기로 인해 발생합니다. 예를 들어, 메모리 주소가 2바이트의 짝수 배수가 아닌 2바이트 읽기는 정렬 오류입니다.
정렬 오류는 일반적으로 소프트웨어 버그로 인해 발생합니다. CPU는 이 오류를 수정하지만, 많은 수정 사항이 있는 경우 CPU 집약적인 문제가 됩니다. 이 유형의 오류 문제를 해결하려면 Troubleshooting Verials Access, Alignment Errors 및 Spurious Interrupts를 참조하십시오.
show interfaces 및 show interfaces switching(hidden) 명령의 출력에서는 오버로드된 인터페이스에 대한 정보를 제공합니다. 이러한 명령의 출력을 나중에 분석할 수 있도록 로그 파일에 캡처하려면 아래 단계를 수행하십시오.
show interface의 출력을 확인합니다. 인터페이스의 로드 및 조절 수를 검토합니다. 로드는 기본적으로 5분 이상 계산된 평균 값입니다. 이 간격을 변경하려면 load-interval seconds 명령을 실행합니다. 여기서 seconds는 데이터가 로드 통계를 계산하는 데 사용되는 시간을 나타냅니다. 30의 배수인 값을 사용합니다.
Throttle은 오버로드된 라우터를 잘 나타냅니다. 버퍼 또는 프로세서 오버로드로 인해 포트의 수신기가 비활성화된 횟수를 표시합니다. 인터럽트 레벨의 높은 CPU 사용률과 함께 throttles는 라우터가 트래픽으로 오버로드되었음을 나타냅니다.
오버로드된 인터페이스를 통해 전송되는 트래픽의 종류(프로토콜 및 스위칭 경로)를 확인하려면 show interfaces switching (hidden) 명령의 출력을 확인합니다. 일부 인터페이스가 트래픽으로 너무 과부화된 경우 네트워크에서 트래픽 흐름을 재설계하거나 하드웨어를 업그레이드하는 것이 좋습니다.
네트워크 루프는 트래픽 오버로드의 원인일 수도 있습니다. 네트워크 토폴로지를 확인합니다.
단일 디바이스에서 매우 빠른 속도로 패킷을 생성하여 라우터를 오버로드할 가능성이 있는 경우 오버로드된 인터페이스의 컨피그레이션에 ip accounting mac-address {input|output} interface configuration 명령을 추가하여 해당 디바이스의 MAC 주소를 확인할 수 있습니다.
show interfaces [ ] mac-accounting 명령은 수집된 정보를 표시합니다. 소스 디바이스의 MAC 주소가 발견되면 show ip arp 명령의 출력을 확인하여 해당 IP 주소를 찾을 수 있습니다.
라우터에서 실행 중인 Cisco IOS 소프트웨어 버전에 버그가 있다고 의심되는 경우 버그 툴킷(등록된 고객만 해당)에서 유사한 환경에서 유사한 증상을 보고하는 버그를 확인할 수 있습니다.
트래픽이 없더라도 소프트웨어는 CPU 리소스를 사용하는 CAS(Channel-Associated Signaling)를 지속적으로 모니터링합니다.
트래픽이 없더라도 ATM 인터페이스는 null 셀(ATM 표준에 따라)을 전송하고 CPU 리소스를 계속 사용합니다.
PXF가 RP에 너무 많은 패킷을 덤프하면 RP가 오버로드될 수 있습니다. show pxf accounting summary 명령을 실행하여 펀트된 패킷의 양을 총 수신 패킷의 양과 비교할 수 있습니다. 패킷이 RP에 펀딩되는 이유를 알아보려면 동일한 명령을 사용합니다. 소프트웨어 버그일 수도 있고 PXF에서 트래픽을 지원하지 않습니다.
CPU 프로파일링은 CPU가 시간을 소비하는 위치를 확인하는 낮은 오버헤드 방식입니다. 시스템은 4밀리초마다 프로세서 위치를 샘플링하여 작동합니다. 메모리에서 해당 위치의 카운트가 증가합니다. 이 CPU 사용률의 근본 원인은 CPU 프로파일링에 의해 결정됩니다.
CPU 프로파일링을 수행하려면 다음 단계를 완료하십시오. CPU 사용률은 CPU 사용률이 높을 때 수행됩니다.
참고: 이 모든 명령은 활성화 모드에서 입력해야 합니다.
show region의 출력을 캡처하고 시작 주소, 끝 주소 및 main:text 영역의 크기를 가져옵니다.
show memory statistics의 출력을 캡처하고 프로세서 메모리에서 가장 큰 블록의 크기를 확인합니다.
인터럽트에 대해서만 프로파일링을 구성하려면 프로필 작업 인터럽트를 수행합니다.
main:text 영역의 크기를 사용 가능한 프로세서 메모리의 최대 블록 크기와 비교합니다. 가장 큰 블록은 main:text보다 커야 합니다.
가장 큰 블록이 main:text size보다 작으면 세분성을 조정하여 프로파일링이 프로세서 메모리 블록을 가져올 수 있는지 확인합니다.
가장 큰 블록이 main:text 영역보다 큰 경우 4의 세분성을 사용합니다.
가장 큰 블록이 main:text 영역의 절반 보다 큰 경우 세분성을 8로 사용합니다.
가장 큰 블록이 main:text 영역의 1/4보다 큰 경우 10(16진수의 16)의 세분성을 사용합니다.
참고: 세분성은 2의 전력이어야 하며 가능한 한 작아야 합니다(4보다 작으면 안 됨).
프로필을 수행하여 프로파일링 시작
Profile <starting address> <ending address> <granularity value>
시작 주소와 끝 주소는 1단계에서 결정됩니다.
5~10분 대기
프로파일 중지를 수행하여 프로파일링 중지
show profile terse의 출력을 캡처합니다.
모두 프로파일 해제 작업을 수행하여 메모리를 확보해야 합니다.
이 명령은 인터페이스에서 활성 스위칭 경로를 확인하는 데 사용됩니다. Cisco IOS 소프트웨어의 스위칭 경로에 대한 자세한 내용은 스위칭 경로 구성을 참조하십시오.
다음은 한 인터페이스에 대한 show interfaces switching 명령의 샘플 출력입니다.
RouterA#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
출력은 인터페이스에 구성된 모든 프로토콜의 스위칭 경로를 나열하므로 라우터를 통과하는 트래픽의 종류 및 양을 쉽게 확인할 수 있습니다. 다음 표에서는 출력 필드에 대해 설명합니다.
필드 | 정의 |
---|---|
프로세스 | 처리된 패킷. 이러한 패킷은 라우터로 향하는 패킷 또는 고속 스위칭 캐시에 항목이 없는 패킷일 수 있습니다. |
누락 캐시 수 | 고속 스위칭 캐시에 항목이 없는 패킷입니다. 이 대상에 대한 첫 번째 패킷(또는 구성된 빠른 스위칭 유형에 따라 플로우)이 처리됩니다. 발신 인터페이스에서 고속 스위칭이 명시적으로 비활성화되지 않는 한 모든 후속 패킷은 빠르게 스위칭됩니다. |
빠름 | 고속 스위치드 패킷. 고속 스위칭은 기본적으로 활성화되어 있습니다. |
자동/SSE | 자동 스위치드, 실리콘 스위치드 또는 분산형 스위치드 패킷. 스위치 프로세서 또는 실리콘 스위치 프로세서(각각 자동 스위칭 또는 실리콘 스위칭의 경우)가 있는 Cisco 7000 Series 라우터 또는 VIP가 있는 Cisco 7500 Series 라우터(분산 스위칭의 경우)에서만 사용할 수 있습니다. |
이 스크립트는 CPU 사용률이 75%를 초과하는 경우 flash:CPU_Profile의 출력을 저장합니다.
service internal event manager applet High_CPU event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.6 get-type next entry-opge entry-val 75 exit-time 10 poll-interval 5 action 0.1 syslog msg "CPU Utilization is high" action 0.2 cli command "enable" action 0.4 cli command "show log | append flash:CPU_Profile.txt" action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt" action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt" action 1.1 cli command "configure terminal" action 1.2 cli command "profile xxxxxxx yyyyyyyyZ" action 1.3 cli command "profile start" action 2.3 syslog msg "Entering TCLSH" action 2.4 cli command "tclsh" action 2.5 cli command "after 240000" action 2.6 cli command "exit" action 2.9 syslog msg "Exiting TCLSH" action 3.0 cli command "profile stop" action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt" action 3.2 cli command "clear profile" action 3.3 cli command "unprofile all" action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..." action 4.2 cli command "end"
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
29-May-2008 |
최초 릴리스 |