Программное обеспечение Cisco IOS и NX-OS : Программное обеспечение Cisco IOS версии 12.1 Mainline

Поиск и устранение неполадок памяти

3 апреля 2008 - Перевод, выполненный профессиональным переводчиком
Другие версии: PDF-версия:pdf | Машинный перевод (28 июля 2013) | Английский (28 ноября 2006) | Отзыв

Интерактивный: в данном документе содержится анализ конкретного устройства Cisco.


Содержание

Общие сведения
Предварительные условия
      Требования
      Используемые компоненты
      Условные обозначения
Что такое ошибка выделения памяти?
Признаки
Ошибка "Unable to Create EXEC" или консоль не отвечает
Общие сведения о сообщениях об ошибках
Возможные причины
      Память процессора ("процессор пула" на всех платформах)
      В памяти пакетов ("I/O" или "Processor" в высокопроизводительных маршрутизаторах, "PCI" в серии 7200 и платах VIP)
Поиск и устранение неполадок
      Неполадки, связанные с безопасностью
      Объем памяти не поддерживает данный образ программного обеспечения Cisco IOS
      Ошибка "утечка памяти"
      Для обычных или аномальных процессов используется слишком много памяти
      Проблема или ошибка фрагментирования памяти
      Сбой выделения памяти для процесса = <уровень прерывания>
      Известные проблемы
      Совместно используемой памяти недостаточно для интерфейсов
      Ошибка "утечка буфера"
      Нехватка быстродействующей памяти в маршрутизаторе
Сводка поиска и устранения неполадок
      Сбои распределения пула "процессорной" памяти
      Ошибки выделения пула памяти "I/O" ("Processor" в высокопроизводительных маршрутизаторах, "PCI" в маршрутизаторах серии 7200)
Информация, обязательная для сбора в случае обращения в Центр технической поддержки
Связанные обсуждения сообщества поддержки Cisco
Дополнительные сведения

Общие сведения

В данном документе описаны признаки и возможные причины сбоев при выделении памяти (MALLOCFAIL), а также предложены способы устранения неполадок с памятью.

Предварительные условия

Требования

Для данного документа нет особых требований.

Используемые компоненты

Сведения, приведенные в данном документе, основаны на следующих версиях программного и аппаратного обеспечения:

  • Все версии программного обеспечения Cisco IOS®;

  • Все маршрутизаторы Cisco.

Примечание. Этот документ не относится к коммутаторам Cisco Catalyst или платформам MGX.

Данные для документа были получены в специально созданных лабораторных условиях. При написании данного документа использовались только устройства с пустой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.

Условные обозначения

Дополнительные сведения об условных обозначениях в документах см. в документе "Технические рекомендации Cisco. Условные обозначения".

Что такое ошибка выделения памяти?

Ошибка выделения памяти означает одно из следующего:

  • Маршрутизатор использовал всю доступную память (временно или постоянно); или

  • Память фрагментирована на такие маленькие области, что маршрутизатору не удается найти пригодный доступный блок. Это может произойти с памятью процессора (операционная система Internet Cisco [IOS]) или с памятью пакетов (используется для входящих и исходящих пакетов).

Признаки

Признаки ошибок выделения памяти включают, помимо прочего, следующее:

  • Сообщение в консоли или в журнале: "%SYS-2-MALLOCFAIL: Memory allocation of 1028 bytes failed from 0x6015EC84, Pool Processor, alignment 0" (Выделение памяти в объеме 1028 байт с адреса 0x6015EC84 не выполнено, процессор пула, выравнивание 0);

  • Отклонение сеансов Telnet;

  • Команда show processor memory отображается вне зависимости от введенной с консоли команды;

  • Отсутствуют выходные данные для некоторых команд show;

  • Сообщения "Low on memory" (недостаточно памяти);

  • Сообщение консоли "Unable to create EXEC - no memory or too many processes" (не удается создать EXEC – недостаточно памяти или выполняется слишком много процессов);

  • Маршрутизатор завис либо консоль не отвечает.

Ошибка "Unable to Create EXEC" или консоль не отвечает

Когда маршрутизатору не хватает памяти, в некоторых случаях к маршрутизатору невозможно подключиться с использованием Telnet. При этом важно получить доступ к порту консоли для сбора данных для устранения неполадок. Однако при подключении к порту консоли можно увидеть следующее:

%% Unable to create EXEC - no memory or too many processes

Данное сообщение говорит о том, что памяти недостаточно даже для подключения к консоли. Но существуют шаги, которые можно предпринять для получения данных с использованием консоли. Для этого необходимо сделать так, чтобы маршрутизатор смог освободить некоторое количество памяти, что позволит консоли ответить, после чего станет возможным получить от  маршрутизатора необходимые данные для устранения неполадок.

Примечание. Если на маршрутизаторе настроен протокол пограничных шлюзов (BGP), для уменьшения количества памяти, используемой для этого процесса см. документ Как добиться наилучших результатов маршрутизации и сократить потребление памяти протоколом BGP.

Ниже приведены действия, которые можно попытаться предпринять с использованием порта консоли при наличии очень небольшого количества доступной памяти.

  1. Отключите кабели LAN и WAN от интерфейсов маршрутизатора. Это приведет к тому, что через маршрутизатор перестанут проходить пакеты.

  2. Проверьте консоль. Удается ли получить ответ и выполнить команды? Через некоторое время должно появиться достаточное количество доступной памяти, чтобы консоль смогла ответить.

  3. Соберите нужную информацию из привилегированного режима EXEC (Router#). Необходимо, как минимум, получить полные выходные данные следующих команд: show memory allocating-process totals (или show memory summary, если недоступна команда show memory allocating-process totals), show logging и, по возможности, show technical-support.

  4. После получения необходимых данных подключите все кабели LAN и WAN и продолжайте следить за использованием памяти маршрутизатора.

Общие сведения о сообщениях об ошибках

При выполнении команды show logging должно быть выведено нечто подобное:

%SYS-2-MALLOCFAIL: Memory allocation of [X] bytes failed from
0x6015EC84, pool [Pool], alignment 0 -Process= 
"[Process]" ipl= 6, pid=5

[X] = количество байтов, которые маршрутизатор попытался выделить, но сделать это не удалось из-за отсутствия достаточного количества свободной памяти

[Pool] указывает на недостаточность памяти процессора ("Pool Processor") или памяти пакетов ("pool I/O"). У высокопроизводительных маршрутизаторов (серий 7000, 7500) есть буферы в основной динамической оперативной памяти (DRAM), поэтому нехватка памяти пакетов будет обозначаться как нехватка "процессора пула". В коммутаторах серии 7200 и платах многоцелевого процессора интерфейсов (VIP) также могут отображаться ошибки управляющей информации протокола пула ("pool PCI") для памяти пакетов.

[Process] – это процесс, на который оказал влияние недостаток памяти.

Возможные причины

Память процессора ("процессор пула" на всех платформах)

Объем памяти не поддерживает данный образ программного обеспечения Cisco IOS

Ошибка "утечка памяти"

Для обычных или аномальных процессов используется слишком много памяти

Проблема или ошибка фрагментирования памяти

Сбой выделения памяти для процесса = <уровень прерывания>

Известные проблемы

Известна проблема 70x0 при загрузке ПО Cisco IOS большого объема из флэш-памяти или посредством Netboot

Средства IP Input и UT Discovery пакета CiscoWorks

В памяти пакетов ("I/O" или "Processor" в высокопроизводительных маршрутизаторах, "PCI" в серии 7200 и платах VIP)

Для интерфейсов недостаточно совместно используемой памяти

Ошибка "утечка буфера"

Нехватка быстродействующей памяти в маршрутизаторе

Поиск и устранение неполадок

Неполадки, связанные с безопасностью

Как правило, ошибки MALLOCFAIL обусловлены проблемами с безопасностью, например, из-за функционирования червей или вирусов в сети. Вероятнее всего причиной является именно это, если в сети не было недавних изменений, например, обновление IOS маршрутизатора. Обычно для ограничения негативных последствий этой проблемы бывает достаточно добавить дополнительные строки в списки доступа. На странице Сообщения и заметки по безопасности продуктов Cisco содержится информация по выявлению наиболее вероятных причин и конкретные способы их устранения.

Дополнительные сведения см. в:

Объем памяти не поддерживает данный образ программного обеспечения Cisco IOS

Сначала проверьте в документах Примечания к выпуску или Область загрузки ПО (только для зарегистрированных пользователей) требования к минимальному размеру памяти для используемого набора функций и версии. Убедитесь в том, что памяти достаточно. Требования к памяти, указанные на веб-узле Cisco Connection Online (CCO), являются минимально рекомендуемыми для обеспечения правильной работы маршрутизатора в большинстве корпоративных сетей. Фактические требования к памяти могут меняться в зависимости от протоколов, таблиц маршрутизации и схем прохождения трафика.

Ошибка "утечка памяти"

При наличии выходных данных команд show memory allocating-process totals, show memory summary или show technical-support (в режиме включения) для устройства Cisco, можно использовать служебную программу для выявления проблем и поиска их решений. Чтобы воспользоваться служебной программой, необходимо быть зарегистрированным пользователем и выполнить вход, при этом должна быть включена поддержка JavaScript.

Утечка памяти происходит в случаях, когда процесс запрашивает или выделяет память, после чего по каким-то причинам не освобождает ее после завершения своей задачи. В результате блок памяти остается зарезервированным до перезагрузки маршрутизатора. Со временем для этого процесса выделяется все больше и больше памяти до тех пор, пока доступной памяти не останется. В зависимости от тяжести ситуации с недостатком памяти на данном этапе единственной возможностью восстановления работоспособности маршрутизатора может оказаться его перезагрузка.

Это ошибка операционной системы Internet Cisco (IOS). Чтобы устранить эту проблему, обновите программное обеспечение до последней версии серии (например, если используется программное обеспечение Cisco IOS® release 11.2(14), следует выполнить обновление до последнего release 11.2(x)).

Если при этом проблема не устраняется или при нежелании обновлять маршрутизатор, в течение некоторого времени через постоянные промежутки времени вводите команду show processes memory (например, каждые несколько часов в зависимости от быстрой или медленной утечки памяти). Проверьте, продолжает ли уменьшаться количество свободной памяти, которая после не возвращается. Скорость, с которой исчезает свободная память, зависит от частоты возникновения события, ведущего к утечке. Поскольку память никогда не освобождалась, можно отследить процесс, использующий память, получив снимки памяти за определенное время. Следует помнить, что различные процессы выделяют и освобождают память по необходимости, в результате чего будут возникать различия, но при продолжении утечки можно увидеть один процесс, который потребляет больше памяти. Примечание: для некоторых процессов, например, протокола пограничных шлюзов (BGP) или маршрутизатора выбора кратчайшего пути (OSPF), нормальным является использование более одного мегабайта памяти, что не означает утечку последней.

Чтобы определить процесс, расходующий больше памяти, сравните данные столбца Holding команды show processes memory за некоторый интервал времени. Иногда можно быстро обнаружить процесс, который занимает несколько мегабайтов памяти. В других случаях может потребоваться несколько снимков для обнаружения процесса, вызывающего сбой. При потере значительного количества памяти выполните команду show memory allocating-process totals или команду show memory summary, выходные данные которых помогут при поиске и устранении неполадок. После свяжитесь с Центром технической поддержки Cisco (TAC) и предоставьте полученную информацию со сводными данными маршрутизатора, полученными при помощи команды show technical-support.

Служебная программа Output Interpreter позволяет анализировать выходные данные команд show memory allocating-process totals и show memory summary.

В приведенной ниже таблице указаны первые три строки выходных данных команды show memory summary:

Router>show memory summary 

            Head       Total (b)   Used (b)  Free (b)   Lowest (b)  Largest (b)
Processor   60AB4ED0   5550384     2082996   3467388    3464996     3454608
I/O         40000000   16777216    1937280   14839936   14839936    14838908

Total = общее количество памяти, доступное после загрузки образа системы и создания структур его данных.

Used = количество выделенной в текущий момент памяти.

Free = количество свободной в текущий момент памяти.

Lowest = минимальное количество свободной памяти, запомненное маршрутизатором с момента последней загрузки.

Largest = самый большой свободный блок памяти на данный момент.

Команда show memory allocating-process totals содержит ту же информацию, которая содержится в первых трех строках выходных данных команды show memory summary.

Вот что можно узнать из выходных данных команды show processes memory:

Router>show processes memory 
Total: 3149760, Used: 2334300, Free: 815460

PID   TTY   Allocated    Freed      Holding    Getbufs    Retbufs   Process
0     0     226548       1252       1804376    0          0         *Initialization*
0     0     320          5422288    320        0          0         *Scheduler*
0     0     5663692      2173356    0          1856100    0         *Dead*
1     0     264          264        3784       0          0         Load Meter
2     2     5700         5372       13124      0          0         Virtual Exec
3     0     0            0          6784       0          0         Check heaps
4     0     96           0          6880       0          0         Pool Manager
5     0     264          264        6784       0          0         Timers
6     0     2028         672        8812       0          0         ARP Input
7     0     96           0          6880       0          0         SERIAL A' detect
8     0     504          264        7024       0          0         ATM ILMI Input
9     0     0            0          6784       0          0         ILMI Process
10    0     136          0          6920       0          0         M32_runts pring
11    0     136          0          6920       0          0         Call drop procs
12    0     340          340        12784      0          0         ATMSIG Timer
13    0     445664       442936     13904      0          0         IP Input
14    0     2365804      2357152    17992      0          0         CDP Protocol
15    0     528          264        7048       0          0         MOP Protocols
16    0     188          0          9972       0          0         IP Background
17    0     0            1608       6784       0          0         TCP Timer
18    0     5852116      0          14236      0          0         TCP Protocols

Allocated = общее количество байт, выделенных процессом с момента загрузки маршрутизатора.

Freed = общий объем байтов, освобожденных этим процессом.

Holding = общее количество байт, занимаемых данным процессом в настоящий момент. Это наиболее важный столбец для поиска и устранения неполадок, так как он показывает реальное количество памяти, относящейся к этому процессу. Занимаемый объем не всегда равен выделенному за вычетом свободного, т.к. некоторые процессы резервируют блок памяти, который позднее возвращается другим процессом в пул свободной памяти.

Процесс *Dead*

Процесс *dead* не является реальным процессом. В нем учитывается память, выделенная в контексте другого уже завершенного процесса. Пример:

При настройке преобразования сетевых адресов (NAT) во время сеанса Telnet выделяется память. Эта память учитывается для процесса Telnet ("выполняемый виртуально"). После завершения процесса память для конфигурации NAT продолжает использоваться. Это отображается при помощи процесса *dead*.

При помощи команды show memory dead в столбце "What" можно увидеть, в каком контексте выделялась память:

Router#show memory dead 
               Head   Total(b)    Used(b)    Free(b)  Lowest(b) Largest(b) 
      I/O    600000    2097152     461024    1636128    1635224    1635960 
  
          Processor memory 
  
 Address  Bytes Prev.    Next     Ref  PrevF   NextF   Alloc PC  What 
1D8310       60 1D82C8   1D8378     1                  3281FFE   Router Init 
2CA964       36 2CA914   2CA9B4     1                  3281FFE   Router Init 
2CAA04      112 2CA9B4   2CAAA0     1                  3A42144   OSPF Stub LSA RBTree 
2CAAA0       68 2CAA04   2CAB10     1                  3A420D4   Router Init 
2ED714       52 2ED668   2ED774     1                  3381C84   Router Init 
2F12AC       44 2F124C   2F1304     1                  3A50234   Router Init 
2F1304       24 2F12AC   2F1348     1                  3A420D4   Router Init 
2F1348       68 2F1304   2F13B8     1                  3381C84   Router Init 
300C28      340 300A14   300DA8     1                  3381B42   Router Init 

При обнаружении утечки памяти и когда есть подозрение, что память потребляет процесс *Dead*, включите show memory dead в информацию, предоставляемую в Cisco TAC.

Для обычных или аномальных процессов используется слишком много памяти

Это один из самых сложных для проверки случаев. Проблема характеризуется большим количеством свободной памяти, но малым значением в столбце "Lowest". Нормальное или аномальное событие (например, серьезная нестабильность маршрутизации) заставляет маршрутизатор в данном случае использовать необычно большой объем памяти процессора за короткое время, в течение которого наблюдается нехватка памяти. В течение этого периода маршрутизатор сообщает об ошибке MALLOCFAIL. Вскоре после появления этого сообщения может произойти очистка памяти и проблема исчезнет (например, при стабилизации сети). Нехватка памяти может быть вызвана и сочетанием таких факторов, как:

  • утечка большого объема памяти и нестабильность сети, приведшая к обнулению свободной памяти;

  • у маршрутизатора недостаточно памяти, но эта проблема обнаруживается только при редком сетевом событии.

Если маршрутизатор не был перезагружен, введите команду show memory allocating-process totals (или команду show memory summary, если show memory allocating-process totals недоступна) и просмотрите первые три строки. Сообщения журнала могут предоставить ключевую информацию о том, какие процессы потребляли много памяти:

Когда потребление большого количества памяти возникло в результате:

  • стандартного события, решение заключается в увеличении объема памяти;

  • редкого или аномального события, устраните соответствующую неполадку. Можно приобрести дополнительную память "для страховки" в будущем.

Проблема или ошибка фрагментирования памяти

Данная ситуация означает, что процесс использовал большое количество памяти процессора, а затем освободил большую часть или всю ее, после чего остались фрагменты памяти, зарезервированные этим или другим процессом, для которого память выделялась при возникновении проблемы. Если одно и то же событие будет происходить несколько раз, память может быть фрагментирована на очень мелкие блоки – настолько, что все процессы, требующие более крупных блоков памяти, не смогут получить требуемый объем памяти. Если память плохо фрагментирована, это может отразиться на работе маршрутизатора так, что вы не сможете соединиться с маршрутизатором и видеть строку приглашения.

Данная проблема характеризуется низким (менее 20 000 байт) значением в столбце "Largest" команды show memory и одновременно достаточным (не менее 1 Мб) значением в столбце "Freed", либо другим явным расхождением между значениями в двух столбцах. Такое может произойти, если в маршрутизаторе не хватает памяти из-за простого отсутствия процедуры дефрагментации в IOS.

При подозрении на фрагментацию памяти отключите несколько интерфейсов. Это может освободить фрагментированные блоки. Если это помогло, то с памятью все в порядке, просто необходимо увеличить ее объем. Если отключение интерфейсов не помогает, причина может заключаться в ошибке. Лучшим решением будет обращение к представителю службы поддержки Cisco с предоставлением ему собранной информации.

Сбой выделения памяти для процесса = <уровень прерывания>

Данную ситуацию можно определить по процессу в сообщении об ошибке. Если процесс упоминается как <уровень прерывания>, как в следующем примере, тогда сбой выделения памяти вызывается проблемами с программным обеспечением.

"%SYS-2-MALLOCFAIL: Memory allocation of 68 bytes failed from 0x604CEF48, 
pool Processor, alignment 0-Process= <interrupt level>, ipl= 3"

Это ошибка операционной системы Internet Cisco (IOS). Для выявления соответствующих идентификаторов ошибок можно использовать служебную программу Bug Toolkit (только для зарегистрированных пользователей). После выявления программной ошибки обновите версию программного обеспечения Cisco IOS, которая содержит исправление ошибки.

Известные проблемы

Известная проблема 70x0 при загрузке ПО Cisco IOS большого объема из флэш-памяти или посредством Netboot

Когда процессор маршрутизатора (RP) 7000 загружает образ из флэш-памяти, сначала в память загружается образ из ROM, а затем образ из флэш-памяти. Объем памяти предыдущей версии RP составляет только 16 Мб, а версии Enterprise программного обеспечения Cisco IOS® начиная с 11.0 занимают в распакованном состоянии более 8 Мб. Таким образом, при загрузке образа сначала из памяти ROM и затем из флэш-памяти, возможна нехватка памяти маршрутизатора 7000 RP или фрагментация памяти в процессе загрузки, что приводит к отображению сообщений об ошибках памяти.

Решение заключается во включении функции быстрой загрузки в регистре конфигурации, чтобы RP загружал в оперативную память минимальный набор функций из образа Cisco IOS, после чего полностью загружал ПО Cisco IOS из флэш-памяти. Для включения быстрой загрузки установите регистр конфигурации в значение 0x2112. Это также ускорит процесс загрузки.

Средства IP Input и UT Discovery пакета CiscoWorks

Использование средства UT Discovery из пакета CiscoWorks может привести к тому, что в некоторых из маршрутизаторов количество свободной памяти станет слишком маленьким. С помощью команды show proc memory можно увидеть, что большое количество памяти используется процессом "IP input". Это частный случай проблемы Для обычных или аномальных процессов используется слишком много памяти для процесса "IP input", что также может привести к возникновению проблемы Фрагментирование памяти, когда условие слишком малого количества памяти приводит к фрагментированию памяти.

Использование средства UT Discovery приводит к тому, что станция управления сетью отсылает большое количество сообщений ping для всех IP во всех обнаруженных подсетях. Проблемы с памятью возникают из-за роста размера кэша быстрой коммутации IP в маршрутизации, поскольку для каждого нового адреса места назначения создается новая запись. Поскольку маска, используемая для записей в кэше, зависит от того, какое в нем используется подразделение на сети, наличие адреса, использующего 32-битовую маску (например, адреса обратной связи), в большинстве сетей приводит к тому, что во всех записях для этой сети будет использоваться 32-битовая маска. Это приводит к созданию в кэше большого количество записей, для которых используется большое количество памяти.

Лучшим решением будет отключение UT Discovery. Это можно проделать следующим образом:

  1. Перейдите к C:\Program Files\CSCOpx\etc\cwsi\ANIServer.properties.

  2. Добавьте "UTPingSweep=0".

  3. Перезапустите ANI.

Это может привести к исчезновению из таблицы отслеживания пользователей некоторых конечных серверов, либо к их устареванию (эта проблема может возникать с другим приложением Cisco под названием User Registration Tool, которое использует UT), но это не влияет на средство Campus Discovery, которое использует только трафик SNMP. Исправить данную ситуацию также можно при помощи CEF (с использованием CEF кэш IP создается из таблицы маршрутизации при загрузке). Дополнительные сведения о CEF и других доступных путях коммутации см. в документе Выбор наилучшего пути маршрутизации в сети.

Есть много других приложений, которые могут привести к возникновению подобной ситуации с нехваткой памяти. В большинстве случаев причина проблемы заключается не в маршрутизаторе, а в самом приложении. Обычно такие лавинные рассылки пакетов можно предотвратить отслеживанием конфигурации приложения.

Совместно используемой памяти недостаточно для интерфейсов

В некоторых маршрутизаторах (например, серий 2600, 3600 и 4000) для поддержки определенных процессоров интерфейсов есть минимальные требования к количеству памяти входящих/исходящих пакетов.

Если у маршрутизатора становится недостаточно совместно используемой памяти даже после перезагрузки, физическое удаление интерфейсов решает данную проблему.

В маршрутизаторах серии 3600 для установления количества динамической оперативной памяти в процентах, используемой для памяти входящих/исходящих пакетов и памяти процессора, можно воспользоваться командой memory-size iomem i/o-memory-percentage. Для i/o-memory-percentage можно использовать значения (в процентах) 10, 15, 20, 25 (по умолчанию), 30, 40 и 50. Для памяти входящих/исходящих пакетов требуется не менее 4 Мб.

Для устранения данной проблемы см.:

Ошибка "утечка буфера"

При наличии выходных данных команд show buffers или show technical-support (в режиме включения) для устройства Cisco, можно использовать служебную программу для выявления проблем и поиска их решений. Чтобы воспользоваться служебной программой, необходимо быть зарегистрированным пользователем и выполнить вход, при этом должна быть включена поддержка JavaScript.

Когда в буфере процесс завершен, процесс должен освободить буфер. Утечка буфера происходит, когда программный код по каким-то причинам не обработывает буфер или не освобождает его после завершения работы с пакетом. В результате при скоплении пакетов в буферах пул буферов продолжает разрастаться.

Утечку буфера можно обнаружить при помощи команды show buffers. Некоторые из пулов Public Buffer должны быть аномально большими при небольшом количестве свободных буферов. После перезагрузки можно увидеть, что количество свободных буферов никогда не приближается к общему количеству буферов.

Служебная программа Output Interpreter позволяет анализировать выходные данные команды show buffers.

В приведенном ниже примере затронуты буферы Middle. Команда show buffers показывает, что используется около 8094 буферов, которые не освобождаются (всего 8122 минус 28 свободных):

Public buffer pools: Small buffers, 104 bytes (total 50, permanent 50): 
     50 in free list (20 min, 150 max allowed)
     403134 hits, 0 misses, 0 trims, 0 created
     0 failures (0 no memory)
Middle buffers, 600 bytes (total 8122, permanent 200):
     28 in free list (10 min, 300 max allowed)
     154459 hits, 41422 misses, 574 trims, 8496 created
Big buffers, 1524 bytes (total 50, permanent 50):
     50 in free list (5 min, 150 max allowed)
     58471 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) 

Это ошибка программного обеспечения Cisco IOS. Чтобы устранить известную проблему утечки буфера, обновите программное обеспечение до последней версии серии (например, если используется программное обеспечение Cisco IOS® Release 11.2(14), следует выполнить обновление до последней версии образа 11.2(x)). Если это не решает проблему либо не удается обновить маршрутизатор, когда маршрутизатору недостаточно памяти, введите следующие команды для проблемного пула. Эти команды отобразят дополнительную информацию о содержимом буферов:

  • show buffer old: отображает буферы, зарезервированные более минуты назад;

  • show buffer pool (small - middle - big - verybig - large - huge): отображает сводку по буферам указанного пула;

  • show buffer pool (small - middle - big - verybig - large - huge) dump: отображает в формате hex/ASCII содержимое всех используемых буферов указанного пула.

Дополнительные сведения см. в документе Поиск и устранение утечки буферов.

Нехватка быстродействующей памяти в маршрутизаторе

Эта проблема относится к серии 7500. Если в маршрутизаторе становится недостаточно "быстрой" памяти, вместо нее он будет использовать основную динамическую оперативную память (DRAM). Не требуется предпринимать никаких действий.

Сводка поиска и устранения неполадок

Сбои распределения пула "процессорной" памяти

Выполните следующие действия.

  1. Проверьте требования к памяти для версии Cisco IOS или набора вспомогательных программ.

  2. Если это возможно, обновите программное обеспечение Cisco IOS до последнего выпуска данной серии.

  3. Проверьте, не используется ли большое количество памяти для обычных или аномальных процессов. При необходимости установите дополнительную память.

  4. Проверьте, является это утечкой или фрагментированием (в высокопроизводительных маршрутизаторах утечка буферов).

  5. Соберите соответствующую информацию и обратитесь в TAC.

Ошибки выделения пула памяти "I/O" ("Processor" в высокопроизводительных маршрутизаторах, "PCI" в маршрутизаторах серии 7200).

Выполните следующие действия.

  1. Проверьте требования к совместно используемой памяти (см. раздел "Для интерфейсов недостаточно совместно используемой памяти").

  2. Если это возможно, обновите программное обеспечение Cisco IOS до последнего выпуска данной серии.

  3. Определите пул буферов, с которым возникли проблемы, соберите соответствующую информацию и обратитесь в TAC.

Информация, обязательная для сбора в случае обращения в Центр технической поддержки

Если после выполнения описанных выше действий по устранению неполадок вам по-прежнему нужна помощь и вы планируете Обращение в центр технической поддержки Cisco (только для зарегистрированных пользователей), убедитесь в том, что в запрос включена следующая информация:

  • Перед направлением запроса выполнена процедура выявления неполадок;

  • Выходные данные команды show technical-support (если возможно, в режиме включения) – несколько наборов информации, демонстрирующих изменение использования памяти маршрутизатором с течением времени;

  • Выходные данные команды show log или снимки консоли (если имеются);

  • Выходные данные команды show memory allocating-pool totals или show memory summary – несколько наборов информации, демонстрирующих изменение использования памяти маршрутизатором с течением времени.

Для получения информации также можно воспользоваться действиями, описанными в разделе Ошибка "Unable to Create EXEC" или консоль не отвечает. Для определения причины проблемы может потребоваться несколько наборов полученной информации. Поскольку есть несколько типов утечек памяти, после определения типа утечки памяти инженеру TAC может потребоваться дополнительная информация.

Если есть подозрение на фрагментирование памяти, включите следующее:

  • show memory free;

  • show memory bigger.

Если есть подозрение на утечку буферов, включите следующее:

  • show buffer old;

  • show buffer pool (small - middle - big - verybig - large - huge): для проблемного пула. Например, если есть подозрение на утечку в пуле средних пакетов, включите выходные данные команды show buffer pool middle;

  • show buffer pool (small - middle - big - verybig - large - huge) packet: для проблемного пула. Например, если есть подозрение на утечку в пуле средних пакетов, включите выходные данные команды show buffer pool middle packet.

Информацию можно приложить к запросу путем загрузки с помощью служебной программы TAC Service Request (только для зарегистрированных пользователей). Если служебная программа Service Request недоступна, необходимые данные можно отправить на адрес электронной почты attach@cisco.com. Чтобы эти данные были добавлены к запросу, в теме сообщения следует указать номер запроса.

Примечание. Не выполняйте ручную перезагрузку или выключение/включение маршрутизатора до сбора указанной информации (если это не требуется для выявления неполадок), поскольку это может вызвать потерю важной информации, необходимой для определения источника проблемы. В зависимости от причины, в процессе выявления и устранения неполадок инженер TAC может предложить перезагрузить маршрутизатор и собрать после перезагрузки дополнительную информацию.


Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения


Document ID: 6507