Skip to content
  • Michal Schmidt's avatar
    unit: reduce heap usage for unit objects · 7d17cfbc
    Michal Schmidt authored
    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.
    7d17cfbc