소개
이 문서의 목적은 Cisco IOS® 소프트웨어를 실행하는 장치에서 발생할 수 있는 세 가지 유형의 오류(스퓨리어스 액세스, 정렬 오류 및 스퓨리어스 인터럽트)를 설명하는 것입니다.
Cisco 디바이스에서 show alignment 명령을 출력한 경우 Cisco CLI Analyzer를 사용하여 잠재적인 문제 및 수정 사항을 표시할 수 있습니다. Cisco CLI Analyzer를 사용하려면 등록된 고객으로 로그인한 상태여야 하고 JavaScript가 활성화되어 있어야 합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 명령은 일부 플랫폼에서는 지원되지 않습니다(RISC(reduced instruction set computing) 프로세서에서만 지원).
show alignment 명령은 12.3(7)T에 도입되었으며 이전 버전에서는 숨겨져 있었습니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
스퓨리어스 액세스
스퓨리어스 액세스는 Cisco IOS Software가 제한된 위치에서 메모리에 액세스하려고 시도하는 것입니다. 위조 액세스에 대한 시스템 로그 출력의 예는 다음과 같습니다.
%ALIGN-3-SPURIOUS: Spurious memory access made at 0x60968C44 reading 0x0
%ALIGN-3-TRACE: -Traceback= 60968C44 60269808 602389D8 00000000 00000000 00000000
00000000 00000000
원인
프로세스가 가장 낮은 16KB 메모리 영역에서 읽기를 시도할 때 스퓨리어스 액세스가 발생합니다. 이 메모리 부분은 예약되어 있으므로 액세스해서는 안 됩니다. 이 메모리 영역에 대한 읽기 작업은 일반적으로 존재하지 않는 값이 소프트웨어의 함수에 반환될 때, 즉 null 포인터가 함수에 전달될 때 발생합니다.
Cisco IOS 소프트웨어 처리
Cisco IOS Software는 플랫폼에 따라 가짜 액세스를 다르게 처리합니다. 이 작업이 가능한 플랫폼에서 Cisco IOS 소프트웨어 코드는 값 0을 반환하고 이벤트를 기록하여 이러한 잘못된 액세스를 처리합니다. 플랫폼에서 이 기능이 지원되지 않으면 라우터가 SegV 오류와 함께 중단됩니다. 모든 스퓨리어스 액세스는 부적절하므로, 스퓨리어스 액세스는 항상 버그를 가리킵니다.
스퓨리어스 액세스 오류 확인
가급적 Cisco IOS Software에서 가짜 액세스를 계산하고 기록합니다. 이 정보는 show alignment 명령에서 사용할 수 있습니다. 추적 정보는 스퓨리어스 액세스의 원인 및 수정 사항을 확인하는 데 필요합니다.
참고: show alignment 명령은 숨겨져 있으며 문서화되지 않았습니다. 이 명령은 모든 플랫폼에서도 지원되지 않습니다(RISC(reduced instruction set computing) 프로세서에서만 지원). 다음은 show alignment 명령의 샘플 출력입니다.
Router#show alignment
Alignment data for:
GS Software (RSP-PV-M), Version 11.1(26.1)CC, EARLY DEPLOYMENT MAINTENANCE INTER
IM SOFTWARE
Compiled Thu 27-May-99 20:48 by jjgreen
No alignment data has been recorded.
Total Spurious Accesses 167110746, Recorded 2
Address Count Traceback
0 10474 0x6012D488 0x6020FFB4 0x601D5CE0
0 49008 0x6012D488 0x6020D25C 0x6020E744 0x602106B4
Router#
스퓨리어스 액세스 오류 수정
거짓 액세스 오류는 항상 Cisco IOS 소프트웨어 버그로 인해 발생합니다. 이 문제를 해결하려면 릴리스 시스템의 최신 버전으로 업그레이드하십시오(예: Cisco IOS Software Release 11.2(14)를 실행 중인 경우 최신 11.2(x) 이미지로 업그레이드하십시오. 이렇게 해도 문제가 해결되지 않거나 라우터를 업그레이드할 수 없는 경우 Cisco TAC에 문의하십시오. 허위 액세스를 신고하기 위해 케이스를 열 때 다음을 포함하십시오.
-
show alignment 명령의 출력
-
show tech-support 명령의 출력
-
관련 시스템 로그
Alignment errors
다음은 정렬 오류에 대한 시스템 로그 출력의 예입니다.
%ALIGN-3-CORRECT: Alignment correction made at 0x60262478 reading/writing 0x60A9FF5C
원인
정렬 오류는 잘못 정렬된 읽기 및 쓰기로 인해 발생합니다. 예를 들어 메모리 주소가 2바이트의 짝수 배수가 아닌 2바이트 읽기는 정렬 오류입니다. 정렬 오류는 소프트웨어 버그로 인해 발생합니다.
정렬 오류 확인
정렬 오류는 로그에 보고되고 라우터에 의해 기록됩니다. show alignment 명령의 출력은 잠재적으로 유용한 역추적과 함께 이러한 오류의 레코드를 제공합니다. 정렬 에러들에 대한 역추적들은 일반적으로 정렬 문제들을 야기하는 함수를 드러내기 위해 디코딩될 수 있다.
참고: show alignment 명령은 숨겨져 있으며 문서화되지 않았습니다. 이 명령도 일부 플랫폼에서는 지원되지 않습니다(하이엔드 라우터에서만 지원). 다음은 show alignment 명령의 샘플 출력입니다.
Router#show alignment
Alignment data for:
RSP Software (RSP-ISV-M), Version 11.3(3a), RELEASE SOFTWARE (fc1)
Compiled Fri 01-May-98 18:28 by phanguye
Total Corrections 6, Recorded 2, Reads 6, Writes 0
Initial Initial
Address Count Access Type Traceback
60EF3765 3 32bit read 0x60262474 0x601AC594 0x601AC580
60EF3761 3 32bit read 0x60262478 0x601AC594 0x601AC580
No spurious memory references have been recorded.
Router#
정렬 오류 수정
정렬 오류는 일반적으로 소프트웨어에 의해 수정될 수 있으며, 그럴 경우 충돌이 발생하지 않습니다. 그러나 정렬 오류를 수정하면 프로세서 리소스가 소모되므로 성능이 저하될 수 있습니다. 정렬 오류가 계속 발생하면 라우터는 대부분의 시간을 CPU 사용률을 높여 오류를 수정할 수 있습니다. 이러한 오류는 중단 시 수정됩니다.
가짜 인터럽트
스퓨리어스 인터럽트는 스퓨리어스 메모리 액세스와 동일하지 않습니다.
스퓨리어스 인터럽트는 이미 처리된 패킷에 대해 불필요한 인터럽트가 발생할 때 발생합니다. 이는 내부 레이스 상태 또는 인터럽트 처리 루틴의 부적절한 초기화 때문일 수 있습니다. 허위 인터럽트로 인해 라우터의 동작에 식별할 수 있는 영향이 없습니다. 일부 삭제된 패킷 또는 성능이 저하된 패킷과 함께 불필요한 인터럽트의 수가 증가하고 있지 않다면 이러한 인터럽트는 안전하게 무시될 수 있습니다. 그렇지 않으면 근본 원인을 조사해야 합니다.
show align 명령은 스퓨리어스 메모리 액세스에 대한 정보를 제공하지만, 스퓨리어스 인터럽트에 대해서는 제공하지 않습니다. 시스템에서 얻을 수 있는 가짜 인터럽트에 대한 유일한 정보는 show stacks 출력에 있으며, 여기서 발생한 횟수의 카운터가 있습니다.
Router#show stacks
Minimum process stacks:
Free/Size Name
3692/4000 DHCPD Receive
4796/6000 Router Init
1904/4000 Init
3408/4000 RADIUS INITCONFIG
4228/5000 DHCP Client
2468/4000 Exec
Interrupt level stacks:
Level Called Unused/Size Name
3 0 3000/3000 Serial interface state change interrupt
4 54351439 1760/3000 Network interfaces
5 64181 2872/3000 Console Uart
Spurious interrupts: 29
거짓 인터럽트는 하드웨어 결함 또는 소프트웨어 때문에 발생할 수 있습니다. 대부분의 경우, 이는 라우터 또는 스위치의 예상되는 동작에 아무런 부작용도 미치지 않습니다. 이는 모니터링 목적으로만 계산됩니다.
두 개의 불필요한 인터럽트는 CPU 사용률을 크게 유발하지 않습니다. 라우터나 스위치에서 발생하는 유일한 증상이며 다른 모든 것이 예상대로 작동하고 있는 경우(패킷 삭제 없음 등), 스퓨리어스 인터럽트는 무시될 수 있습니다.
68k 프로세서 기반 Cisco 라우터(즉, Cisco 1000, 1600, 2500, 4000, 7000(RP))는 특정 임계값에 도달한 경우 코어덤프를 생성하도록 구성할 수 있습니다.
Router(config)#exception ?
core-file Set name of core dump file
crashinfo Crashinfo collection
dump Set name of host to dump to
flash Set the device and erase permission
memory Memory leak debugging
protocol Set protocol for sending core file
region-size Size of region for exception-time memory pool
spurious-interrupt Crash after a given number of spurious interrupts
Router(config)#exception spurious-interrupt ?
<1-4294967295> Spurious interrupt threshold
코어덤프 생성에 대한 자세한 내용은 코어 덤프 생성을 참조하십시오. 이 정보는 가짜 인터럽트로 인한 성능 저하의 경우 Technical Assistant Center에서 요청할 수 있습니다. 이 경우, 일부 패킷 삭제 또는 성능 저하와 함께 불필요한 인터럽트의 수가 증가하고 많아야 합니다.
TAC 서비스 요청을 생성할 경우 수집할 정보
위의 트러블슈팅 단계를 수행한 후에도 여전히 도움이 필요하며 Cisco TAC에 서비스 요청(등록된 고객만 해당)을 생성하려는 경우, 부정 액세스, 정렬 오류 및 부정 중단 트러블슈팅을 위해 다음 정보를 케이스에 첨부해야 합니다. |
- 서비스 요청을 생성하기 전에 문제 해결 수행
- show technical-support output(가능한 경우 활성화 모드)
- show alignment output(show technical-support 출력에 아직 포함되지 않은 경우)
- 사용 가능한 경우 로그 출력 또는 콘솔 캡처 표시
수집된 데이터를 압축되지 않은 일반 텍스트 형식(.txt)으로 서비스 요청에 첨부하십시오. TAC Service Request Tool(등록된 고객만)을 사용하여 정보를 업로드하여 서비스 요청에 첨부할 수 있습니다. Service Request Tool에 액세스할 수 없는 경우 메시지의 제목 줄에 서비스 요청 번호가 포함된 attach@cisco.com으로 보내 서비스 요청에 관련 정보를 첨부할 수 있습니다. 참고: 위 정보를 수집하기 전에 수동으로 라우터를 다시 로드하거나 전원을 껐다가 켜지 마십시오. 이 경우 문제의 근본 원인을 파악하는 데 필요한 중요한 정보가 손실될 수 있습니다. |
관련 정보