[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 20/49] scripts/kvm/kvm_stat: Set sensible no. files r
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 20/49] scripts/kvm/kvm_stat: Set sensible no. files rlimit |
Date: |
Tue, 26 Jan 2016 14:46:52 +0100 |
From: Janosch Frank <address@hidden>
As num cpus * 1000 is NOT a sensible rlimit, we need to calculate a
more accurate rlimit.
The number of open files is directly dependent on the cpu count and on
the number of trace points per cpu. A additional constant works as a
buffer for files that are needed by python or do get opened when the
script runs.
Hence we have:
cpus * traces + constant
Reviewed-by: Jason J. Herne <address@hidden>
Signed-off-by: Janosch Frank <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
scripts/kvm/kvm_stat | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 457624d..93b5ea7 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -395,8 +395,15 @@ class TracepointProvider(object):
def _setup(self, _fields):
self._fields = _fields
cpus = self._online_cpus()
- nfiles = len(cpus) * 1000
- resource.setrlimit(resource.RLIMIT_NOFILE, (nfiles, nfiles))
+
+ # The constant is needed as a buffer for python libs, std
+ # streams and other files that the script opens.
+ rlimit = len(cpus) * len(_fields) + 50
+ try:
+ resource.setrlimit(resource.RLIMIT_NOFILE, (rlimit, rlimit))
+ except ValueError:
+ sys.exit("NOFILE rlimit could not be raised to {0}".format(rlimit))
+
events = []
self.group_leaders = []
for cpu in cpus:
--
1.8.3.1
- [Qemu-devel] [PULL 07/49] scripts/kvm/kvm_stat: Cleanup of multiple imports, (continued)
- [Qemu-devel] [PULL 07/49] scripts/kvm/kvm_stat: Cleanup of multiple imports, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 09/49] scripts/kvm/kvm_stat: Make constants uppercase, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 11/49] scripts/kvm/kvm_stat: Mark globals in functions, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 13/49] scripts/kvm/kvm_stat: Cleanup of path variables, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 12/49] scripts/kvm/kvm_stat: Invert dictionaries, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 15/49] scripts/kvm/kvm_stat: Introduce main function, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 17/49] scripts/kvm/kvm_stat: Rename variables that redefine globals, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 18/49] scripts/kvm/kvm_stat: Moved DebugfsProvider, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 14/49] scripts/kvm/kvm_stat: Improve debugfs access checking, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 16/49] scripts/kvm/kvm_stat: Fix spaces around keyword assignments, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 20/49] scripts/kvm/kvm_stat: Set sensible no. files rlimit,
Paolo Bonzini <=
- [Qemu-devel] [PULL 19/49] scripts/kvm/kvm_stat: Fixup syscall error reporting, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 23/49] scripts/kvm/kvm_stat: Rename _perf_event_open, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 22/49] scripts/kvm/kvm_stat: Make cpu detection a function, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 21/49] scripts/kvm/kvm_stat: Cleanup of platform detection, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 26/49] scripts/kvm/kvm_stat: Cleanup cpu list retrieval, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 27/49] scripts/kvm/kvm_stat: Encapsulate filters variable, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 25/49] scripts/kvm/kvm_stat: Cleanup of TracepointProvider, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 24/49] scripts/kvm/kvm_stat: Introduce properties for providers, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 30/49] scripts/kvm/kvm_stat: Cleanup of Event class, Paolo Bonzini, 2016/01/26
- [Qemu-devel] [PULL 29/49] scripts/kvm/kvm_stat: Cleanup of Groups class, Paolo Bonzini, 2016/01/26