upgradedownload solucion oom killer linux memory out-of-memory

solucion - Comprender los registros de asesino de Linux



out of memory windows 7 (4)

La administración de la memoria en Linux es un poco difícil de entender, y no puedo decir que la entiendo completamente aún, pero intentaré compartir un poco de mi experiencia y conocimiento.

Respuesta breve a su pregunta: Sí, hay otras cosas incluidas que lo que está en la lista.

Lo que se muestra en su lista son las aplicaciones que se ejecutan en el espacio de usuario. El núcleo usa memoria para sí mismo y para los módulos, además de eso, también tiene un límite inferior de memoria libre al que no puede acceder. Cuando hayas alcanzado ese nivel, tratará de liberar recursos, y cuando ya no pueda hacer eso, terminarás con un problema OOM.

Desde la última línea de su lista, puede leer que el kernel informa un uso total de vm de: 1498536kB (1,5GB), donde el total-vm incluye tanto su RAM física como espacio de intercambio. Usted indicó que no tiene ningún intercambio, pero el kernel parece pensar lo contrario ya que se informa que su espacio de intercambio está lleno (Total swap = 524284kB, Free swap = 0kB) e informa un tamaño total de 1,5 GB.

Otra cosa que puede complicar aún más las cosas es la fragmentación de la memoria. Puede pulsar el asesino OOM cuando el kernel intente asignar, digamos 4096kB de memoria continua, pero no hay ninguno disponible.

Ahora que solo probablemente no te ayudará a resolver el problema real. No sé si es normal que su programa requiera esa cantidad de memoria, pero recomendaría probar un analizador de código estático como cppcheck para verificar si hay fugas de memoria o pérdidas en el descriptor de archivos. También puede intentar ejecutarlo a través de Valgrind para obtener más información sobre el uso de la memoria.

Mi aplicación fue asesinada por el asesino mortal. Es Ubuntu 11.10 ejecutándose en un USB en vivo sin intercambio y la PC tiene 1 Gig de RAM. La única aplicación que se ejecuta (aparte de todas las cosas integradas de Ubuntu) es mi programa flasherav. Tenga en cuenta que / tmp está correlacionado con la memoria y que en el momento del bloqueo tenía unos 200 MB de archivos (por lo que se ocupaban unos 200 MB de RAM).

Estoy tratando de entender cómo analizar el registro om-killer de modo que pueda entender dónde se está utilizando exactamente toda la memoria, es decir, cuáles son los diferentes fragmentos que se suman a ~ 1 gig, lo que dio como resultado la patada de asesino ¿en? Una vez que entiendo eso, puedo trabajar para reducir el uso del delincuente para que la aplicación se ejecute en una máquina con 1 GB de memoria RAM. Mis preguntas específicas son

Para tratar de analizar la situación, resumí la columna "total_vm" y solo obtuve 609342KB (que cuando se agrega a los 200MB en / tmp es todavía de solo 809MB). Tal vez estoy equivocado en lo que es la columna "total_vm": ¿incluye memoria asignada pero no utilizada más memoria compartida? En caso afirmativo, ¿no debería exagerar mucho el hecho de que se utilizó la memoria (y, por lo tanto, no debería quedarme sin memoria), verdad? ¿Hay otros fragmentos de memoria en uso que no se tienen en cuenta en la lista a continuación?

[11686.040460] flasherav invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0 [11686.040467] flasherav cpuset=/ mems_allowed=0 [11686.040472] Pid: 2859, comm: flasherav Not tainted 3.0.0-12-generic #20-Ubuntu [11686.040476] Call Trace: [11686.040488] [<c10e1c15>] dump_header.isra.7+0x85/0xc0 [11686.040493] [<c10e1e6c>] oom_kill_process+0x5c/0x80 [11686.040498] [<c10e225f>] out_of_memory+0xbf/0x1d0 [11686.040503] [<c10e6123>] __alloc_pages_nodemask+0x6c3/0x6e0 [11686.040509] [<c10e78d3>] ? __do_page_cache_readahead+0xe3/0x170 [11686.040514] [<c10e0fc8>] filemap_fault+0x218/0x390 [11686.040519] [<c1001c24>] ? __switch_to+0x94/0x1a0 [11686.040525] [<c10fb5ee>] __do_fault+0x3e/0x4b0 [11686.040530] [<c1069971>] ? enqueue_hrtimer+0x21/0x80 [11686.040535] [<c10fec2c>] handle_pte_fault+0xec/0x220 [11686.040540] [<c10fee68>] handle_mm_fault+0x108/0x210 [11686.040546] [<c152fa00>] ? vmalloc_fault+0xee/0xee [11686.040551] [<c152fb5b>] do_page_fault+0x15b/0x4a0 [11686.040555] [<c1069a90>] ? update_rmtp+0x80/0x80 [11686.040560] [<c106a7b6>] ? hrtimer_start_range_ns+0x26/0x30 [11686.040565] [<c106aeaf>] ? sys_nanosleep+0x4f/0x60 [11686.040569] [<c152fa00>] ? vmalloc_fault+0xee/0xee [11686.040574] [<c152cfcf>] error_code+0x67/0x6c [11686.040580] [<c1520000>] ? reserve_backup_gdb.isra.11+0x26d/0x2c0 [11686.040583] Mem-Info: [11686.040585] DMA per-cpu: [11686.040588] CPU 0: hi: 0, btch: 1 usd: 0 [11686.040592] CPU 1: hi: 0, btch: 1 usd: 0 [11686.040594] Normal per-cpu: [11686.040597] CPU 0: hi: 186, btch: 31 usd: 5 [11686.040600] CPU 1: hi: 186, btch: 31 usd: 30 [11686.040603] HighMem per-cpu: [11686.040605] CPU 0: hi: 42, btch: 7 usd: 7 [11686.040608] CPU 1: hi: 42, btch: 7 usd: 22 [11686.040613] active_anon:113150 inactive_anon:113378 isolated_anon:0 [11686.040615] active_file:86 inactive_file:1964 isolated_file:0 [11686.040616] unevictable:0 dirty:0 writeback:0 unstable:0 [11686.040618] free:13274 slab_reclaimable:2239 slab_unreclaimable:2594 [11686.040619] mapped:1387 shmem:4380 pagetables:1375 bounce:0 [11686.040627] DMA free:4776kB min:784kB low:980kB high:1176kB active_anon:5116kB inactive_anon:5472kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:80kB slab_unreclaimable:168kB kernel_stack:96kB pagetables:64kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:6 all_unreclaimable? yes [11686.040634] lowmem_reserve[]: 0 865 1000 1000 [11686.040644] Normal free:48212kB min:44012kB low:55012kB high:66016kB active_anon:383196kB inactive_anon:383704kB active_file:344kB inactive_file:7884kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:5548kB shmem:17520kB slab_reclaimable:8876kB slab_unreclaimable:10208kB kernel_stack:1960kB pagetables:3976kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:930 all_unreclaimable? yes [11686.040652] lowmem_reserve[]: 0 0 1078 1078 [11686.040662] HighMem free:108kB min:132kB low:1844kB high:3560kB active_anon:64288kB inactive_anon:64336kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:138072kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1460kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:61 all_unreclaimable? yes [11686.040669] lowmem_reserve[]: 0 0 0 0 [11686.040675] DMA: 20*4kB 24*8kB 34*16kB 26*32kB 19*64kB 13*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 4784kB [11686.040690] Normal: 819*4kB 607*8kB 357*16kB 176*32kB 99*64kB 49*128kB 23*256kB 4*512kB 0*1024kB 0*2048kB 2*4096kB = 48212kB [11686.040704] HighMem: 16*4kB 0*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 80kB [11686.040718] 14680 total pagecache pages [11686.040721] 8202 pages in swap cache [11686.040724] Swap cache stats: add 2191074, delete 2182872, find 1247325/1327415 [11686.040727] Free swap = 0kB [11686.040729] Total swap = 524284kB [11686.043240] 262100 pages RAM [11686.043244] 34790 pages HighMem [11686.043246] 5610 pages reserved [11686.043248] 2335 pages shared [11686.043250] 240875 pages non-shared [11686.043253] [ pid ] uid tgid total_vm rss cpu oom_adj oom_score_adj name [11686.043266] [ 1084] 0 1084 662 1 0 0 0 upstart-udev-br [11686.043271] [ 1094] 0 1094 743 79 0 -17 -1000 udevd [11686.043276] [ 1104] 101 1104 7232 42 0 0 0 rsyslogd [11686.043281] [ 1149] 103 1149 1066 188 1 0 0 dbus-daemon [11686.043286] [ 1165] 0 1165 1716 66 0 0 0 modem-manager [11686.043291] [ 1220] 106 1220 861 42 0 0 0 avahi-daemon [11686.043296] [ 1221] 106 1221 829 0 1 0 0 avahi-daemon [11686.043301] [ 1255] 0 1255 6880 117 0 0 0 NetworkManager [11686.043306] [ 1308] 0 1308 5988 144 0 0 0 polkitd [11686.043311] [ 1334] 0 1334 723 85 0 -17 -1000 udevd [11686.043316] [ 1335] 0 1335 730 108 0 -17 -1000 udevd [11686.043320] [ 1375] 0 1375 663 37 0 0 0 upstart-socket- [11686.043325] [ 1464] 0 1464 1333 120 1 0 0 login [11686.043330] [ 1467] 0 1467 1333 135 1 0 0 login [11686.043335] [ 1486] 0 1486 1333 135 1 0 0 login [11686.043339] [ 1487] 0 1487 1333 136 1 0 0 login [11686.043344] [ 1493] 0 1493 1333 134 1 0 0 login [11686.043349] [ 1528] 0 1528 496 45 0 0 0 acpid [11686.043354] [ 1529] 0 1529 607 46 1 0 0 cron [11686.043359] [ 1549] 0 1549 10660 100 0 0 0 lightdm [11686.043363] [ 1550] 0 1550 570 28 0 0 0 atd [11686.043368] [ 1584] 0 1584 855 35 0 0 0 irqbalance [11686.043373] [ 1703] 0 1703 17939 9653 0 0 0 Xorg [11686.043378] [ 1874] 0 1874 7013 174 0 0 0 console-kit-dae [11686.043382] [ 1958] 0 1958 1124 52 1 0 0 bluetoothd [11686.043388] [ 2048] 999 2048 2435 641 1 0 0 bash [11686.043392] [ 2049] 999 2049 2435 595 0 0 0 bash [11686.043397] [ 2050] 999 2050 2435 587 1 0 0 bash [11686.043402] [ 2051] 999 2051 2435 634 1 0 0 bash [11686.043406] [ 2054] 999 2054 2435 569 0 0 0 bash [11686.043411] [ 2155] 0 2155 1333 128 0 0 0 login [11686.043416] [ 2222] 0 2222 684 67 1 0 0 dhclient [11686.043420] [ 2240] 999 2240 2435 415 0 0 0 bash [11686.043425] [ 2244] 0 2244 3631 58 0 0 0 accounts-daemon [11686.043430] [ 2258] 999 2258 11683 277 0 0 0 gnome-session [11686.043435] [ 2407] 999 2407 964 24 0 0 0 ssh-agent [11686.043440] [ 2410] 999 2410 937 53 0 0 0 dbus-launch [11686.043444] [ 2411] 999 2411 1319 300 1 0 0 dbus-daemon [11686.043449] [ 2413] 999 2413 2287 88 0 0 0 gvfsd [11686.043454] [ 2418] 999 2418 7867 123 1 0 0 gvfs-fuse-daemo [11686.043459] [ 2427] 999 2427 32720 804 0 0 0 gnome-settings- [11686.043463] [ 2437] 999 2437 10750 124 0 0 0 gnome-keyring-d [11686.043468] [ 2442] 999 2442 2321 244 1 0 0 gconfd-2 [11686.043473] [ 2447] 0 2447 6490 156 0 0 0 upowerd [11686.043478] [ 2467] 999 2467 7590 87 0 0 0 dconf-service [11686.043482] [ 2529] 999 2529 11807 211 0 0 0 gsd-printer [11686.043487] [ 2531] 999 2531 12162 587 0 0 0 metacity [11686.043492] [ 2535] 999 2535 19175 960 0 0 0 unity-2d-panel [11686.043496] [ 2536] 999 2536 19408 1012 0 0 0 unity-2d-launch [11686.043502] [ 2539] 999 2539 16154 1120 1 0 0 nautilus [11686.043506] [ 2540] 999 2540 17888 534 0 0 0 nm-applet [11686.043511] [ 2541] 999 2541 7005 253 0 0 0 polkit-gnome-au [11686.043516] [ 2544] 999 2544 8930 430 0 0 0 bamfdaemon [11686.043521] [ 2545] 999 2545 11217 442 1 0 0 bluetooth-apple [11686.043525] [ 2547] 999 2547 510 16 0 0 0 sh [11686.043530] [ 2548] 999 2548 11205 301 1 0 0 gnome-fallback- [11686.043535] [ 2565] 999 2565 6614 179 1 0 0 gvfs-gdu-volume [11686.043539] [ 2567] 0 2567 5812 164 1 0 0 udisks-daemon [11686.043544] [ 2571] 0 2571 1580 69 0 0 0 udisks-daemon [11686.043549] [ 2579] 999 2579 16354 1035 0 0 0 unity-panel-ser [11686.043554] [ 2602] 0 2602 1188 47 0 0 0 sudo [11686.043559] [ 2603] 0 2603 374634 181503 0 0 0 flasherav [11686.043564] [ 2607] 999 2607 12673 189 0 0 0 indicator-appli [11686.043569] [ 2609] 999 2609 19313 311 1 0 0 indicator-datet [11686.043573] [ 2611] 999 2611 15738 225 0 0 0 indicator-messa [11686.043578] [ 2615] 999 2615 17433 237 1 0 0 indicator-sessi [11686.043583] [ 2627] 999 2627 2393 132 0 0 0 gvfsd-trash [11686.043588] [ 2640] 999 2640 1933 85 0 0 0 geoclue-master [11686.043592] [ 2650] 0 2650 2498 1136 1 0 0 mount.ntfs [11686.043598] [ 2657] 999 2657 6624 128 1 0 0 telepathy-indic [11686.043602] [ 2659] 999 2659 2246 112 0 0 0 mission-control [11686.043607] [ 2662] 999 2662 5431 346 1 0 0 gdu-notificatio [11686.043612] [ 2664] 0 2664 3716 2392 0 0 0 mount.ntfs [11686.043617] [ 2679] 999 2679 12453 197 1 0 0 zeitgeist-datah [11686.043621] [ 2685] 999 2685 5196 1581 1 0 0 zeitgeist-daemo [11686.043626] [ 2934] 999 2934 16305 710 0 0 0 gnome-terminal [11686.043631] [ 2938] 999 2938 553 0 0 0 0 gnome-pty-helpe [11686.043636] [ 2939] 999 2939 1814 406 0 0 0 bash [11686.043641] Out of memory: Kill process 2603 (flasherav) score 761 or sacrifice child [11686.043647] Killed process 2603 (flasherav) total-vm:1498536kB, anon-rss:721784kB, file-rss:4228kB


La suma de total_vm es 847170 y la suma de rss es 214726, estos dos valores se cuentan en páginas de 4kB, lo que significa que cuando se ejecutó oom-killer, usted había usado 214726 * 4kB = 858904kB de memoria física y espacio de intercambio.

Dado que su memoria física es de 1 GB y ~ 200 MB se utilizaron para el mapeo de memoria, es razonable invocar el asesino mortal cuando se utilizó 858904kB.

rss para el proceso 2603 es 181503, lo que significa 181503 * 4KB = 726012 rss, era igual a la suma de anon-rss y file-rss .

[11686.043647] Proceso asesinado 2603 (flasherav) total-vm: 1498536kB, anon-rss: 721784kB, archivo-rss: 4228kB


Tengo cientos de vms. para nosotros es bastante difícil entender cada registro en una máquina virtual en la que se mata un proceso.

para este tipo de situación, this te ayudará.


Esta página web tiene una explicación y una solución.

La solucion es:

Para solucionar este problema, se debe cambiar el comportamiento del kernel, por lo que ya no comprometerá la memoria en exceso para solicitudes de aplicaciones. Finalmente, he incluido esos valores mencionados en el archivo /etc/sysctl.conf, por lo que se aplican automáticamente al inicio:

vm.overcommit_memory = 2

vm.overcommit_ratio = 80