The 8 GB Lab Book · Chapter 5

System occupancy by subtraction

Board
Jetson Orin Nano Super
Mode
15W
Setup
desktop up
Summary
43 services run at idle with the desktop up. The 'N' processes in the top 15 by RSS add up to 71 MB. I expected 0.5 to 1 GB.

What I expected

These are my guesses from before I read the process table.

  • Running services: < 25 on a robot
  • RSS of 'N' processes in top 15: ~0.5-1 GB

The theory

Subtraction as design

Before you change the model size or the , look at what already runs on the board. Ask one question about each item: does this item have a job on a walking robot?

The book says that the desktop is the first gigabyte that you gain. The measurement found much less. The 'N' processes in the top 15 use only 71 MB of .

THE IMAGE RECIPE, one page

The boot target is multi-user.target, not graphical. The GUI is a bench tool. It is not a robot part.

Mask these items: gdm, snapd, cups, avahi-daemon, ModemManager, whoopsie, kerneloops, fwupd, packagekit and tracker-miner-fs.

Purge these items: the gnome desktop metapackages, evolution-data-server, ubuntu-report and the snap runtime.

Keep these items: nvidia-*, libcudnn, tensorrt, +nvvidconv, python3, ssh and network-manager.

THE ARITHMETIC: what subtraction actually buys

The sum of the 'N' rows in the top 15 = 71 MB of RSS.

43 services run today. The target is fewer than 25. I must remove at least 19.

A removed process cannot wake up and take a core during a timing test.

The setup

Read the occupancy (tools/day05_occupancy.sh)
bash ~/day05_occupancy.sh
cat ~/day05/ps_top.txt | head -20
wc -l ~/day05/services_running.txt

The measurement

WhatExpectedMeasuredNote
Idle, desktop up (tegrastats)-RAM 1400/7620MB SWAP 325/3810MBstock image
Running services< 25 on a robot43systemctl --state=running
RSS of 'N' processes in top 15~0.5-1 GB71 MBsum of RSS, not the whole cost
MemAvailable-6209320 kB/proc/meminfo
Daemons: docker: active snapd: inactive gdm: active cups: inactive-see notedocker/snapd/gdm/cups state
gnome-shell-29 MB Ndesktop
dockerd-15 MB Ncontainer daemon, unless used
containerd-9 MB Ncontainer daemon
polkitd-7 MB ?gnome needs it; robot does not
systemd-6 MB Yinit
NetworkManager-5 MB Ynetwork
systemd-journal-4 MB Yinit
gnome-session-b-3 MB Ndesktop
Measured on the board unless the row says estimate or predicted.
Top processes by RSS with one question: allowed on a robot?
Fig 5.1Top processes by RSS with one question: allowed on a robot?.

The allowed set, walk day

  1. Gait loop(own core, RT)
  2. Camera(stays in NVMM)
  3. One SLMserver
  4. tegrastats +ssh + net
Nothing else. No desktop, no indexer, no snap, no crash reporter.

services running today

running now
43
robot target
< 25
Running now: target is under 25.

MemAvailable at idle with the desktop on is 6,209,320 kB. The daemons today are: docker active, snapd inactive, gdm active, cups inactive.

TOP PROCESSES BY RSS -- allowed on a robot?

gnome-shell
29 MB [N]
dockerd
15 MB [N]
containerd
9 MB [N]
polkitd
7 MB [?]
systemd
6 MB [Y]
NetworkManager
5 MB [Y]
systemd-journal
4 MB [Y]
gnome-session-b
3 MB [N]
gsd-media-keys
3 MB [N]
systemd-logind
3 MB [Y]
gsd-sharing
3 MB [N]
ps
3 MB [?]
[N] = no job on a walking robot. [Y] = keep. [?] = look at it. The N rows shown here sum to 62 MB. The 71 MB in the table also counts ModemManager and gsd-power, which sit below this cut in ps_top.txt.

Where it broke

I expected the desktop to be the first gigabyte. The top 15 processes marked N sum to 71 MB of RSS. That is a seventh of my low guess. The 43 running services are above my target of 25 by 19. The count is a measurement; the cost of the desktop is not, because RSS leaves out the GPU buffers of gnome-shell and Xorg, and I did not boot headless to subtract.

My notes from Day 5

Written by hand on 2026-09-05, before this chapter was typed. These are my original notes from that day. Where the chapter corrects them, the chapter is current.

Handwritten notes, Day 5, page 1
Day 5, page 12026-09-05
Handwritten notes, Day 5, page 2
Day 5, page 22026-09-05

Summary

  • In the top 15 by RSS, the 'N' processes use 71 MB. I expected 0.5 to 1 GB.
  • "Headless" is not a general idea. It is a boot target: multi-user.target.
  • The allowed set is short, and you can memorize it. If an item is on the board and is not in the list, it is a bug.

Sources

These sources are not mine. Measured numbers came off my own board; specs, estimates and paper figures are labeled as such.

  • NVIDIA / partner writeups on maximizing Jetson memory (disable display carveouts, unused services). jetson-clocks + nvpmodel docs
  • Standard embedded practice: production image ≠ devkit image