Как найти размер кучи в Linux? - PullRequest
2 голосов
/ 01 марта 2010

У меня Linux работает на процессорной плате ARM Cortex-A8. Версия ядра получается по (uname -a):

Linux 2.6.29-dirty # 2 пт 29 января 16:54:21 IST 2010 armv7l неизвестен

Для отладки некоторых моих приложений, которые аварийно завершают работу из-за сбоя malloc () (размер, который я неправильно использую), и на плате установлено 208 МБ DRAM. На этой установке Linux / Board мне нужно узнать:

  1. Какой размер кучи выделен / отведен для этой конфигурации Kernet.

  2. Как я могу увеличить этот размер кучи. Требуется ли пересборка ядра / новая версия образа ядра?

Ответы [ 2 ]

2 голосов
/ 01 марта 2010

Я не знаю о специфике ARM Linux; однако, предполагая, что вы говорите о приложении пользовательского пространства, а не о пространстве ядра, по сути нет «размера кучи». «Классический Unix-способ» управления памятью в пользовательском пространстве представляет собой «расширяющуюся кучу» - приложение имеет кучу конечного размера, и когда ему необходимо ее расширить, она вызывает функцию brk (). Я полагаю, у вас нет свопа и отключенного overcommit на этой платформе - посмотрите в / proc / meminfo (или вывод 'top'), чтобы увидеть доступную память.

0 голосов
/ 01 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...