freenx-server/nxcheckload.sample
2025-08-08 20:28:57 +02:00

68 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
#
# nxcheckload - sample script for calculation of the load for a node.
#
# Version 0.5
#
# Under GPL
#
# Jonathan "Arrouan" ROUZAUD-CORNABAS (rouzaud.jonathan@gmail.com)
#
# Fabian Franz <FreeNX@fabian-franz.de>
#
# 0.5
# - Rewrote huge parts
#
# Change between 0.3 and 0.4
# - Add of TMP_FILE
# - Add of lock file to avoid two run at once.
#
# Change between 0.2 and 0.3
# - SMP support.
#
if [ "$1" != "" ]; then
# Connect to a remote node
# Note: This is a ssh sample, you'll need to tweak it for your setup
# and setup the secret keys for yourself.
#exec $COMMAND_SSH nxcal@"$1" "$PATH_BIN/nxcheckload"
# Note: This is a netcat example. You need to have nxcheckload running through
# netpipes or netcat like follows:
# node1:~$ faucet 9876 -io $PATH_BIN/nxcheckload
#
# Connect to another node running the load-service on some port.
#
#exec $COMMAND_NETCAT "$1" 9876
# Same as loadbalance_rr_random
# pick a node by random.
echo $RANDOM
exit 0
fi
# Be sure to use C numeric for calculations
export LC_NUMERIC=C
# The 3 variables of load from uptime
LOADXX=$(awk '{ printf("(100-%s)+(100-%s)+(100-%s)\n", $1, $2, $3); }' /proc/loadavg | bc -q) #"
# Add of total memory and free memory
Mt=$(awk 'BEGIN { N=0 } /MemTotal|MemFree/ { N+=$2; } END { print N }' /proc/meminfo)
# NBCPU = number of CPU
NBCPU=$(cat /proc/cpuinfo | grep ^processor | wc -l)
# CPU = Mhz of the CPU
CPU=$(cat /proc/cpuinfo | grep "cpu MHz" | head -n1 | cut -d':' -f2 | cut -d' ' -f2)
# Number of Xorg already launch and running.
UNB=$(ps aux | grep Xorg | grep -v grep | wc -l)
# Final calcul of the number of load.
echo "100 * $LOADXX + $Mt + ( $NBCPU * $CPU ) / 100 + $UNB * 100" | bc -q | cut -d. -f1