소개
이 문서에서는 현재 플랫폼을 기반으로 하는 버퍼 튜닝의 개요를 제공하고 show buffers 명령에 대한 일반적인 정보를 제공합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 라이브 네트워크에서 작업 중인 경우, 사용하기 전에 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
일반 개요
버퍼 튜닝을 사용하면 라우터가 사용 가능한 메모리에서 버퍼를 할당하는 방법을 수정할 수 있으며 일시적인 트래픽 버스트 중에 패킷이 삭제되는 것을 방지할 수 있습니다.
라우터의 버퍼를 튜닝해야 하는지 여부를 확인하려면 show interfaces 및 show buffers 명령을 사용합니다.
Cisco 디바이스에서 show interfaces 및 show buffers 명령의 출력 또는 show technical-support(활성화 모드)의 출력이 있는 경우 Cisco CLI Analyzer를 사용하여 잠재적인 문제 및 수정 사항을 표시할 수 있습니다. Cisco CLI Analyzer를 사용하려면 등록된 고객으로 로그인한 상태여야 하고 JavaScript가 활성화되어 있어야 합니다.
다음은 show interfaces 명령 출력의 예입니다.
Output queue 0/40, 1041 drops; input queue 0/75, 765 drops
35252345 packets input, 547082589 bytes, 940 no buffer
show buffers 명령을 사용하여 인터페이스의 MTU(최대 전송 단위)에 해당하는 버퍼 크기를 확인합니다.
Middle buffers, 600 bytes (total 150, permanent 25):
147 in free list (10 min, 150 max allowed)
61351931 hits, 137912 misses, 51605 trims, 51730 created
91652 failures (0 no memory)
아래 표에서는 출력에 대해 설명합니다.
키워드로 패킷 암호화를 허용하기 때문입니다 |
설명 |
total |
사용된 버퍼와 사용되지 않은 버퍼를 모두 포함하여 풀의 총 버퍼 수입니다. |
영구 |
풀에 할당된 영구 버퍼 수입니다. 이러한 버퍼는 항상 풀에 있으며 잘라낼 수 없습니다. |
사용 가능 목록에 있음 |
현재 풀에서 사용할 수 있으며 사용 가능한 버퍼 수입니다. |
최소 |
라우터가 "사용 가능한 목록에" 유지하려고 시도하는 최소 버퍼 수입니다. "사용 가능한 목록에 있는" 버퍼 수가 "min" 값 미만이면 라우터는 해당 풀에 대해 더 많은 버퍼를 생성해야 합니다. |
최대 허용 |
"사용 가능한 목록"에 허용되는 최대 버퍼 수입니다. "사용 가능한 목록에 있는" 버퍼 수가 "허용되는 최대" 값보다 큰 경우 라우터는 풀에서 버퍼를 트리밍해야 합니다. |
적중 |
사용 가능한 목록에서 성공적으로 할당된 버퍼 수입니다. |
실패 |
버퍼가 요청되었지만 사용 가능한 목록에 사용 가능한 버퍼가 없거나 사용 가능한 목록에 "최소" 미만의 버퍼가 있는 경우. |
트림 |
"사용 가능한 목록에 있는" 버퍼 수가 "허용되는 최대" 버퍼 수를 초과할 때 풀에서 잘린 버퍼 수입니다. |
생성됨 |
"사용 가능한 목록에 있는" 버퍼 수가 "최소"보다 작을 때 풀에 생성된 버퍼 수입니다. |
메모리 없음 |
라우터가 새 버퍼를 만들려고 했지만 라우터의 사용 가능한 메모리가 부족하여 만들지 못한 횟수입니다. |
실패 |
인터럽트 시간 동안 요청자에게 버퍼를 부여하는 데 실패한 횟수입니다(라우터가 프로세스 스위칭 수준에서 새 버퍼를 생성할 수 있으므로 "메모리 없음"이 아니면 "실패"가 발생하지 않습니다). number of "failures"는 버퍼 부족으로 인해 삭제된 패킷 수를 나타냅니다. |
라우터에서 버퍼를 처리하는 방법
"사용 가능한 목록에 있는" 버퍼 수는 사용 가능한 버퍼 수입니다. 버퍼 요청이 들어오면 "사용 가능한 목록"의 버퍼가 할당됩니다.
IOS 버퍼는 두 가지 주요 이유로 사용됩니다.
-
라우터에서 종료되는 트래픽을 처리합니다.
-
패킷이 프로세스 전환 중인 경우
사용 가능한 버퍼가 없고 빠른 스위칭이 활성화된 경우 버퍼 오류가 발생하고 패킷이 삭제됩니다. 버퍼 풀 관리자 프로세스에서 버퍼 실패를 감지하면 이후 실패를 방지하기 위해 새 버퍼를 "생성"합니다.
숫자 "in free list"가 "max allowed" 값과 같으면 라우터가 새 버퍼를 만들지 않습니다. 라우터에 메모리가 부족하여 새 버퍼를 만들 수 없는 경우 "메모리 없음"으로 기록됩니다. "사용 가능한 목록에 있는" 숫자가 "최대 허용" 숫자보다 크면 라우터가 일부 초과 버퍼를 "자간"합니다.
'실패'와 '기억 상실'이 유일한 우려 영역이라는 것이다. 실패가 발생할 수 있지만 잠시 후에 안정화될 수 있습니다. 라우터는 실패 횟수를 안정화하기 위해 필요에 따라 버퍼를 생성하거나 자릅니다. 실패 횟수가 계속 증가하는 경우 버퍼 튜닝이 필요할 수 있습니다.
메모리가 부족하여 새 버퍼를 만들 수 없는 경우 버퍼 누수 또는 더 일반적인 메모리 문제를 확인합니다. 버퍼는 빠른 스위칭 경로에 생성되지 않으므로 라우터가 패킷을 빠른 스위칭하려고 하는데 사용 가능한 버퍼가 없으면 패킷이 삭제되고 오류가 보고됩니다. 다음에 버퍼 풀 관리자를 실행할 때 새 버퍼가 생성됩니다.
로우엔드 플랫폼(Cisco 1600, 2500 및 4000 Series 라우터)
고속 스위치드 패킷과 프로세스 스위치드 패킷은 동일한 버퍼를 공유합니다. 이러한 버퍼는 공유 메모리에 있습니다. 공유 메모리는 Cisco 1600 및 2500 Series 라우터의 동적 RAM(DRAM) 또는 Cisco 4000, 4500 및 4700 Series 라우터의 공유 RAM(SRAM)에 있습니다.
show memory 명령의 첫 번째 줄은 현재 공유 메모리 크기, 현재 사용 중인 메모리 크기 및 가장 낮은 지점을 나타냅니다. 패킷을 빠르게 전환할 수 없는 경우, 패킷에 대한 포인터가 프로세스 전환 입력 대기열에 삽입되지만 패킷 자체는 복사되지 않습니다.
다음은 로우엔드 플랫폼(Cisco 4500)에서 실행된 show buffers 명령의 출력입니다.
router# show buffers
Buffer elements:
471 in free list (500 max allowed)
870696495 hits, 0 misses, 0 created
Public buffer pools:
Small buffers, 104 bytes (total 50, permanent 50):
49 in free list (20 min, 150 max allowed)
27301678 hits, 23 misses, 20 trims, 20 created
0 failures (0 no memory)
Middle buffers, 600 bytes (total 150, permanent 25):
147 in free list (10 min, 150 max allowed)
61351931 hits, 137912 misses, 51605 trims, 51730 created
91652 failures (0 no memory)
Big buffers, 1524 bytes (total 67, permanent 50):
67 in free list (5 min, 150 max allowed)
46293638 hits, 455 misses, 878 trims, 895 created
0 failures (0 no memory)
VeryBig buffers, 4520 bytes (total 96, permanent 10):
79 in free list (0 min, 100 max allowed)
11818351 hits, 246 misses, 98 trims, 184 created
243 failures (0 no memory)
Large buffers, 5024 bytes (total 10, permanent 0):
10 in free list (0 min, 10 max allowed)
4504003 hits, 873040 misses, 759543 trims, 759553 created
873040 failures (0 no memory)
Huge buffers, 18024 bytes (total 0, permanent 0):
0 in free list (0 min, 4 max allowed)
0 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
Interface buffer pools:
TokenRing0 buffers, 4516 bytes (total 48, permanent 48):
0 in free list (0 min, 48 max allowed)
3099742 hits, 9180771 fallbacks
16 max cache size, 1 in cache
TokenRing1 buffers, 4516 bytes (total 48, permanent 48):
0 in free list (0 min, 48 max allowed)
335172 hits, 403668 fallbacks
16 max cache size, 16 in cache
Serial1 buffers, 1524 bytes (total 96, permanent 96):
63 in free list (0 min, 96 max allowed)
33 hits, 0 fallbacks
0 max cache size, 0 in cache
Serial2 buffers, 1524 bytes (total 96, permanent 96):
63 in free list (0 min, 96 max allowed)
701370936 hits, 268 fallbacks
0 max cache size, 0 in cache
Serial3 buffers, 1524 bytes (total 96, permanent 96):
63 in free list (0 min, 96 max allowed)
33 hits, 0 fallbacks
0 max cache size, 0 in cache
Serial0 buffers, 4546 bytes (total 96, permanent 96):
28 in free list (0 min, 96 max allowed)
346854 hits, 5377043 fallbacks
32 max cache size, 27 in cache
인터페이스 버퍼 풀은 인터페이스에서 입출력(I/O)에 사용됩니다. 인터페이스 버퍼 여유 목록에 더 이상의 버퍼가 없는 경우 라우터는 대안으로 공용 버퍼 풀로 이동합니다. 폴백에 대한 성능 적중 횟수가 없습니다.
캐싱은 일부 오버헤드를 우회하여 인터럽트 레벨 드라이버 코드의 버퍼 가용성을 가속화하는 소프트웨어 조작입니다.
참고: 일반적으로 인터페이스 버퍼는 튜닝하지 않아야 합니다.
하이엔드 플랫폼(Route Processor, Switch Processor, Silicon Switch Processor, Route/Switch Processor)
다음은 하이엔드 플랫폼의 show buffers 명령의 출력입니다.
Router# show buffers
Buffer elements:
498 in free list (500 max allowed)
326504974 hits, 0 misses, 0 created
Public buffer pools:
Small buffers, 104 bytes (total 150, permanent 150):
140 in free list (30 min, 250 max allowed)
564556247 hits, 148477066 misses, 16239797 trims, 16239797 created
29356200 failures (0 no memory)
Middle buffers, 600 bytes (total 120, permanent 120):
116 in free list (20 min, 200 max allowed)
319750574 hits, 85689239 misses, 9671164 trims, 9671164 created
26050704 failures (0 no memory)
Big buffers, 1524 bytes (total 100, permanent 100):
98 in free list (10 min, 300 max allowed)
20130595 hits, 14796572 misses, 251916 trims, 251916 created
11813639 failures (0 no memory)
VeryBig buffers, 4520 bytes (total 15, permanent 15):
14 in free list (5 min, 300 max allowed)
22966334 hits, 3477687 misses, 13113 trims, 13113 created
2840089 failures (0 no memory)
Large buffers, 5024 bytes (total 12, permanent 12):
12 in free list (0 min, 30 max allowed)
849034 hits, 1979463 misses, 1028 trims, 1028 created
1979456 failures (0 no memory)
Huge buffers, 18024 bytes (total 6, permanent 5):
4 in free list (2 min, 13 max allowed)
338440 hits, 1693496 misses, 1582 trims, 1583 created
1640218 failures (0 no memory)
헤더 풀
퍼블릭 버퍼 풀은 DRAM에 있으며 시스템 버퍼라고 합니다. RSP(Route/Switch Processor)의 공유 메모리를 MEMD(System Packet Memory)라고 하며 2MB의 메모리를 허용합니다. RP(Route Processor) 및 SP(Switch Processor)(또는 SSP(Silicon Switch Processor - SSP)에서 시스템 버퍼는 RP에 있고 MEMD는 SP(또는 SSP)에 있습니다.
패킷이 들어올 때 수신 인터페이스 프로세서에 의해 MEMD에 저장됩니다(VIP(Versatile Interface Processor - Versatile Interface Processor)의 경우 제외). 고속 스위칭이 불가능한 경우 전체 패킷이 DRAM의 시스템 버퍼에 복사됩니다. 따라서 show buffers 명령에 표시된 버퍼는 DRAM에 있는 시스템 버퍼입니다.
show controllers cbus 명령은 MEMD의 인터페이스 버퍼를 표시합니다. 또한 인터페이스 버퍼를 튜닝하는 것은 권장되지 않습니다. 패킷을 빠르게 스위칭할 수 없고 시스템 버퍼에 복사하면 패킷이 삭제되고 사용 가능한 시스템 버퍼가 없으면 오류가 계산됩니다.
입자 기반 플랫폼
Cisco 3600 및 7200 Series 라우터는 입자를 사용합니다. 인터페이스 버퍼는 파티클이라고 하는 원자 버퍼로, 패킷이 분할됩니다. 패킷을 빠르게 스위칭할 수 없는 경우 프로세스 스위칭 코드에서 입자를 처리할 수 없기 때문에 라우터는 패킷을 하나의 시스템 버퍼에 리어셈블해야 합니다.
다음은 Cisco 3600의 show buffers 명령의 출력입니다.
Router# show buffers
Buffer elements:
499 in free list (500 max allowed)
136440 hits, 0 misses, 0 created
Public buffer pools:
Small buffers, 104 bytes (total 50, permanent 50):
49 in free list (20 min, 150 max allowed)
4069435 hits, 141 misses, 73 trims, 73 created
52 failures (0 no memory)
Middle buffers, 600 bytes (total 25, permanent 25):
25 in free list (10 min, 150 max allowed)
628629 hits, 21 misses, 21 trims, 21 created
3 failures (0 no memory)
Big buffers, 1524 bytes (total 50, permanent 50):
50 in free list (5 min, 150 max allowed)
9145 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
VeryBig buffers, 4520 bytes (total 10, permanent 10):
10 in free list (0 min, 100 max allowed)
0 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
Large buffers, 5024 bytes (total 0, permanent 0):
0 in free list (0 min, 10 max allowed)
0 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
Huge buffers, 18024 bytes (total 0, permanent 0):
0 in free list (0 min, 4 max allowed)
0 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
Interface buffer pools:
CD2430 I/O buffers, 1524 bytes (total 0, permanent 0):
0 in free list (0 min, 0 max allowed)
0 hits, 0 fallbacks
Header pools:
Header buffers, 0 bytes (total 265, permanent 256):
9 in free list (10 min, 512 max allowed)
253 hits, 3 misses, 0 trims, 9 created
0 failures (0 no memory)
256 max cache size, 256 in cache
Particle Clones:
1024 clones, 0 hits, 0 misses
Public particle pools:
F/S buffers, 256 bytes (total 384, permanent 384):
128 in free list (128 min, 1024 max allowed)
256 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
256 max cache size, 256 in cache
Normal buffers, 1548 bytes (total 512, permanent 512):
356 in free list (128 min, 1024 max allowed)
188 hits, 0 misses, 0 trims, 0 created
0 failures (0 no memory)
128 max cache size, 128 in cache
Private particle pools:
Ethernet0/0 buffers, 1536 bytes (total 96, permanent 96):
0 in free list (0 min, 96 max allowed)
96 hits, 0 fallbacks
96 max cache size, 64 in cache
Serial0/0 buffers, 1548 bytes (total 14, permanent 14):
0 in free list (0 min, 14 max allowed)
14 hits, 0 fallbacks
14 max cache size, 14 in cache
BRI0/0 buffers, 1548 bytes (total 14, permanent 14):
0 in free list (0 min, 14 max allowed)
14 hits, 0 fallbacks
14 max cache size, 14 in cache
BRI0/0:1 buffers, 1548 bytes (total 14, permanent 14):
0 in free list (0 min, 14 max allowed)
14 hits, 0 fallbacks
14 max cache size, 14 in cache
BRI0/0:2 buffers, 1548 bytes (total 14, permanent 14):
0 in free list (0 min, 14 max allowed)
14 hits, 0 fallbacks
14 max cache size, 14 in cache
TokenRing0/0 buffers, 1548 bytes (total 64, permanent 64):
0 in free list (0 min, 64 max allowed)
64 hits, 0 fallbacks
64 max cache size, 64 in cache
4 buffer threshold, 0 threshold transitions
프라이빗 입자 풀은 인터페이스에서 사용되며 조정해서는 안 됩니다. 사용 가능한 목록에 사용 가능한 버퍼가 없는 경우 라우터는 공용 입자 풀로 폴백됩니다.
헤더 버퍼는 패킷에 속하는 모든 입자의 목록을 기록하는 데 사용된다.
참고: 시스템 버퍼는 프로세스 스위칭에 사용됩니다. Cisco 3600에서는 이러한 모든 버퍼가 DRAM에 있는 I/O 메모리에 있습니다. memory-size iomem 명령을 사용하여 I/O 메모리의 양을 지정할 수 있습니다. Cisco 7200에서 고대역폭 포트 어댑터(PA)용 인터페이스 입자 버퍼 풀은 SRAM에 있습니다.
버퍼 조정
다음은 show buffers 명령의 예입니다.
Middle buffers, 600 bytes (total 150, permanent 25):
147 in free list (10 min, 150 max allowed)
61351931 hits, 137912 misses, 51605 trims, 51730 created
91652 failures (0 no memory)
이 예에서 중간 버퍼는 많은 실패를 가지고 있습니다. 이는 적중률의 0.1%에 불과하기 때문에 심각한 문제가 아니다. 이러한 수치는 일부 버퍼 튜닝으로 쉽게 개선되어야 합니다.
버퍼 조정은 패킷이 CEF로 전환될 수 없는 경우에만 수행됩니다.
라우터의 아키텍처에 따라 튜닝하는 버퍼는 일반적으로 I/O 메모리(로우엔드) 또는 메인 메모리(하이엔드)에 속합니다. 버퍼를 조정하기 전에 먼저 show memory 명령의 첫 번째 행을 사용하여 충분한 여유 I/O 또는 주 메모리가 있는지 확인합니다.
다음은 사용할 수 있는 몇 가지 일반적인 값입니다.
-
permanent: 풀의 총 버퍼 수를 약 20% 추가합니다.
-
min-free: min-free를 풀에서 할당된 영구 버퍼 수의 약 20-30%로 설정합니다.
-
max-free: max-free를 영속과 최소값의 합보다 큰 값으로 설정합니다.
위의 버퍼 조정 예에서는 전역 컨피그레이션 모드에서 다음 명령을 입력할 수 있습니다.
buffers middle permanent 180
buffers middle min-free 50
buffers middle max-free 230
일반적으로 Cisco IOSE® Software는 이러한 설정이 적합하도록 버퍼를 동적으로 생성합니다. 그러나 트래픽 버스트의 경우 라우터에 새 버퍼를 생성할 충분한 시간이 없을 수 있으며, 실패 횟수는 계속 증가할 수 있습니다. buffers 명령을 사용하여 기본 버퍼 풀 설정을 변경할 수 있습니다. 버퍼 설정이 잘못되면 시스템 성능에 영향을 줄 수 있으므로 버퍼 값을 신중하게 변경해야 합니다. 버퍼 카운터를 지우려면 라우터를 다시 로드해야 합니다.
트래픽 버스트에는 두 가지 종류가 있습니다.
-
느린 버스트: 이 경우 라우터는 새 버퍼를 생성하기에 충분한 시간을 가집니다. 최소 버퍼 수를 늘립니다. 사용 가능한 버퍼를 사용하면 min-free 값에 도달한 다음 새 버퍼를 생성할 수 있습니다.
-
빠른 버스트: 빠른 트래픽 버스트로 라우터에 새 버퍼를 생성할 충분한 시간이 없으므로 사용 가능한 버퍼를 사용해야 합니다. 이렇게 하려면 영구 버퍼 수를 수정합니다.
결론: 처음 조정 후 생성 카운터가 증가하면 최소(느린 버스트)를 증가시킵니다. 실패 카운터가 증가하지만 생성 카운터(fast burst)가 증가하지 않으면 영구 값을 증가시킵니다.
패브릭 버퍼 예약
시스템 처리량을 개선하고 ASIC 버퍼를 예약하려면 fabric buffer-reserve 명령을 입력할 수 있습니다.
이 명령은 다음 모듈에서 지원됩니다.
-
WS-X6704-10GE
-
WS-X6748-SFP
-
WS-X6748-GE-TX
-
WS-X6724-SFP
Supervisor Engine 32로 구성된 Cisco 7600 Series 라우터에서는 이 명령이 지원되지 않습니다.
fabric buffer-reserve [high | low | medium | value]
주의: 이 명령은 Cisco TAC의 지시에만 사용하십시오.
다음은 이 명령이 유용한 일반적인 상황입니다.
-
여러 인터페이스에 대해 라인 프로토콜이 중단됩니다.
-
여러 인터페이스에서 오버런 발생
-
EtherChannel에서 자주 나가고 들어오는 포트
-
DFC가 있는 라인 카드에 대해 TestMacNotification 테스트가 반복적으로 실패함
버퍼 누수
다음은 show buffers 명령의 출력 예입니다.
Big buffers, 1524 bytes (total 1556, permanent 50):
52 in free list (5 min, 150 max allowed)
43670437 hits, 5134 misses, 0 trims, 1506 created
756 failures (0 no memory)
이 출력은 큰 버퍼 풀의 버퍼 누수를 나타냅니다. 라우터에는 총 1,556개의 큰 버퍼가 있으며 사용 가능한 버퍼 목록에는 52개만 있습니다. 어떤 것은 모든 버퍼를 사용하지만 해제하지는 않습니다. 버퍼 누수에 대한 자세한 내용은 버퍼 누수 문제 해결을 참조하십시오.
관련 정보