Repository navigation
Memory
| Pool | Owner | Set by | Used for |
|---|---|---|---|
rmem |
OpenIMP (/dev/rmem) |
kernel command line rmem=<n>M@<base> from the boot loader |
frame pools, encoder reference and bitstream buffers, JPEG buffers |
ispmem |
open-tx-isp | kernel command line ispmem=<n>M@<base>
|
temporal noise (temper), WDR, raw snapshot buffers |
| V4L2 MMAP pool (T10/T20) | open-tx-isp | module parameter isp_mmap_pool_kb
|
frame buffers for V4L2 MMAP capture; USERPTR (used by OpenIMP) needs no pool |
Linux keeps whatever is not reserved. Reserving too much starves the system (an out-of-memory kill, then a watchdog reset); reserving too little makes features fail or switch off.
OpenIMP logs the rmem peak at stream start and on every new peak (peak versus total reserved). Example from a T21 test camera: a peak of 18.4 MB of 23.5 MB. Watch the peak with your real stream set (main, sub, JPEG snapshots, IVS), not just one stream.
| Log (component) | Meaning | Action |
|---|---|---|
raise rmem by at least M KB (suggest rmem=<n>M) (OpenIMP, on allocation failure) |
rmem is too small for the streams you opened | Raise rmem on the kernel command line by at least M KB, or run fewer or smaller streams. |
| rmem peak line close to the total (OpenIMP) | no headroom | Add headroom before adding streams. |
set ispmem >= N KB (T10/T20 driver) |
temper or WDR would be switched off because ispmem is too small | Raise ispmem, or accept that these blocks stay off. |
set isp_mmap_pool_kb=<n> with have/need/missing (T10/T20 driver) |
the MMAP pool is smaller than needed for the requested capture mode | Raise the parameter, or use USERPTR capture (OpenIMP does). |
no N KiB MMAP frame pool (dma_alloc_coherent failed); USERPTR only (driver) |
the 8 MiB pool could not be allocated on a small or fragmented heap (typical for T10) | Normal for OpenIMP. The pool is off by default (isp_mmap_pool_kb=0) since 2026-10-04; the line only appears if a non-zero pool was set explicitly, so remove that setting. |
| a startup warning that pools plus fixed buffers exceed video memory (OpenIMP) | the stream set you asked for cannot fit | Reduce streams or resolution, or raise rmem. |
The driver logs each shortfall once, with the numbers (have/need/missing) and a concrete value.
- T20/T10: with
isp_mmap_pool_kb=0, free RAM with streams running rose by about 8 MB (T20 from 46.7 to 55 MB, T10 from 1.9 to about 9.7 MB). - T20/T10: JPEG bitstream buffer is 1 MiB (saves 328 KiB). Smaller
ispmemvalues (T20 11 to 8 MB, T10 8 to 4 MB) are an idea that needs image checks first. - T21/T23: reference sharing saves about 1.5 MB. T23: JPEG shares the H.264 bitstream area (-1.44 MB).
- T41:
rmem=30Mleft too little for Linux with three parallel streams plus snapshots (OOM, watchdog reset); about 24 MB worked in tests, 26 MB is used in the current test image. Changing the kernel command line on T41 may require an environment-partition image, see Troubleshooting. - Do not allocate encoder buffers at channel creation: measured to raise the peak.
rmem and ispmem are part of the kernel command line, which the boot loader takes from its environment (or from a built-in default). Change the value in the image/boot configuration and reboot; see the thingino documentation of your camera. Never change the sizes without checking the peak afterwards.