chiark / gitweb /
unit: reduce heap usage for unit objects
authorMichal Schmidt <mschmidt@redhat.com>
Sun, 15 Jan 2012 09:53:49 +0000 (10:53 +0100)
committerMichal Schmidt <mschmidt@redhat.com>
Mon, 16 Jan 2012 12:34:42 +0000 (13:34 +0100)
commit7d17cfbc46306a106dbda0f3e92fbc0792d1e9e9
tree44cb574e7d149a306287c51c7d57f4eff41c5a98
parent1637a8be5570dff7ce402451240b28ddb54e5dca
unit: reduce heap usage for unit objects

The storage of the unit objects on the heap is currently not very
efficient. For every unit object we allocate a chunk of memory as large
as the biggest unit type, although there are significant differences in
the units' real requirements.
pahole shows the following sizes of structs:
488  Target
496  Snapshot
512  Device
528  Path
560  Timer
576  Automount
1080 Socket
1160 Swap
1168 Service
1280 Mount

Usually there aren't many targets or snapshots in the system, but Device
is one of the most common unit types and for every one we waste
1280 - 512 = 768 bytes.

Fix it by allocating only the right amount for the given unit type.
On my machine (x86_64, with 39 LVM volumes) this decreases systemd's
USS (unique set size) by more than 300 KB.
13 files changed:
src/automount.c
src/device.c
src/manager.c
src/mount.c
src/path.c
src/service.c
src/snapshot.c
src/socket.c
src/swap.c
src/target.c
src/timer.c
src/unit.c
src/unit.h