]> git.proxmox.com Git - mirror_qemu.git/commitdiff
scripts/kvm/kvm_stat: Set sensible no. files rlimit
authorJanosch Frank <frankja@linux.vnet.ibm.com>
Mon, 11 Jan 2016 15:17:44 +0000 (16:17 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 26 Jan 2016 14:58:12 +0000 (15:58 +0100)
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>
scripts/kvm/kvm_stat

index 457624d9f363f7c97edb0c2cd5e46be5571beea7..93b5ea7aac12d6bc097e06863883dc6722b2e2ea 100755 (executable)
@@ -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: