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:
parent
b2041ff9b6
commit
67aee6e39d
2 changed files with 6 additions and 3 deletions
2
capture
2
capture
|
|
@ -4,7 +4,7 @@
|
||||||
# capture a memory data snapshot with realtime priority
|
# capture a memory data snapshot with realtime priority
|
||||||
mkdir -p $1
|
mkdir -p $1
|
||||||
chrt --fifo 99 \
|
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
|
# build a compressed tarball of snapshot
|
||||||
cd $1/proc
|
cd $1/proc
|
||||||
|
|
|
||||||
7
smem
7
smem
|
|
@ -33,6 +33,8 @@ class procdata(object):
|
||||||
return self._readlines('%s/smaps' % pid)
|
return self._readlines('%s/smaps' % pid)
|
||||||
def memdata(self):
|
def memdata(self):
|
||||||
return self._readlines('meminfo')
|
return self._readlines('meminfo')
|
||||||
|
def version(self):
|
||||||
|
return self._readlines('version')[0]
|
||||||
def pidname(self, pid):
|
def pidname(self, pid):
|
||||||
l = self._read('%d/stat' % pid)
|
l = self._read('%d/stat' % pid)
|
||||||
return l[l.find('(') + 1: l.find(')')]
|
return l[l.find('(') + 1: l.find(')')]
|
||||||
|
|
@ -552,7 +554,7 @@ def showbar(l, columns, sort):
|
||||||
pylab.show()
|
pylab.show()
|
||||||
|
|
||||||
def kernel_version_check():
|
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":
|
if kernel_release < "2.6.27":
|
||||||
name = os.path.basename(sys.argv[0])
|
name = os.path.basename(sys.argv[0])
|
||||||
sys.stderr.write(name + " requires a kernel >= 2.6.27\n")
|
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")
|
help="/proc data source")
|
||||||
|
|
||||||
|
|
||||||
kernel_version_check()
|
|
||||||
defaults = {}
|
defaults = {}
|
||||||
parser.set_defaults(**defaults)
|
parser.set_defaults(**defaults)
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
@ -616,6 +617,8 @@ try:
|
||||||
except:
|
except:
|
||||||
src = procdata(options.source)
|
src = procdata(options.source)
|
||||||
|
|
||||||
|
kernel_version_check()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if options.mappings:
|
if options.mappings:
|
||||||
showmaps()
|
showmaps()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue