American_Jesus

joined 2 years ago
[–] American_Jesus@lemm.ee 3 points 3 weeks ago

It could depend on your distro, official packaging (docker,Debian,Fedora) have MALLOC_TRIM_THRESHOLD_=131072 , but different distros could have (or not) ship with different settings.

Official settings for systemd https://github.com/jellyfin/jellyfin-packaging/blob/master/debian/conf/jellyfin

[–] American_Jesus@lemm.ee 23 points 4 weeks ago

The value of this tunable is the minimum size (in bytes) of the top-most, releasable chunk in an arena that will trigger a system call in order to return memory to the system from that arena.

https://www.gnu.org/software/libc/manual/html_node/Memory-Allocation-Tunables.html


MALLOC_MMAP_THRESHOLD_ is an environment variable that sets the size threshold for using the mmap system call to allocate memory instead of using the heap.

  • Default: 128 KiB
  • Behavior:
    • If a memory request is ≥ 128 KiB, mmap is used.
    • If < 128 KiB, the heap is used.
  • Purpose:
    • Helps manage large memory allocations more efficiently.
    • Can be adjusted to optimize performance for specific applications.
 

Many users reported high memory/RAM usage, some 8GB+.

In my case gone from 1.5GB+ to 400MB or less on Raspberry Pi 4.

Adding MALLOC_TRIM_THRESHOLD_=100000can make a big difference.

With Docker:
Add to your docker-compose.yml and docker compose down && docker compose up -d

...
environment:
  - MALLOC_TRIM_THRESHOLD_=100000
...

With systemd:
Edit /etc/default/jellyfin change the value of MALLOC_TRIM_THRESHOLD_ and restart the service

# Disable glibc dynamic heap adjustment
MALLOC_TRIM_THRESHOLD_=100000

Source: https://github.com/jellyfin/jellyfin/issues/6306#issuecomment-1774093928

Official docker,Debian,Fedora packages already contain MALLOC_TRIM_THRESHOLD_.
Not present on some docker images like linuxserver/jellyfin

Check is container (already) have the variable
docker exec -it jellyfin printenv | grep MALLOC_TRIM_THRESHO LD_