#
e78e29c2 |
| 06-Aug-2024 |
Santiago Gimeno |
linux: disable SQPOLL io_uring by default (#4492) The SQPOLL io_uring instance wasn't providing consistent behaviour to users depending on kernel versions, load shape, ... creating issue
linux: disable SQPOLL io_uring by default (#4492) The SQPOLL io_uring instance wasn't providing consistent behaviour to users depending on kernel versions, load shape, ... creating issues difficult to track and fix. Don't use this ring by default but allow enabling it by calling `uv_loop_configure()` with `UV_LOOP_ENABLE_IO_URING_SQPOLL`.
show more ...
|
#
e5cb1d3d |
| 29-Jul-2024 |
Andy Pan |
linux: eliminate a read on eventfd per wakeup (#4400) Register the eventfd with EPOLLET to enable edge-triggered notification where we're able to eliminate the overhead of reading the ev
linux: eliminate a read on eventfd per wakeup (#4400) Register the eventfd with EPOLLET to enable edge-triggered notification where we're able to eliminate the overhead of reading the eventfd via system call on each wakeup event. When the eventfd counter reaches the maximum value of the unsigned 64-bit, which may not happen for the entire lifetime of the process, we rewind the counter and retry. This optimization saves one system call on each event-loop wakeup, eliminating the overhead of read(2) as well as the extra latency for each epoll wakeup.
show more ...
|
#
7c491bde |
| 11-Jul-2024 |
Viacheslav Muravyev |
unix,win: remove unused req parameter from macros (#4435) Remove the unused `req` parameter from the uv__req_register and uv__req_unregister macros.
|
#
3ecce914 |
| 21-Mar-2024 |
Ben Noordhuis |
linux: don't delay EPOLL_CTL_DEL operations (#4328) Perform EPOLL_CTL_DEL immediately instead of going through io_uring's submit queue, otherwise the file descriptor may be closed by
linux: don't delay EPOLL_CTL_DEL operations (#4328) Perform EPOLL_CTL_DEL immediately instead of going through io_uring's submit queue, otherwise the file descriptor may be closed by the time the kernel starts the operation. Fixes: https://github.com/libuv/libuv/issues/4323
show more ...
|
#
b0816180 |
| 14-Mar-2024 |
Farzin Monsef |
linux: fix /proc/self/stat executable name parsing (#4353) - The filename of the executable may contain both spaces and parentheses - Use uv__slurp instead of open/read/close
|
#
6b56200c |
| 28-Feb-2024 |
Thomas Walter <31201229+waltoss@users.noreply.github.com> |
linux: fix uv_available_parallelism using cgroup (#4278) uv_available_parallelism does not handle container cpu limit set by systems like Docker or Kubernetes. This patch fixes this
linux: fix uv_available_parallelism using cgroup (#4278) uv_available_parallelism does not handle container cpu limit set by systems like Docker or Kubernetes. This patch fixes this limitation by comparing the amount of available cpus returned by syscall with the quota of cpus available defined in the cgroup. Fixes: https://github.com/libuv/libuv/issues/4146
show more ...
|
#
507f3046 |
| 14-Feb-2024 |
Ben Noordhuis |
linux: create io_uring sqpoll ring lazily (#4315) It's been reported that creating many event loops introduces measurable overhead now that libuv creates an sqpoll-enabled ring.
linux: create io_uring sqpoll ring lazily (#4315) It's been reported that creating many event loops introduces measurable overhead now that libuv creates an sqpoll-enabled ring. I don't really see any change in CPU time with or without this change but deferring ring creation until it's actually used seems like a good idea, and comes with no downsides that I can think of, so let's do it. Fixes: https://github.com/libuv/libuv/issues/4308
show more ...
|
#
3b6a1a14 |
| 13-Jan-2024 |
Brad King |
linux: disable io_uring on ppc64 and ppc64le (#4285) Since `io_uring` support was added, libuv's signal handler randomly segfaults on ppc64 when interrupting `epoll_pwait`. Disable it
linux: disable io_uring on ppc64 and ppc64le (#4285) Since `io_uring` support was added, libuv's signal handler randomly segfaults on ppc64 when interrupting `epoll_pwait`. Disable it pending further investigation. Issue: https://github.com/libuv/libuv/issues/4283
show more ...
|
#
160cd562 |
| 08-Jan-2024 |
Santiago Gimeno |
linux: retry fs op if unsupported by io_uring (#4268) Fallback to the threadpool if it returns `EOPNOTSUPP`. Fixes: https://github.com/nodejs/node/issues/50876
|
#
a7d52551 |
| 12-Dec-2023 |
Ben Noordhuis |
linux: remove HAVE_IFADDRS_H macro (#4243) Introduced long ago for old Linux/libc flavors libuv no longer supports. We include <ifaddrs.h> unconditionally elsewhere so there is no p
linux: remove HAVE_IFADDRS_H macro (#4243) Introduced long ago for old Linux/libc flavors libuv no longer supports. We include <ifaddrs.h> unconditionally elsewhere so there is no point in special-casing it here. Fixes: https://github.com/libuv/libuv/issues/4242
show more ...
|
#
f1444293 |
| 15-Nov-2023 |
matoro <12038583+matoro@users.noreply.github.com> |
linux: disable io_uring on hppa below kernel 6.1.51 (#4224) First kernel with support is 6.1, was only fully functional from .51 onwards: https://lore.kernel.org/all/cb912694-b1fe-dbb0-4
linux: disable io_uring on hppa below kernel 6.1.51 (#4224) First kernel with support is 6.1, was only fully functional from .51 onwards: https://lore.kernel.org/all/cb912694-b1fe-dbb0-4d8c-d608f3526905@gmx.de/ Co-authored-by: matoro <matoro@users.noreply.github.com>
show more ...
|
#
a389393f |
| 28-Oct-2023 |
Ben Noordhuis |
linux: disable io_uring on 32 bits arm systems (#4187) It's been reported that no released kernels are bug-free enough to use io_uring without causing regressions. Fixes: https:
linux: disable io_uring on 32 bits arm systems (#4187) It's been reported that no released kernels are bug-free enough to use io_uring without causing regressions. Fixes: https://github.com/libuv/libuv/issues/4158
show more ...
|
#
c811169f |
| 17-Sep-2023 |
Santiago Gimeno |
unix: disable io_uring close on selected kernels (#4141) Specifically on non-longterm kernels between 5.16.0 (non-longterm) and 6.1.0 (longterm). Starting with longterm 6.1.0, the issue
unix: disable io_uring close on selected kernels (#4141) Specifically on non-longterm kernels between 5.16.0 (non-longterm) and 6.1.0 (longterm). Starting with longterm 6.1.0, the issue is solved.
show more ...
|
#
0d78f3c7 |
| 31-Aug-2023 |
Ben Noordhuis |
unix: get mainline kernel version in Debian (#4131) In Debian, the mainline kernel version is reported via the `uname()` `version` field.
|
#
e2c8fed7 |
| 30-Aug-2023 |
Santiago Gimeno |
unix: get mainline kernel version in Ubuntu (#4131) In Ubuntu, the kernel version reported by `uname()` follows the versioning format that Ubuntu uses for their kernels which does not ha
unix: get mainline kernel version in Ubuntu (#4131) In Ubuntu, the kernel version reported by `uname()` follows the versioning format that Ubuntu uses for their kernels which does not have a direct correspondence with the mainline kernel version they're based on. Get that version from `/proc/version_signature` as documented in: https://wiki.ubuntu.com/Kernel/FAQ#Kernel.2FFAQ.2FGeneralVersionRunning.How_can_we_determine_the_version_of_the_running_kernel.3F
show more ...
|
#
65dc822d |
| 25-Aug-2023 |
michalbiesek |
linux: add missing riscv syscall numbers (#4127) Signed-off-by: Michal Biesek <michalbiesek@gmail.com>
|
#
2f827500 |
| 11-Jul-2023 |
Trevor Norris |
unix: match kqueue and epoll code (#4091) Match the implementation for linux.c to kqueue.c in the code around the calls to kevent and epoll. In linux.c the code was made more DR
unix: match kqueue and epoll code (#4091) Match the implementation for linux.c to kqueue.c in the code around the calls to kevent and epoll. In linux.c the code was made more DRY by moving the nfds check up (including a comment of why it's possible) and combining two if checks into one. In kqueue.c the assert to check the timeout when nfds == 0 has been moved to be called directly after the EINTR check. Since it should always be true regardless. Ref: https://github.com/libuv/libuv/pull/3893 Ref: https://github.com/nodejs/node/issues/48490
show more ...
|
#
30c3ef9f |
| 31-Jul-2023 |
Ben Noordhuis |
linux: handle UNAME26 personality (#4109)
|
#
50b53cbd |
| 12-Jul-2023 |
Ben Noordhuis |
linux: don't use io_uring on pre-5.10.186 kernels (#4093) Those kernels have a known resource consumption bug where the sqpoll thread busy-loops. Fixes: https://github.com/libuv
linux: don't use io_uring on pre-5.10.186 kernels (#4093) Those kernels have a known resource consumption bug where the sqpoll thread busy-loops. Fixes: https://github.com/libuv/libuv/issues/4089
show more ...
|
#
a939d643 |
| 12-Jul-2023 |
Shuduo Sang |
linux: fix harmless warn_unused_result warning (#4056)
|
#
1752791c |
| 20-Jun-2023 |
Ben Noordhuis |
linux: work around io_uring IORING_OP_CLOSE bug (#4059) Work around a poorly understood bug in older kernels where closing a file descriptor pointing to /foo/bar results in ETXTBSY error
linux: work around io_uring IORING_OP_CLOSE bug (#4059) Work around a poorly understood bug in older kernels where closing a file descriptor pointing to /foo/bar results in ETXTBSY errors when trying to execve("/foo/bar") later on. The bug seems to have been fixed somewhere between 5.15.85 and 5.15.90. I couldn't pinpoint the responsible commit but good candidates are the several data race fixes. Interestingly, it seems to manifest only when running under Docker so the possibility of a Docker bug can't be completely ruled out either. This commit moves uv__kernel_version() from fs.c to linux.c because the latter now uses it more than the former. Fixes: https://github.com/nodejs/node/issues/48444
show more ...
|
#
7ada448d |
| 16-Jun-2023 |
liuxiang88 <94350585+liuxiang88@users.noreply.github.com> |
unix: add loongarch support (#4054) Signed-off-by: liuxiang <liuxiang@loongson.cn>
|
#
e7b96331 |
| 25-May-2023 |
Santiago Gimeno |
linux: fs_read to use io_uring if iovcnt > IOV_MAX (#4023) Just cap it to `IOV_MAX` as it's already done when performing reads using the threadpool.
|
#
1b01b786 |
| 24-May-2023 |
Ben Noordhuis |
unix,win: replace QUEUE with struct uv__queue (#4022) Recent versions of gcc have started emitting warnings about the liberal type casting inside the QUEUE macros. Although the warnings
unix,win: replace QUEUE with struct uv__queue (#4022) Recent versions of gcc have started emitting warnings about the liberal type casting inside the QUEUE macros. Although the warnings are false positives, let's use them as the impetus to switch to a type-safer and arguably cleaner approach. Fixes: https://github.com/libuv/libuv/issues/4019
show more ...
|
#
962b8e62 |
| 23-May-2023 |
Santiago Gimeno |
linux: add some more iouring backed fs ops (#4012) Specifically: `link`, `mkdir`, `rename`, `symlink` and `unlink`.
|