[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1039449: fluidsynth: High memory usage even if not used



Package: fluidsynth
Version: 2.3.1-2
Severity: normal
X-Debbugs-Cc: witold.baryluk@gmail.com

fluidsynth auto-starts on my system when I log in, and that causes it to
read into memory /usr/share/sounds/sf3/default-GM.sf3 (this is a symlink
to /etc/alternatives/default-GM.sf3 which is a symlink to
/usr/share/sounds/sf2/FluidR3_GM.sf2).

About 142 megabytes of it.

-rw-r--r-- 1 root root 142M Feb 24  2008 /usr/share/sounds/sf2/FluidR3_GM.sf2

This causes fluidsynth RSS to use about 165MB of residewnt memory, even
if it is not used for anything.

I do not know why it autostarts, my guess is that pipewire or something
else starts it, even if it is not needed. (it runs as a normal user, not
some system user, and there are no init.d script or systemd units for it
that I can find)

Memory usage, looks to correspond to this memory mapping.

Output of pmap -p $(pidof fluidsynth)

00007fdea2389000 144724K rw---   [ anon ]

But there is also many 8M mappings, but they do not contribute to RSS (mapped, but not touched).

If I show more info with pmap, I got:

3848:   /usr/bin/fluidsynth -is /usr/share/sounds/sf3/default-GM.sf3
     Address Perm   Offset Device  Inode    Size    Rss    Pss Pss_Dirty Referenced Anonymous LazyFree ShmemPmdMapped FilePmdMapped Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked THPeligible Mapping
...
7fdea2389000 rw-p 00000000  00:00      0  144724 144724 144724    144724     144724    144724        0              0             0              0               0    0       0 144724           1 
...


Not only it is fully read, it is mlock-ed (probably to ensure it is not
swapped out, which is important for audio application like this).


It would be desirable in situation like this, to not load whole sf file
by default (just read basic metadata of it), and delay loading, until
there is actually a need for it. Alternatively have them in a format on
disk, that can be mmaped directly. Proper behaviour could be controlled
by some command line flags.

Regards,
Witold


Reply to: