Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » Trabajar con ficheros de texto "grandes": Terminado (killed)  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 8 mensajes ] 
 
Nota 2011-11-15 04:47 @241

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Trabajar con ficheros de texto "grandes": Terminado (killed)
Buenas.

Tengo un programa que trabaja con un fichero de texto bastante "pesado" (casi 50MB de texto). Su función es ir leyendo su contenido para ser analizado por un analizador de textos y escribir el resultado del análisis en otro fichero.

El caso es que la ejecución se interrumpe al cabo de poco tiempo y muestra el mensaje "Terminado (killed)".

¿A qué se debe? ¿Cómo puedo hacer para que no se interrumpa la ejecución?

Muchas gracias.


Nota 2011-11-15 04:59 @249
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
Pero... ¿se muere o lo matan? Por el mensaje, se ve que el programa realmente se interrumpe porque ha sido asesinado (killed).

La cuestión es ¿quién lo ha matado?

¿Quizás el propio sistema operativo porque ha excedido los límites marcados por ulimit? ¿Quizás porque ha reservado más memoria de la que tiene el sistema? ¿O quizás porque estaba siendo ejecutado por el servidor web y ha superado el tiempo de ejecución?

Pues eso... debes primero decirnos quién arranca y dónde se ejecuta el programa... y encontrarás al responsable de este crimen.

_________________
JF^D Perl programming


Nota 2011-11-15 05:07 @255

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
Lo ejecuto en mi máquina localmente. Eso sí, lo estoy ejecutando dentro de una máquina virtual de Ubuntu, ya que el analizador de textos solo lo tengo disponible en ese sistema operativo. Le he asignado 1GB de memoria principal al la imagen de Ubuntu. Al ejecutar el comando "ulimit" me devuelve "unlimited".


Nota 2011-11-15 05:16 @261
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
Debes ejecutar ulimit -a para ver todos los límites que el sistema te impone.

_________________
JF^D Perl programming


Nota 2011-11-15 06:55 @330

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
He ejecutado ulimit -a y me devuelve:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7906
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7906
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


Nota 2011-11-15 08:44 @406
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)  RESUELTO
Pues yo solo veo valores normales. Quizás el de 64 es un poco bajo, porque yo tengo 2048 en mi máquina, pero no creo que sea eso...

Cuando lo ejecutas, ¿siempre se para en el mismo sitio y/o cuando pasa la misma cantidad de tiempo?

_________________
JF^D Perl programming


Nota 2011-11-15 09:28 @436

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
Lo he vuelto a ejecutar haciendo alguna optimización en el código y ahora ha "aguantado". :?

Sin más.

¡Muchas gracias!


Nota 2011-11-25 05:20 @264
Avatar de Usuario
Perlero Frecuente
Registrado: 2008-01-03 15:19 @680
Mensajes: 175
Re: Trabajar con ficheros de texto "grandes": Terminado (killed)
Que un proceso se quede sin memoria no hace que el sistema operativo lo mate. Cuando no hay memoria las llamadas a malloc fallan y al nivel de Perl esto normalmente se manifiesta como un mensaje "Out of memory" o en el peor de los casos un SIGSEGV.

Lo que sí mata procesos en Linux es el OOM-Killer (Out Of Memory Killer) que corre cuando el sistema operativo permite que entre todos los procesos reserven más memoria del total de la que dispone la máquina entre RAM y swap (memory overcommit) y éstos, en algún momento acaban realmente requiriendo más de la que está disponible (en la práctica por el COW, los procesos suelen usar mucha menos memoria de la que reservan). Pero desde hace ya tiempo el overcommit de memoria viene deshabilitado por defecto (puede verse si está activado corriendo cat /proc/sys/vm/overcommit_memory). En cualquier caso, las acciones del OOM-Killer aparecen en los logs del sistema.

En este enlace hay bastante documentación de cómo funciona el sistema de memoria virtual de Linux: http://linux-mm.org/LinuxMMDocumentation


Responder al tema  [ 8 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO