diff options
author | Janosch Frank | 2016-01-11 16:17:44 +0100 |
---|---|---|
committer | Paolo Bonzini | 2016-01-26 15:58:12 +0100 |
commit | 392a7fa3ca3fbd157cec6b58283c51cbd894d4fb (patch) | |
tree | 426a789892ba66af2d9cf21bf6fb4eae6916835d | |
parent | scripts/kvm/kvm_stat: Fixup syscall error reporting (diff) | |
download | qemu-392a7fa3ca3fbd157cec6b58283c51cbd894d4fb.tar.gz qemu-392a7fa3ca3fbd157cec6b58283c51cbd894d4fb.tar.xz qemu-392a7fa3ca3fbd157cec6b58283c51cbd894d4fb.zip |
scripts/kvm/kvm_stat: Set sensible no. files rlimit
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 <jjherne@linux.vnet.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Message-Id: <1452525484-32309-15-git-send-email-frankja@linux.vnet.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rwxr-xr-x | scripts/kvm/kvm_stat | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat index 457624d9f3..93b5ea7aac 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: |