in app/source/dragen/src/dragen_qs.py [0:0]
def set_resource_limits(self):
# Set resource limits based on values in /etc/security.d/limits.d/99-edico.conf
edico_limits = "/etc/security/limits.d/99-edico.conf"
rlimit = {}
if os.path.exists(edico_limits):
limitsfd = open(edico_limits, 'r')
for line in limitsfd:
fields = line.split()
if fields[0] == '*' and fields[2] in ['nproc', 'nofile', 'stack']:
res = eval("resource.RLIMIT_%s" % fields[2].upper())
if fields[3] == "unlimited":
rlimit[res] = resource.RLIM_INFINITY
else:
if fields[2] == 'stack':
# limits.conf file is in KB, setrlimit command takes bytes
rlimit[res] = int(fields[3]) * 1024
else:
rlimit[res] = int(fields[3])
else:
rlimit[resource.RLIMIT_NPROC] = 16384
rlimit[resource.RLIMIT_NOFILE] = 65535
rlimit[resource.RLIMIT_STACK] = 10240 * 1024
for res, limit in six.iteritems(rlimit):
printf("Setting resource %s to %s" % (res, limit))
try:
resource.setrlimit(res, (limit, limit))
except Exception as e:
msg = "Could not set resource ID %s to hard/soft limit %s (error=%s)" \
% (res, limit, e)
printf(msg)
return