|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4] tools/xenconsoled: Increase file descriptor limit
On 27/02/15 16:13, Ian Jackson wrote:
> Andrew Cooper writes ("[PATCH v4] tools/xenconsoled: Increase file descriptor
> limit"):
>> XenServer's VM density testing uncovered a regression when moving from
>> sysvinit to systemd where the file descriptor limit dropped from 4096 to
>> 1024. (XenServer had previously inserted a ulimit statement into its
>> initscripts.)
>>
>> One solution is to use LimitNOFILE=4096 in xenconsoled.service to match the
>> lost ulimit, but that is only a stopgap solution.
>>
>> As Xenconsoled genuinely needs a large number of file descriptors if a large
>> number of domains are running, attempt to increase the limit.
> ...
>
> There's still a lot of code here I think we can do without.
>
> Why do we care about the system maximum ?
In the case that the system maximum is less than 132008 but greater than
the current hard limit, we want to grab as many FDs as we can.
I can drop it completely if you are happy that noone is really going to
xenconsoled on a Linux system with nr_open less than 1M.
>
>> + /*
>> + * Will min_fds fit within our current hard limit?
>> + * (likely on *BSD, unlikely on Linux)
>> + * If so, raise our soft limit.
>> + */
>> + if (min_fds <= lim.rlim_max) {
>> + struct rlimit new = {
>> + .rlim_cur = min_fds,
>> + .rlim_max = lim.rlim_max,
>> + };
>> +
>> + if (setrlimit(RLIMIT_NOFILE, &new) < 0)
>> + syslog(LOG_WARNING,
>> + "Unable to increase fd soft limit: %lu -> %u, "
>> + "hard %lu (%s) - May run out with lots of
>> domains",
>> + lim.rlim_cur, min_fds, lim.rlim_max,
>> + strerror(errno));
>> + } else {
>> + /*
>> + * Lets hope that, as a root process, we have sufficient
>> + * privilege to up the hard limit.
>> + */
>> + struct rlimit new = { .rlim_cur = min_fds, .rlim_max = min_fds
>> };
>> +
>> + if (setrlimit(RLIMIT_NOFILE, &new) < 0)
>> + syslog(LOG_WARNING,
>> + "Unable to increase fd hard limit: %lu -> %u
>> (%s)"
>> + " - May run out with lots of domains",
>> + lim.rlim_max, min_fds, strerror(errno));
>> + }
> This is very repetitive. The only difference between the two branches
> is (a) the value of .rlim_max and (b) the log message. (b) can be
> dealt with by making the log message depend only on the contents of
> new.
I will see what I can do.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |