From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35025) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aO3yP-0008TH-V5 for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:47:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aO3yP-00044F-1U for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:47:57 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46154) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aO3yO-000447-TU for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:47:56 -0500 From: Paolo Bonzini Date: Tue, 26 Jan 2016 14:46:52 +0100 Message-Id: <1453816041-36362-21-git-send-email-pbonzini@redhat.com> In-Reply-To: <1453816041-36362-1-git-send-email-pbonzini@redhat.com> References: <1453816041-36362-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 20/49] scripts/kvm/kvm_stat: Set sensible no. files rlimit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Janosch Frank From: Janosch Frank 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 Signed-off-by: Janosch Frank Message-Id: <1452525484-32309-15-git-send-email-frankja@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini --- 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