| # Out-of-memory (OOM) system |
| |
| This file contains information about the systems that watch for and respond to |
| out-of-memory (OOM) events. |
| |
| [TOC] |
| |
| ## Behavior |
| |
| When the system runs out of memory and the kernel OOM thread is running, you |
| should see a series of log messages like: |
| |
| ``` |
| OOM: 5915.8M free (+0B) / 8072.4M total |
| OOM: oom_lowmem(shortfall_bytes=524288) called |
| OOM: Process mapped committed bytes: |
| OOM: proc 1043 397M 'bin/devmgr' |
| OOM: proc 2107 88M 'driver_host' |
| OOM: proc 1297 12M 'virtual-console' |
| OOM: proc 3496 17M 'netstack' |
| OOM: proc 4157 170M 'flutter:userpicker_device_shell' |
| OOM: proc 28708 353M 'flutter:armadillo_user_... (+3)' |
| OOM: proc 31584 9M 'dart:weather_agent' |
| OOM: proc 32093 14M 'dart:mi_dashboard.dartx' |
| OOM: Finding a job to kill... |
| OOM: (skip) job 57930 'story-8cf82cb9f742d9ecc77f1d449' |
| OOM: (skip) job 37434 'story-10293ae401bc0358b3ce52d2a' |
| OOM: *KILL* job 29254 'agent' |
| OOM: + proc 32093 run 'dart:mi_dashboard.dartx' |
| OOM: = 1 running procs (1 total), 0 jobs |
| OOM: (next) job 29247 'agent' |
| OOM: (next) job 29240 'agent' |
| OOM: (next) job 29233 'agent' |
| ``` |
| |
| The first line shows the current state of system memory: |
| |
| ``` |
| OOM: 45.8M free (-12.4M) / 8072.4M total |
| ``` |
| |
| The next section prints a list of processes that are consuming large amounts of |
| memory, in no particular order: |
| |
| ``` |
| OOM: Process mapped committed bytes: |
| OOM: proc 1043 397M 'bin/devmgr' |
| OOM: proc 2107 88M 'driver_host' |
| OOM: proc 1297 12M 'virtual-console' |
| OOM: ... |
| ^koid ^mem |
| ``` |
| |
| The next section shows the walk through the ranked job list, printing skipped |
| jobs (which don't have killable process descendants), the job that will be |
| killed, and the next jobs on the chopping block: |
| |
| ``` |
| OOM: Finding a job to kill... |
| OOM: (skip) job 57930 'story-8cf82cb9f742d9ecc77f1d449' |
| OOM: (skip) job 37434 'story-10293ae401bc0358b3ce52d2a' |
| OOM: *KILL* job 29254 'agent' |
| OOM: + proc 32093 run 'dart:mi_dashboard.dartx' |
| OOM: = 1 running procs (1 total), 0 jobs |
| OOM: (next) job 29247 'agent' |
| OOM: (next) job 29240 'agent' |
| OOM: (next) job 29233 'agent' |
| |
| ^koid ^name |
| ``` |
| |
| The `*KILL*` entry will also show all process descendants of the to-be-killed |
| job. |
| |
| ## Components |
| |
| ### OOM-ranker driver |
| |
| TODO(dbort/maniscalco): Implement and document. |