본문 바로가기

네트워크/Switch

[CISCO 버그조치] %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand: 1/RP/0: Used Memory value 95% exceeds warning level 90%

반응형

증상


장비 모델 및 버전

  • "WS-C3650-24TS " 16.3.6
> sh version 
...
Switch Ports Model              SW Version        SW Image              Mode   
------ ----- -----              ----------        ----------            ----   
*    1 28    WS-C3650-24TS      16.3.6            CAT3K_CAA-UNIVERSALK9 INSTALL

 

시스템 로그

  • warrning 단계에서 10분 간격으로 해당 로그가 지속적으로 표출
> sh log
...
May 31 06:52:30.808 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:02:40.812 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:12:50.832 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:23:00.846 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:33:10.860 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:43:20.869 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 07:53:30.887 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 08:03:40.907 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 08:13:50.927 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%
May 31 08:24:00.953 KST: %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand:  1/RP/0: Used Memory value 95% exceeds warning level 90%

 

 

버그 분석


Cisco BUG Report

 

Bug Search Tool

 

quickview.cloudapps.cisco.com

 

BUG 간략 분석

  • "platform-mgr" 프로세스의 kernel 수준의 메모리 누수(memory leak)에 의한 버그
  • CAT3650/3850 IOS 16.1.x, 16.2.x, 16.3.x 버전에서 영향을 받는다.
  • "platform-mgr" 은 플랫폼의 manager 프로세스로 IOS XE상의 프로세스이며 "show processes memory" 명령으로 볼 수 있는 IOSd 프로세스의 메모리와는 다르다.
  • IOS XE linux kernel 플랫폼으로 변경되면서 IOS가 IOSd로 프로세스의 일부가 되었다.
  • 해당 버그 메세지는 R0-1 슬롯의 프로세서가 사용하는 물리메모리의 사용량이 "platform-mgr" 프로세스 메모리 누수로 인해 임계값을 넘어 경고하고 있다.
  • platfom-mgr 프로세스의 메모리 점유량 확인
> sh platform software process list switch active R0 sort memory 
Name                     Pid    PPid  Group Id  Status    Priority  Size        
------------------------------------------------------------------------------
...
platform_mgr           16279   13702     16279  S               20  862552064   
...
  • platform-mgr 프로세스의 메모리 size가 지속적으로 증가하는 추이를 유심히 관찰해야한다.
  • R0-1 slot(The route processor in slot 0) 메모리 사용량의 추이 또한 관찰해야한다.
> show platform software status control-processor brief
...
Memory (kB)
 Slot  Status    Total     Used (Pct)     Free (Pct) Committed (Pct)
1-RP0 Warning  3959052  3746416 (95%)   212636 ( 5%)   4524188 (114%)
...
  • 참고 : 리눅스의 top 명령처럼 cisco IOS XE에서 볼수 있는 방법
monitor platform software process switch active R0

 

추이 모니터링


수집 설정

  • expect, spawn을 사용하여 간단한 스크립트를 만들고 zabbix로 값을 수집하여 추이 모니터링 하였음.
  • zabbix-agent user parameter
    • total|used를 입력 값으로 총 메모리량과 사용메모리량을 수집
> cat /etc/zabbix/zabbix_agent2.d/L3_A-platform-mgr-value.conf 
UserParameter=l3_a-platform-memory[*],/bin/sh /opt/expect/02.L3_A-plaform-mgr-value.sh $1
  • 스크립트
# 메모리 사용량 출력 및 저장
> cat /opt/expect/01.L3_A.exp 
#!/usr/bin/expect -f
#!/bin/bash
#!/usr/bin/tclsh
#set force_conservative 0;
# set to 1 to force conservative mode even if
# script wasn't run conservatively originally
spawn ssh <id>@<ip>

expect "*assword: "
send "<password>\r"
log_user 1
expect "*>"
send "en\r"
expect "*assword: "
send "<enable password>\r"
expect "*#"
send "show platform software status control-processor brief\r"
expect "*#"
send "exit\r"

# total or used 메모리양 표출
> cat /opt/expect/02.L3_A-plaform-mgr-value.sh 
#!/bin/sh
dir="/opt/expect"
if [ $1 ];  then
	$dir/01.L3_A.exp > $dir/result
fi
if [ $1 == "total" ]; then
	total=`cat $dir/result | grep "1-RP0" | sed -n 2p | awk '{print $3}'`
	echo -n $total
elif [ $1 == "used" ] ; then
	used=`cat $dir/result | grep "1-RP0" | sed -n 2p | awk '{print $4}'`
	echo -n $used
fi

 

 

 

추이 결과

  • 91% -> 95% 로 약 4% 증가 하기 까지 약 6개월의 기간이 소요 되었음.
  • 이 기간동안 장비 상에 특이점은 발생 되지 않았음.

 

 

조치


  • 증상이 해결된 버전(16.5.x, 16.6.x)으로 IOS를 업그레이드 하는것이 근복적인 해결법.
  • 사용량이 100%에 도달하면 장비가 reload 될수 있으므로 업그레이드 전이라면 수치확인 후 점검을 통해 reload해 메모리 리소스를 해소해주는 것이 좋음
반응형

'네트워크 > Switch' 카테고리의 다른 글

Cisco IOS 라이선스 별 차이점  (0) 2023.08.30
[Alteon L4] Session 정보  (0) 2023.06.22
Cisco WS-C4948-S IOS UPGRADE  (0) 2022.05.12
네트워크 장비(cisco, 화웨이) QOS 설정 방법  (0) 2021.03.18