Kernel version >= 2.6.27 check

Jeff Schroeder wrote:
> Awesome tool! I learned about this from the LWN article and
> immediately (stupidly) tried it out on a centos 5 host. Here is a
> patch to add a kernel version check.

This is a nice fix, but the version check should be done against
the proc data being used (which is not necessarily that of the
local kernel).  This required moving kernel_version_check to
after where the src data is read.
This commit is contained in:
Tim Bird 2009-05-22 12:41:07 -05:00
commit b78ae87d6b
2 changed files with 6 additions and 3 deletions

View file

@ -4,7 +4,7 @@
# capture a memory data snapshot with realtime priority
mkdir -p $1
chrt --fifo 99 \
cp -a --parents /proc/[0-9]*/{smaps,cmdline,stat} /proc/meminfo $1
cp -a --parents /proc/[0-9]*/{smaps,cmdline,stat} /proc/meminfo /proc/version $1
# build a compressed tarball of snapshot
cd $1/proc

7
smem
View file

@ -33,6 +33,8 @@ class procdata(object):
return self._readlines('%s/smaps' % pid)
def memdata(self):
return self._readlines('meminfo')
def version(self):
return self._readlines('version')[0]
def pidname(self, pid):
l = self._read('%d/stat' % pid)
return l[l.find('(') + 1: l.find(')')]
@ -552,7 +554,7 @@ def showbar(l, columns, sort):
pylab.show()
def kernel_version_check():
kernel_release = os.uname()[2].split('-')[0]
kernel_release = src.version().split()[2].split('-')[0]
if kernel_release < "2.6.27":
name = os.path.basename(sys.argv[0])
sys.stderr.write(name + " requires a kernel >= 2.6.27\n")
@ -606,7 +608,6 @@ parser.add_option("-S", "--source", type="str",
help="/proc data source")
kernel_version_check()
defaults = {}
parser.set_defaults(**defaults)
(options, args) = parser.parse_args()
@ -616,6 +617,8 @@ try:
except:
src = procdata(options.source)
kernel_version_check()
try:
if options.mappings:
showmaps()