tools/kvm_stat: fix handling of invalid paths in debugfs provider
[ Upstream commit 617c66b9f2
]
When filtering by guest, kvm_stat displays garbage when the guest is
destroyed - see sample output below.
We add code to remove the invalid paths from the providers, so at least
no more garbage is displayed.
Here's a sample output to illustrate:
kvm statistics - pid 13986 (foo)
Event Total %Total CurAvg/s
diagnose_258 -2 0.0 0
deliver_program_interruption -3 0.0 0
diagnose_308 -4 0.0 0
halt_poll_invalid -91 0.0 -6
deliver_service_signal -244 0.0 -16
halt_successful_poll -250 0.1 -17
exit_pei -285 0.1 -19
exit_external_request -312 0.1 -21
diagnose_9c -328 0.1 -22
userspace_handled -713 0.1 -47
halt_attempted_poll -939 0.2 -62
deliver_emergency_signal -3126 0.6 -208
halt_wakeup -7199 1.5 -481
exit_wait_state -7379 1.5 -493
diagnose_500 -56499 11.5 -3757
exit_null -85491 17.4 -5685
diagnose_44 -133300 27.1 -8874
exit_instruction -195898 39.8 -13037
Total -492063
Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pull/10/head
parent
52614f7bf1
commit
3b83a52796
|
@ -731,6 +731,13 @@ class DebugfsProvider(Provider):
|
|||
self.do_read = True
|
||||
self.reset()
|
||||
|
||||
def _verify_paths(self):
|
||||
"""Remove invalid paths"""
|
||||
for path in self.paths:
|
||||
if not os.path.exists(os.path.join(PATH_DEBUGFS_KVM, path)):
|
||||
self.paths.remove(path)
|
||||
continue
|
||||
|
||||
def read(self, reset=0, by_guest=0):
|
||||
"""Returns a dict with format:'file name / field -> current value'.
|
||||
|
||||
|
@ -745,6 +752,7 @@ class DebugfsProvider(Provider):
|
|||
# If no debugfs filtering support is available, then don't read.
|
||||
if not self.do_read:
|
||||
return results
|
||||
self._verify_paths()
|
||||
|
||||
paths = self.paths
|
||||
if self._pid == 0:
|
||||
|
|
Loading…
Reference in New Issue