mirror of https://github.com/xemu-project/xemu.git
scripts/kvm/kvm_stat: Cleanup of multiple imports
Removed multiple imports of the same module and moved all imports to the top. It is not necessary to import a module each time one of its functions/classes is used. For readability each import should get its own line. Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com> Message-Id: <1452525484-32309-2-git-send-email-frankja@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
27ef9cb0e7
commit
c81ab0ac90
|
@ -12,8 +12,16 @@
|
||||||
# the COPYING file in the top-level directory.
|
# the COPYING file in the top-level directory.
|
||||||
|
|
||||||
import curses
|
import curses
|
||||||
import sys, os, time, optparse, ctypes
|
import sys
|
||||||
from ctypes import *
|
import os
|
||||||
|
import time
|
||||||
|
import optparse
|
||||||
|
import ctypes
|
||||||
|
import fcntl
|
||||||
|
import resource
|
||||||
|
import struct
|
||||||
|
import re
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
class DebugfsProvider(object):
|
class DebugfsProvider(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -285,12 +293,10 @@ filters['kvm_userspace_exit'] = ('reason', invert(userspace_exit_reasons))
|
||||||
if exit_reasons:
|
if exit_reasons:
|
||||||
filters['kvm_exit'] = ('exit_reason', invert(exit_reasons))
|
filters['kvm_exit'] = ('exit_reason', invert(exit_reasons))
|
||||||
|
|
||||||
import struct, array
|
|
||||||
|
|
||||||
libc = ctypes.CDLL('libc.so.6')
|
libc = ctypes.CDLL('libc.so.6')
|
||||||
syscall = libc.syscall
|
syscall = libc.syscall
|
||||||
get_errno = libc.__errno_location
|
get_errno = libc.__errno_location
|
||||||
get_errno.restype = POINTER(c_int)
|
get_errno.restype = ctypes.POINTER(ctypes.c_int)
|
||||||
|
|
||||||
class perf_event_attr(ctypes.Structure):
|
class perf_event_attr(ctypes.Structure):
|
||||||
_fields_ = [('type', ctypes.c_uint32),
|
_fields_ = [('type', ctypes.c_uint32),
|
||||||
|
@ -334,8 +340,6 @@ PERF_FORMAT_TOTAL_TIME_RUNNING = 1 << 1
|
||||||
PERF_FORMAT_ID = 1 << 2
|
PERF_FORMAT_ID = 1 << 2
|
||||||
PERF_FORMAT_GROUP = 1 << 3
|
PERF_FORMAT_GROUP = 1 << 3
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
sys_tracing = '/sys/kernel/debug/tracing'
|
sys_tracing = '/sys/kernel/debug/tracing'
|
||||||
|
|
||||||
class Group(object):
|
class Group(object):
|
||||||
|
@ -378,17 +382,13 @@ class Event(object):
|
||||||
err = get_errno()[0]
|
err = get_errno()[0]
|
||||||
raise Exception('perf_event_open failed, errno = ' + err.__str__())
|
raise Exception('perf_event_open failed, errno = ' + err.__str__())
|
||||||
if filter:
|
if filter:
|
||||||
import fcntl
|
|
||||||
fcntl.ioctl(fd, ioctl_numbers['SET_FILTER'], filter)
|
fcntl.ioctl(fd, ioctl_numbers['SET_FILTER'], filter)
|
||||||
self.fd = fd
|
self.fd = fd
|
||||||
def enable(self):
|
def enable(self):
|
||||||
import fcntl
|
|
||||||
fcntl.ioctl(self.fd, ioctl_numbers['ENABLE'], 0)
|
fcntl.ioctl(self.fd, ioctl_numbers['ENABLE'], 0)
|
||||||
def disable(self):
|
def disable(self):
|
||||||
import fcntl
|
|
||||||
fcntl.ioctl(self.fd, ioctl_numbers['DISABLE'], 0)
|
fcntl.ioctl(self.fd, ioctl_numbers['DISABLE'], 0)
|
||||||
def reset(self):
|
def reset(self):
|
||||||
import fcntl
|
|
||||||
fcntl.ioctl(self.fd, ioctl_numbers['RESET'], 0)
|
fcntl.ioctl(self.fd, ioctl_numbers['RESET'], 0)
|
||||||
|
|
||||||
class TracepointProvider(object):
|
class TracepointProvider(object):
|
||||||
|
@ -426,7 +426,6 @@ class TracepointProvider(object):
|
||||||
def _setup(self, _fields):
|
def _setup(self, _fields):
|
||||||
self._fields = _fields
|
self._fields = _fields
|
||||||
cpus = self._online_cpus()
|
cpus = self._online_cpus()
|
||||||
import resource
|
|
||||||
nfiles = len(cpus) * 1000
|
nfiles = len(cpus) * 1000
|
||||||
resource.setrlimit(resource.RLIMIT_NOFILE, (nfiles, nfiles))
|
resource.setrlimit(resource.RLIMIT_NOFILE, (nfiles, nfiles))
|
||||||
events = []
|
events = []
|
||||||
|
@ -454,7 +453,6 @@ class TracepointProvider(object):
|
||||||
else:
|
else:
|
||||||
event.disable()
|
event.disable()
|
||||||
def read(self):
|
def read(self):
|
||||||
from collections import defaultdict
|
|
||||||
ret = defaultdict(int)
|
ret = defaultdict(int)
|
||||||
for group in self.group_leaders:
|
for group in self.group_leaders:
|
||||||
for name, val in group.read().iteritems():
|
for name, val in group.read().iteritems():
|
||||||
|
@ -468,7 +466,6 @@ class Stats:
|
||||||
self._update()
|
self._update()
|
||||||
def _update(self):
|
def _update(self):
|
||||||
def wanted(key):
|
def wanted(key):
|
||||||
import re
|
|
||||||
if not self.fields_filter:
|
if not self.fields_filter:
|
||||||
return True
|
return True
|
||||||
return re.match(self.fields_filter, key) is not None
|
return re.match(self.fields_filter, key) is not None
|
||||||
|
@ -640,7 +637,6 @@ stats = Stats(providers, fields = options.fields)
|
||||||
if options.log:
|
if options.log:
|
||||||
log(stats)
|
log(stats)
|
||||||
elif not options.once:
|
elif not options.once:
|
||||||
import curses.wrapper
|
|
||||||
curses.wrapper(tui, stats)
|
curses.wrapper(tui, stats)
|
||||||
else:
|
else:
|
||||||
batch(stats)
|
batch(stats)
|
||||||
|
|
Loading…
Reference in New Issue