Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Speed up closing all file descriptors in the child process (Fixes #835) #840

Merged
merged 2 commits into from
Jun 23, 2024

Conversation

adangel
Copy link
Contributor

@adangel adangel commented Jun 22, 2024

When _SC_OPEN_MAX (max nr of open files limit per process) is a very big number, then closing all possible file handles can take a while. This change first tries to use the syscall close_range() if available, falling back to use /proc/self/fd to close only open file handles, and lastly falling back to the old way of closing all possible handles one after another.
In general, the first or second approach should be available which speeds up the pty spawning.

Refs JetBrains/pty4j#147
Copied from JetBrains/pty4j@04685d8 (which is EPL 1.0)

Fixes #835

@adangel
Copy link
Contributor Author

adangel commented Jun 22, 2024

I tested it successfully under linux x86_64 with eclipse 2024-06.

…ipse-cdt#835)

When _SC_OPEN_MAX (max nr of open files limit per process) is a very
big number, then closing all possible file handles can take a while.
This change first tries to use the syscall close_range() if available,
falling back to use /proc/self/fd to close only open file handles,
and lastly falling back to the old way of closing all possible handles
one after another.
In general, the first or second approach should be available
which speeds up the pty spawning.

Refs JetBrains/pty4j#147
Copied from JetBrains/pty4j@04685d8
(which is EPL 1.0)

Co-authored-by: Sergey Simonchik <sergey.simonchik@jetbrains.com>
@adangel adangel force-pushed the pty-faster-fd-close branch from adef8eb to 23af0ec Compare June 22, 2024 07:35
@adangel adangel changed the title Speed up closing all file descriptors in the child process (Fixes #855) Speed up closing all file descriptors in the child process (Fixes #835) Jun 22, 2024
@jonahgraham jonahgraham modified the milestones: 11.6.1, 12.0.0 Jun 23, 2024
@jonahgraham jonahgraham merged commit f39fa55 into eclipse-cdt:main Jun 23, 2024
5 checks passed
jonahgraham added a commit to jonahgraham/cdt that referenced this pull request Jun 23, 2024
Apply the coding standards to the C code from eclipse-cdt#840
jonahgraham added a commit that referenced this pull request Jun 23, 2024
Apply the coding standards to the C code from #840
jonahgraham pushed a commit to jonahgraham/cdt that referenced this pull request Jun 27, 2024
…ipse-cdt#835)

_This commit adds to eclipse-cdt#840 7bd8d52 to apply the same fix to
another place that does the same operation on all fds._

When _SC_OPEN_MAX (max nr of open files limit per process) is a very
big number, then closing all possible file handles can take a while.
This change first tries to use the syscall close_range() if available,
falling back to use /proc/self/fd to close only open file handles,
and lastly falling back to the old way of closing all possible handles
one after another.
In general, the first or second approach should be available
which speeds up the pty spawning.

Refs JetBrains/pty4j#147
Copied from JetBrains/pty4j@04685d8
(which is EPL 1.0)

Co-authored-by: Sergey Simonchik <sergey.simonchik@jetbrains.com>
jonahgraham pushed a commit that referenced this pull request Jun 28, 2024
_This commit adds to #840 7bd8d52 to apply the same fix to
another place that does the same operation on all fds._

When _SC_OPEN_MAX (max nr of open files limit per process) is a very
big number, then closing all possible file handles can take a while.
This change first tries to use the syscall close_range() if available,
falling back to use /proc/self/fd to close only open file handles,
and lastly falling back to the old way of closing all possible handles
one after another.
In general, the first or second approach should be available
which speeds up the pty spawning.

Refs JetBrains/pty4j#147
Copied from JetBrains/pty4j@04685d8
(which is EPL 1.0)

Co-authored-by: Sergey Simonchik <sergey.simonchik@jetbrains.com>
@jonahgraham
Copy link
Member

💚 All backports created successfully

Status Branch Result
cdt_11_6

Questions ?

Please refer to the Backport tool documentation

jonahgraham added a commit to jonahgraham/cdt that referenced this pull request Jun 28, 2024
Apply the coding standards to the C code from eclipse-cdt#840

(cherry picked from commit 24d9bd1)
jonahgraham pushed a commit to jonahgraham/cdt that referenced this pull request Jun 28, 2024
…ipse-cdt#835)

_This commit adds to eclipse-cdt#840 7bd8d52 to apply the same fix to
another place that does the same operation on all fds._

When _SC_OPEN_MAX (max nr of open files limit per process) is a very
big number, then closing all possible file handles can take a while.
This change first tries to use the syscall close_range() if available,
falling back to use /proc/self/fd to close only open file handles,
and lastly falling back to the old way of closing all possible handles
one after another.
In general, the first or second approach should be available
which speeds up the pty spawning.

Refs JetBrains/pty4j#147
Copied from JetBrains/pty4j@04685d8
(which is EPL 1.0)

Co-authored-by: Sergey Simonchik <sergey.simonchik@jetbrains.com>
(cherry picked from commit 3875408)
@jonahgraham jonahgraham modified the milestones: 12.0.0, 12.0.0 M1 Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

100% CPU when opening terminal and takes lot of time
2 participants