All pastes #243021 Raw Edit

Untitled

public text v1 · immutable
·published 2006-11-07 23:48 UTC
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