Маршрутизаторы : маршрутизаторы Cisco ISR серии 2900

Устранение проблем утечек памяти MallocLite

5 апреля 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Отзыв

Введение

Этот документ описывает, как устранить неполадки утечек памяти MallocLite на Cisco платформы IOS®software.

Это также задает информацию, которую необходимо собрать, прежде чем вы откроете Центр технической поддержки Cisco (TAC) случай или повторно загрузите устройство. Соберите выходные данные, упомянутые в этом документе, и подключите их к кэйсу ТАС (Центра технической поддержки), чтобы помочь ускорять устранение проблемы.

Внесенный Михалом Стэнчиком и Дэвидом Ченом, специалистами службы технической поддержки Cisco.

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

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

Каждый заголовок блока памяти берет приблизительно 48 байтов памяти, и самый маленький блок берет приблизительно 24 байта. Даже если необходимо выделить только 8 байтов реальных данных, с традиционным подходом в программном обеспечении Cisco IOS для каждого выделения вы использовали бы по крайней мере 72 (48 + 24) байты памяти.

С MallocLite эти издержки могут быть уменьшены при помощи блоков. Существуют все еще некоторые издержки, потому что нужно управлять блоками. Однако, так как блоки являются фиксированным размером, ими управляют по-другому, чем блоки, и издержки меньше.

Это - ответственность приложений, которые используют память MallocLite для освобождения его должным образом. MallocLite маскирует пользователя памяти.

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

Примечания:

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

Средство интерпретации выходных данных (только зарегистрированные клиенты) поддерживает некоторые команды show. Используйте Средство интерпретации выходных данных, чтобы просмотреть анализ выходных данных команды show.

Определите приложение, ответственное за утечку

Если вы ищете только malloclite ключевым словом, обычно трудно определить существующий дефект.

Данный пример показывает, что *MallocLite* процесс держит аварийное количество памяти:

#show processes memory sorted

Processor Pool Total: 1614282720 Used: 1544726580 Free:  69556140
     I/O Pool Total: 313524224  Used: 115564032  Free: 197960192

PID TTY Allocated     Freed   Holding   Getbufs   Retbufs Process
 0  0         0         0 1476043512        0         0 *MallocLite*

Необходимо определить точное приложение, которое ответственно за утечку. Три возможных метода идентификации:

  • Декодируйте ПК программы распределения.
  • Исследуйте статистику памяти MallocLite.
  • Отключите MallocLite.

Декодируйте ПК программы распределения

Даже с включенным MallocLite, можно обычно видеть то, что функция попросила памяти. Выходные данные от команды show memory allocating-process totals могли бы показать другие значения ПК даже при том, что название сообщило, MallocLite:

#show memory allocating-process totals
<snip>
Allocator PC Summary for: Processor
Displayed first 2048 Allocator PCs only
   PC         Total  Count Name
0x620BE3C4  42807572    594 MallocLite
0x620ADDD4  13597308    193 MallocLite
0x60738BB0   8909824    122 MallocLite
0x620AE0E0   2060716     31 MallocLite
0x620AE10C   1982780     30 MallocLite

Специалист службы технической поддержки Cisco может декодировать значения ПК от вершины списка (с самым высоким общим количеством). Это помогает определять приложение, которое имеет утечку памяти.

Исследуйте статистику памяти MallocLite

Среди усовершенствований, добавленных в Cisco IOS Software Release 15.1T, был новый CLI, который отображает сводку памяти MallocLite, выделенной каждым ПК. Команда облегченных блоков show memory может помочь вам определять приложения, которые используют большое количество блоков MallocLite.

show memory lite-chunks { statistics | totals } { summary { pool | { all | pool } } }

Обратитесь к Справочнику по командам для подробных данных команды облегченных блоков show memory.

CLI  : show memory lite-chunks totals
DESC : Summary of all pools, based on alloc pc.
This cli can be used to find the alloc_pc which is using large amount memory
allocated from all mlite pools

CLI  : show memory lite-chunks statistics
DESC : Displays number of allocated & free mlite chunks

CLI  : show memory lite-chunks summary pool pool
DESC : Show summary of particular mlite pool
This cli can be used to find the alloc_pc which is using large amount of memory
in individual mlite pool

CLI  : show memory lite-chunks summary pool all
DESC : Show individual summary of all mlite pools

CLI  : show memory lite-chunks pool pool
DESC : Show All chunk elements in the specified pool

CLI  : show memory lite-chunks pool all
DESC : show all chunk elements in all mlite pools

Примеры вывода от этой команды включают:

#show memory lite-chunks ?
 pool       Malloc lite pool
 statistics Malloc lite statistics
 summary    Malloc Lite summary
 totals     Malloc Lite Allocating totals

#show memory lite-chunks statistics

     Pool      Inuse      Free
  8-Bytes        140      1904
 20-Bytes        173      1313
 44-Bytes        171       791
 68-Bytes         24       687
 96-Bytes         26       519
 128-Bytes         20       410

#show memory lite-chunks totals

      PC        Total      Count
 26067AE0         2112         33
 2269E68C         1932         29
 2269FACC         1664         29
 2269F964         1664         26
 2269FA9C         1580         29
 26067FB4         1360         34
 23CD2A0C         1036          7

#show memory lite-chunks pool ?

 128-Bytes 128 bytes pool
 20-Bytes  20 bytes pool
 44-Bytes  44 bytes pool
 68-Bytes  68 bytes pool
 8-Bytes   8 bytes pool
 96-Bytes  96 bytes pool
 all       all pools

#show memory lite-chunks summary pool 8

       8 bytes pool
      PC        Total      Count
 2269FB10          812         29
 23612084          700         25
 2269F9F8          700         25
 2269F9EC          700         25

Снова, инженер TAC может декодировать значения ПК с самым высоким общим количеством и определить приложение, которое пропускает память.

Отключите MallocLite

Опция MallocLite активирована по умолчанию. Для исследования утечки MallocLite можно отключить MallocLite:

(config)#no memory lite

Пропущенная память будет все еще находиться под MallocLite до следующей повторной загрузки; однако, можно начать контролировать дальнейшие утечки с сортированным show processes memory и команды show memory allocating-process totals. Утечки теперь появятся под реальном существующим процесс.

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

#wr
#reload

Память могла бы истощить снова в течение долгого времени, так используйте сортированного show processes memory и команды show memory allocating-process totals чтобы к использованию памяти монитора от той точки вперед.

Примечание: Если вы эффективно отключите MallocLite ни с какой командой memory lite и перезагрузитесь, то устройство, выведенное от команды облегченных блоков show memory, будет пусто.

Обратитесь к Справочнику по командам для подробных данных команды memory lite.


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

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