From 576f6bec3d9e136fa5672b6c80143540f2166bbf Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Wed, 16 Apr 2025 13:45:03 -0500 Subject: [PATCH] contrib: Add systemd service and timer files for malloc trim. Adds two files to the contrib/systemd/ directory that can be installed to periodically run "malloc trim" on Asterisk. These files do nothing unless they are explicitly moved to the correct location on the system. Users who are experiencing Asterisk memory issues can use this service to potentially help combat the problem. These files can also be configured to change the start time and interval. See systemd.timer(5) and systemd.time(7) for more information. UserNote: Service and timer files for systemd have been added to the contrib/systemd/ directory. If you are experiencing memory issues, install these files to have "malloc trim" periodically run on the system. --- contrib/systemd/asterisk-malloc-trim.service | 9 ++++++ contrib/systemd/asterisk-malloc-trim.timer | 29 ++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 contrib/systemd/asterisk-malloc-trim.service create mode 100644 contrib/systemd/asterisk-malloc-trim.timer diff --git a/contrib/systemd/asterisk-malloc-trim.service b/contrib/systemd/asterisk-malloc-trim.service new file mode 100644 index 0000000000..bdec7f9b90 --- /dev/null +++ b/contrib/systemd/asterisk-malloc-trim.service @@ -0,0 +1,9 @@ +# Run the `malloc trim` CLI command to return unused memory +# to the OS. Triggered automatically by asterisk-malloc-trim.timer. + +[Unit] +Description=Runs Asterisk "malloc trim" CLI command + +[Service] +Type=simple +ExecStart=/usr/sbin/asterisk -rx "malloc trim" diff --git a/contrib/systemd/asterisk-malloc-trim.timer b/contrib/systemd/asterisk-malloc-trim.timer new file mode 100644 index 0000000000..62ff9be935 --- /dev/null +++ b/contrib/systemd/asterisk-malloc-trim.timer @@ -0,0 +1,29 @@ +# Systemd.timer file to periodically run the +# `malloc trim` CLI command to return unused memory +# to the OS. +# +# Don't modify this file to customize the start time. Instead create file +# /etc/systemd/system/asterisk-malloc-trim.timer.d/10-oncalendar.conf +# with the following contents: +# +# [Timer] +# OnCalendar= +# +# Run `systemctl daemon-reload` after creating this file. +# +# OnCalendar isn't the only way to set when the unit runs. +# See systemd.timer(5) and systemd.time(7) for more info. +# + +[Unit] +Description=Asterisk malloc-trim timer +After=asterisk.service +Requisite=asterisk.service + +[Timer] +OnCalendar=00:15:00 +RandomizedDelaySec=3600 +Persistent=yes + +[Install] +WantedBy=timers.target