rendered paste body#! /bin/bash
## This script attempts to summarise the VPS user_beancounter information
## Run it like this:
##
## ~# ./vpsinfo
##
## or like this:
## ~# cat /proc/user_beancounters > user_beancounters.save
## ~# ./vpsinfo user_beancounters.save
##
## or like this:
## ~# watch -d ./vpsinfo
##
BEANCOUNTERS_FILE="${1:-/proc/user_beancounters}"
get_beans() {
for BEAN in held maxheld barrier limit failcnt; do
eval VAL=\$$BEAN
eval ${resource}_$BEAN="$VAL"
done
}
div() {
TOP="${1:?}"
BOTTOM="${2:?}"
PRECISION=${3:-2}
VAL="$(echo -e "$TOP\n$PRECISION\nk\n$BOTTOM\n/\np" | dc)"
echo -n "$VAL"
}
assert_val() {
VARNAME="${1:?}"
ASSERTVAL="${2:?}"
eval "if [ \$$VARNAME -ne $ASSERTVAL ]; then echo \"Warning: $VARNAME should be $ASSERTVAL, but it is: \$$VARNAME\"; fi"
}
cat "$BEANCOUNTERS_FILE" | cut -c 13- |\
while read resource held maxheld barrier limit failcnt ZZZ; do
case $resource in
kmemsize)
get_beans 1048576 3
;;
privvmpages|shmpages|numproc|physpages|vmguarpages|oomguarpages)
get_beans 256 2
;;
numproc|numtcpsock|numflock|numpty|numsiginfo|tcpsndbuf|tcprcvbuf|\
othersockbuf|dgramrcvbuf|numothersock|dcachesize|numfile|numiptent)
get_beans 1 0
;;
esac
if [ "$resource" == "numiptent" ]; then
echo -n "privvmpages: VPS Shared memory (MBytes): "
div $privvmpages_held 256; echo -n " used, "
div $privvmpages_barrier 256; echo -n " soft limit, "
div $privvmpages_limit 256; echo " hard limit."
echo -n "kmemsize: Unswappable kernel memory (MBytes): "
div $kmemsize_held 1048576; echo -n " used, "
div $kmemsize_barrier 1048576; echo -n " soft limit, "
div $kmemsize_limit 1048576; echo " hard limit."
echo -n "vmguarpages: Memory allocation guarantee (MBytes): "
div $vmguarpages_barrier 256; echo "."
echo -n "oomguarpages: Out-of-memory guarantee (MBytes): "
div $oomguarpages_held 256; echo -n " used, "
div $oomguarpages_barrier 256; echo " limit."
echo -n "kmemsize+vmguarpages: Total memory guarantee (MBytes): "
div $(($kmemsize_barrier+(4096*$vmguarpages_barrier))) 1048576; echo " limit."
echo -n "physpages: Pysical RAM (MBytes): "
div $physpages_held 256; echo " used."
assert_val vmguarpages_limit 2147483647
assert_val oomguarpages_limit 2147483647
assert_val physpages_barrier 0
assert_val physpages_limit 2147483647
fi
done