From 12791203b769a7d2634cc90bc380c2723b033278 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 6 Jul 2010 16:39:42 +0000 Subject: [PATCH] Updated vhostmd.conf from Dr. Joachim Schneider at SAP. --- vhostmd.conf | 322 ++++++++++++++++++++++++++++++++++++++++++--------- vhostmd.spec | 5 +- 2 files changed, 273 insertions(+), 54 deletions(-) diff --git a/vhostmd.conf b/vhostmd.conf index d1b6da0..21c0f22 100644 --- a/vhostmd.conf +++ b/vhostmd.conf @@ -19,6 +19,59 @@ within the vm element. --> + + + + + + + + @@ -45,15 +98,40 @@ within the vm element. VirtualizationVendor rpm -qi libvirt| grep Vendor: \ - | gawk '{print substr($0, index($0,$5)) }' + | awk '{ print substr($0, index($0, $5)); }' | sort -u VirtProductInfo - virsh -r CONNECT version | grep API \ - | gawk -F': ' '{print $2}' + virsh -r CONNECT version \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "USING_API" { print $2; }' @@ -61,20 +139,56 @@ within the vm element. HostSystemInfo hostname -s - + - NumberOfPhysicalCPUsUtilized + NumberOfPhysicalCPUs + + + + + + - virsh -r CONNECT nodeinfo | grep 'CPU(s):' \ - | gawk -F': +' '{print $2}' + virsh -r CONNECT nodeinfo \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "CPU(S)" { print $2; }' MemoryAllocatedToVirtualServers + + + - virsh -r CONNECT nodeinfo | grep 'Memory size:' \ - | gawk -F' +' '{ printf "%d\n", $3/1024 }' + free|egrep -i '^[[:space:]]*(Mem:)' \ + | awk 'BEGIN { sum = 0; } + { sum += $3; } + END { printf "%d\n", sum/1024; }' @@ -82,26 +196,17 @@ within the vm element. FreePhysicalMemory free|egrep -i '^[[:space:]]*(Mem:)' \ - | gawk 'BEGIN { sum = 0; } + | awk 'BEGIN { sum = 0; } { sum += $4; } END { printf "%d\n", sum/1024; }' - - UsedPhysicalMemory - - free|egrep -i '^[[:space:]]*(Mem:)' \ - | gawk 'BEGIN { sum = 0; } - { sum += $3; } - END { printf "%d\n", sum/1024; }' - - FreeVirtualMemory free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ - | gawk 'BEGIN { sum = 0; } + | awk 'BEGIN { sum = 0; } { sum += $4; } END { printf "%d\n", sum/1024; }' @@ -111,15 +216,16 @@ within the vm element. UsedVirtualMemory free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ - | gawk 'BEGIN { sum = 0; } + | awk 'BEGIN { sum = 0; } { sum += $3; } END { printf "%d\n", sum/1024; }' + PagedInMemory - vmstat -s | gawk 'BEGIN { + vmstat -s | awk 'BEGIN { cmd = "getconf PAGESIZE"; cmd | getline pagesize; close(cmd); @@ -133,7 +239,7 @@ within the vm element. PagedOutMemory - vmstat -s | gawk 'BEGIN { + vmstat -s | awk 'BEGIN { cmd = "getconf PAGESIZE"; cmd | getline pagesize; close(cmd); @@ -143,31 +249,40 @@ within the vm element. }' - - PageRates - pagerate.pl - - - - + TotalCPUTime - gawk 'BEGIN { - getline < "/proc/uptime"; - idle_sec = $2; - while ( 0 <= (getline < "/proc/stat") ) + awk ' + function user_hz( hz) + { + cmd = "getconf CLK_TCK"; + cmd | getline; + hz = $1; + close(cmd); + + return hz; + } + + BEGIN { + USER_HZ = user_hz(); + TotalCPUTime = 0; + + while ( 0 < ( getline < "/proc/stat" ) ) { if ( "cpu" == $1 ) { - USER_HZ = $5/idle_sec; - #printf "USER_HZ = %f\n", USER_HZ | "cat 1>&2" - TotalCPUTime = ($2 + $3 + $4)/USER_HZ; - printf "%f\n", TotalCPUTime; + TotalCPUTime = $2 + $3 + $4; break; } } + close("/proc/stat"); + + #printf "USER_HZ = %d\n", USER_HZ | "cat 1>&2"; + TotalCPUTime /= USER_HZ; + printf "%f\n", TotalCPUTime; + #close("cat 1>&2"); }' @@ -176,33 +291,134 @@ within the vm element. TotalCPUTime - virsh -r CONNECT dominfo NAME | sed 's/: */:/' \ - | gawk -F: '/CPU time/ {print $2;}' + virsh -r CONNECT dominfo NAME \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "CPU_TIME" { print $2; }' + - NumberOfAssignedPhysicalCPUs + ResourceProcessorLimit - virsh -r CONNECT dominfo NAME | grep 'CPU(s):' \ - | gawk -F': +' '{print $2}' + virsh -r CONNECT dominfo NAME \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "CPU(S)" { print $2; }' + + + + + ResourceMemoryLimit + + virsh -r CONNECT dominfo NAME \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "MAX_MEMORY" { print int($2/1024); }' PhysicalMemoryAllocatedToVirtualSystem - virsh -r CONNECT dominfo NAME | grep 'Max memory:' \ - | gawk -F' +' '{printf "%d\n", $3/1024}' + virsh -r CONNECT dominfo NAME \ + |awk -F ':' ' + function mkvarnam(s) { # UPPER_CASE_UNDERSCORE + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + gsub("[[:space:]]+", "_", s); s = toupper(s); + return s; + } + function filt_phys(s, sep, num, unit) { # 42.0 KM + sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim + if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) + { + num = s; unit = s; + sub("[[:space:]]*[[:alpha:]]+$", "", num); + sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); + return num sep toupper(unit); + } + else + { + return s; + } + } + /:/ { + d1 = substr($0, 1, index($0, ":") - 1); + rest = substr($0, index($0, ":") + 1); + printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); + }' \ + | awk -F: '$1 == "USED_MEMORY" { print int($2/1024); }' - -