forked from michael.heier/citadel-core
Fix memory scripts (#50)
This also reduces the script interval, because it is still very slow.
This commit is contained in:
parent
2a933eaa1b
commit
b87c54e219
|
@ -21,7 +21,17 @@ function get_memory_usage() {
|
|||
function mem_usage_to_percent() {
|
||||
local mem_usage="$1"
|
||||
local total_mem="$(free -m | awk 'NR==2 {print $2}')"
|
||||
echo "$(awk "BEGIN {printf \"%.1f\", $mem_usage / $total_mem * 100}")"
|
||||
echo "$(awk "BEGIN {printf \"%.1f\", ${mem_usage/,/.} / ${total_mem/,/.} * 100}")"
|
||||
}
|
||||
|
||||
function app_mem_usage() {
|
||||
# For every container of the app, get the mem usage, save it, and at the end, print the total mem usage of the app
|
||||
local mem_usage=0
|
||||
for container in $(get_app_containers "$1"); do
|
||||
# Use awk to add, it supports floating point numbers
|
||||
mem_usage=$(awk "BEGIN {printf \"%.2f\", $mem_usage + $(get_memory_usage "$container")}")
|
||||
done
|
||||
echo "${1}: $mem_usage%"
|
||||
}
|
||||
|
||||
get_total_used_mem_raw() {
|
||||
|
@ -35,7 +45,7 @@ get_total_used_mem() {
|
|||
# To get the containers of the app, list every container whose name starts with the name of the app
|
||||
get_app_containers () {
|
||||
local app_name="$1"
|
||||
"${CITADEL_ROOT}/scripts/app" compose "${app_name}" ps | awk '{print $1}' | grep -v 'Name\|-----'
|
||||
"${CITADEL_ROOT}/scripts/app" compose "${app_name}" ps | awk '{print $1}' | grep -v 'NAME'
|
||||
}
|
||||
|
||||
# Get the memory usage of the whole system, excluding docker containers
|
||||
|
@ -48,22 +58,17 @@ get_system_memory_usage() {
|
|||
}
|
||||
|
||||
main() {
|
||||
echo "total: $(get_total_used_mem)%"&
|
||||
echo "total: $(get_total_used_mem)%"
|
||||
echo "system: $(get_system_memory_usage)%"
|
||||
for service in bitcoin lightning electrum tor; do
|
||||
echo "${service}: $(get_memory_usage "$service")%" &
|
||||
done
|
||||
for app in $("${CITADEL_ROOT}/scripts/app" ls-installed); do
|
||||
# For every container of the app, get the mem usage, save it, and at the end, print the total mem usage of the app
|
||||
local mem_usage=0
|
||||
for container in $(get_app_containers "$app"); do
|
||||
# Use awk to add, it supports floating point numbers
|
||||
mem_usage=$(awk "BEGIN {printf \"%.2f\", $mem_usage + $(get_memory_usage "$container")}")
|
||||
done
|
||||
wait
|
||||
echo "${app}: $mem_usage%"
|
||||
app_mem_usage "${app}" &
|
||||
done
|
||||
echo "system: $(get_system_memory_usage)%"
|
||||
wait
|
||||
}
|
||||
|
||||
echo "Calculating memory usage..."
|
||||
echo "This may take a while, please wait..."
|
||||
main | sort --key 2 --numeric-sort --reverse
|
||||
|
|
|
@ -90,7 +90,7 @@ echo
|
|||
echo "Starting status monitors..."
|
||||
echo
|
||||
pkill -f ./scripts/status-monitor || true
|
||||
./scripts/status-monitor memory 60 &>> "${CITADEL_LOGS}/status-monitor.log" &
|
||||
./scripts/status-monitor memory 300 &>> "${CITADEL_LOGS}/status-monitor.log" &
|
||||
./scripts/status-monitor storage 60 &>> "${CITADEL_LOGS}/status-monitor.log" &
|
||||
./scripts/status-monitor temperature 15 &>> "${CITADEL_LOGS}/status-monitor.log" &
|
||||
./scripts/status-monitor uptime 15 &>> "${CITADEL_LOGS}/status-monitor.log" &
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# To prevent tools we use from outputting in another language
|
||||
LANG=C
|
||||
|
||||
CITADEL_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../..)"
|
||||
|
||||
memory_total_bytes() {
|
||||
|
@ -23,7 +26,7 @@ get_app_memory_use() {
|
|||
|
||||
local app_memory=0
|
||||
|
||||
local app_containers=$("${CITADEL_ROOT}/app/app-manager.py" compose "${app}" ps | awk '{print $1}' | grep -v 'Name\|-----')
|
||||
local app_containers=$("${CITADEL_ROOT}/scripts/app" compose "${app}" ps | awk '{print $1}' | grep -v 'NAME')
|
||||
for container in $app_containers; do
|
||||
local container_memory=$(get_container_memory_use "${container}")
|
||||
app_memory=$(awk "BEGIN {print ${app_memory}+${container_memory}}")
|
||||
|
@ -43,7 +46,7 @@ used=$(memory_used_bytes)
|
|||
json=$(echo $json | jq --arg used "${used}" '. + {used: $used|tonumber}')
|
||||
|
||||
cumulative_app_memory="0"
|
||||
for app in $( "${CITADEL_ROOT}/app/app-manager.py" ls-installed); do
|
||||
for app in $( "${CITADEL_ROOT}/scripts/app" ls-installed); do
|
||||
app_memory=$(get_app_memory_use "${app}")
|
||||
cumulative_app_memory=$(($cumulative_app_memory+$app_memory))
|
||||
json=$(echo $json | jq --arg app "${app}" --arg app_memory "${app_memory}" '.breakdown |= .+ [{id: $app, used: $app_memory|tonumber}]')
|
||||
|
|
Loading…
Reference in New Issue
Block a user