2016-04-04 1 views
0

Как предсказать размер основного файла на основании, например, /proc/pid/maps, /proc/pid/coredump_filter, значения, указанные top, как VIRT RES и так далее?Как предсказать размер основного файла процесса перед его созданием с помощью GDB?

Вообще говоря, зависит размер файла ядра и то, что именно содержит файл (какие части виртуального адресного пространства?)?

Я немного запутался в том, что файл ядра может быть меньше, чем VIRT или сумма всех памяти колеблется в /proc/pid/maps, так что я подозреваю, что файл будет неполным.

ответ

1

Как размер основного файла можно предсказать на основе, например,/Proc/PID/карты,/Proc/PID/coredump_filter, значения, показанные на вершине, как VIRT RES и так далее?

Верхняя граница представляет собой сумму всех отображений в /proc/$$/maps. Однако обычно сопоставления только для чтения не сохраняются в core (при условии, что вы будете иметь файлы, которые отображаются только для чтения, в то время, когда вы используете core).

Нижняя граница представляет собой сумму всех записываемых сопоставлений в /proc/$$/maps. Это нижняя граница, потому что ядро ​​обычно также выгружает первую страницу исполняемых сопоставлений только для чтения, так как это то, где линкер BUILD_ID примечание ELF. Эта заметка позволяет GDB находить правильную версию исполняемых или разделяемых библиотек, даже если система была обновлена ​​новыми. core также содержит дамп регистров для каждого потока. Также есть некоторые издержки для самого формата ELF.

VIRT и RES обычно не являются хорошей оценкой: VIRT «слишком велик» - он содержит отображения только для чтения, а также страницы, которые вносят в процесс, но на самом деле не были загружены. RES может быть слишком мал, если части вашей памяти были заменены.

Я немного запутался в том, что файл ядра может быть меньше, чем ВИРТ или сумма всех диапазонов памяти в/Proc/PID/карты, так что я подозреваю, что файл будет неполным.

Как я объяснялось выше, core меньше, чем быть VIRT и сумма всех диапазонов памяти в /proc/pid/maps является нормальным и ожидалось.

Наконец, если вы действительно хотите найти точную оценку, прежде чем фактически сбросить ядро, вы можете изучить Google user-space coredumper.

Смежные вопросы