| # 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:pci#1:8086:1916' | 
 | 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:pci#1:8086:1916' | 
 | 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. |