[Rpm-maint] [rpm-software-management/rpm] luaext/Pexec: optimize setting CLOEXEC (#444)

Kirill Kolyshkin notifications at github.com
Thu May 17 19:01:02 UTC 2018


In case maximum number of open files limit is set too high, Pexec() spends way too much time trying to set FD_CLOEXEC for all those file descriptors, resulting in severe increase of time it takes to execute rpm or dnf. For example, this happens while running under Docker because:

> $ docker run fedora ulimit -n
> 1048576

One obvious fix is when open_max is too big, use procfs to get the actual list of opened file descriptors and iterate over those.

My quick-n-dirty benchmark shows the /proc approach is about 10x faster than iterating through a list of 1024 fds.

Note that this commit is rather conservative, meaning that the old code is used:
 - if open_max <= 1024;
 - if /proc is not available.

This should fix:
- https://github.com/moby/moby/issues/23137
- https://bugzilla.redhat.com/show_bug.cgi?id=1537564
You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/444

-- Commit Summary --

  * luaext/Pexec: optimize setting CLOEXEC

-- File Changes --

    M luaext/lposix.c (60)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/444.patch
https://github.com/rpm-software-management/rpm/pull/444.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/444
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20180517/ad5b3fd4/attachment.html>


More information about the Rpm-maint mailing list