mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
94 lines
2.9 KiB
Awk
Executable File
94 lines
2.9 KiB
Awk
Executable File
#!/usr/bin/gawk --exec
|
|
#
|
|
# HugePages monitoring plugin for munin
|
|
#
|
|
# This plugin monitors the usage of the Linux kernel HugePages, on some
|
|
# architectures also called Large Pages. It will show both pre-reserved
|
|
# pages (via /prc/sys/vm/nr_hugepages), their usage and reserved size, as
|
|
# well as HugePages allocated by the khugepaged (activated by the
|
|
# transparent_hugepages kernel command line parameter). All values are
|
|
# shown in (KiBi/MeBi/GiBi)Bytes.
|
|
#
|
|
# This plugin is used like many other munin plugins: put it in
|
|
# /usr/share/munin/plugins (or another appropriate location)
|
|
# and create a symlink in /etc/munin/plugins:
|
|
# > ln -s /usr/share/munin/plugins/hugepages /etc/munin/plugins
|
|
# Then restart munin-node.
|
|
#
|
|
#
|
|
# --
|
|
# Copyright 2012 Stefan Seidel <munin@stefanseidel.info>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# --
|
|
|
|
|
|
#%# family=auto
|
|
#%# capabilities=autoconf
|
|
|
|
BEGIN {
|
|
if (ARGC > 1 && ARGV[1] == "config") {
|
|
print "graph_args --base 1000 -l 0"
|
|
print "graph_title HugePages usage"
|
|
print "graph_category system"
|
|
print "graph_info This graph shows the usage of the kernel Huge Pages."
|
|
print "graph_order Total Rsvd Free Surp Anon"
|
|
print "Total.label total"
|
|
print "Total.draw AREA"
|
|
print "Total.info Size of pool of hugepages ('nr_hugepages')"
|
|
print "Rsvd.label reserved"
|
|
print "Rsvd.draw AREA"
|
|
print "Rsvd.info Huge Pages that have been reserved but are not used."
|
|
print "Free.label free"
|
|
print "Free.draw STACK"
|
|
print "Free.info Unallocated Huge Page Memory."
|
|
print "Surp.label surplus"
|
|
print "Surp.draw STACK"
|
|
print "Surp.info Number of hugepages > nr_hugepages, as decided by nr_overcommit_hugepages or when the amount of Huge Pages is reduced while they are in use."
|
|
print "Anon.label Transparent"
|
|
print "Anon.draw STACK"
|
|
print "Anon.info Huge Pages that are in use by the transparent Huge Page allocator khugepaged."
|
|
CONF=1
|
|
}
|
|
if (ARGC > 1 && ARGV[1] == "autoconf") {
|
|
CONF=2
|
|
}
|
|
ARGV[1] = "/proc/meminfo"
|
|
ARGC = 2
|
|
FS = "[: ]+"
|
|
OFS = ""
|
|
IGNORECASE = 1
|
|
}
|
|
|
|
CONF == 1 {
|
|
if (/Hugepagesize/) {
|
|
print "Anon.cdef Anon,",$2,",/"
|
|
print "graph_vlabel Pages (",$2,"KB/page)"
|
|
}
|
|
}
|
|
|
|
CONF == 2 {
|
|
if (/HugePages_Total/) {
|
|
if ($2 > 0) {
|
|
print "yes"
|
|
} else {
|
|
print "no"
|
|
}
|
|
}
|
|
}
|
|
|
|
(CONF != 1 && CONF != 2) {
|
|
if (match($0,"(anon)?hugepages(_([^:]+))?[^i]",mats))
|
|
print mats[1],mats[3],".value ",$2
|
|
}
|