2011-01-27 15 views
11

Busco una manera de seleccionar las secciones y regiones de memoria incluida en un volcado de memoria.
tamaño del volcado del núcleo de mi solicitud es alrededor de 30 GB, la mayor parte es en tampones preasignados la que ni siquiera se precisa en la depuración (y puede poner a cero después). Sin embargo, dado que el volcado es tan grande, se necesita demasiado tiempo para que la aplicación termine colisionando y comience la recuperación.
Puede alguien pensar en una manera de seleccionar de antemano qué segmentos estarán en el vaciado de memoria?
GraciasVolcado de núcleo selectivo en Linux - ¿Cómo puedo seleccionar las secciones objeto de dumping?

Respuesta

16

De acuerdo con la página de manual core(5), puede establecer qué asignaciones se escribe en el archivo central:

Desde el kernel 2.6.23, el archivo específica de Linux /proc/PID/coredump_filter puede haber utilizado para controlar qué segmentos memoria se escriben en el archivo de volcado de memoria en el caso de que un volcado de memoria es realizado para el proceso con el correspondiente ID de proceso .

El valor en el archivo es una máscara de bits de tipos de asignación de memoria (ver mmap (2)). Si se pone un bit en la máscara, a continuación, se vierten asignaciones de memoria del correspondiente tipo ; de lo contrario, son no objeto de dumping. Los bits de este archivo tienen los siguientes significados:

 bit 0 Dump anonymous private mappings. 
     bit 1 Dump anonymous shared mappings. 
     bit 2 Dump file-backed private mappings. 
     bit 3 Dump file-backed shared mappings. 
     bit 4 (since Linux 2.6.24) 
       Dump ELF headers. 
     bit 5 (since Linux 2.6.28) 
       Dump private huge pages. 
     bit 6 (since Linux 2.6.28) 
       Dump shared huge pages. 

Por defecto, se establecen los siguientes bits: 0, 1, 4 (si los CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS opción de configuración del núcleo está habilitado), y 5. El El valor de este archivo se muestra en hexadecimal. (El valor predeterminado se muestra así como 33.) Las páginas de E/S mapeadas en memoria, como el búfer de cuadros, nunca se vuelcan, y las páginas DSO virtuales siempre se vuelcan, independientemente del valor de coredump_filter.

...

Este archivo sólo se proporciona si el núcleo fue construido con la opción de configuración CONFIG_ELF_CORE.

+0

Gracias. Exactamente lo que estaba buscando. –

0

No estoy seguro de si es posible establecer qué parte de la memoria vaciar.

De man 5 core

archivo de disco que contiene una imagen de la memoria del proceso en el momento de la terminación

Como opción se puede truncar el archivo de núcleo usando setrlimit con un parámetro RLIMIT_CORE.

Cuestiones relacionadas