提交 392a7fa3 编写于 作者: J Janosch Frank 提交者: Paolo Bonzini

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: NJason J. Herne <jjherne@linux.vnet.ibm.com>
Signed-off-by: NJanosch Frank <frankja@linux.vnet.ibm.com>
Message-Id: <1452525484-32309-15-git-send-email-frankja@linux.vnet.ibm.com>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 400b3cb5
......@@ -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:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册