Lasse Collin <[email protected]> writes:

> On 2026-08-20 Pádraig Brady wrote:
>> Re syscall overhead, it's unfortunate, but I don't see a way around
>> that at present.
>
> The syscall count in get_cgroup2_cpu_quota could be reduced by 25 % by
> avoiding stdio. With glibc, fopen + getline + fclose is four syscalls:
> openat + fstat + read + close. Using open + read + close would need only
> three.
>
>> I do note that sort(1) uses both nproc() and physmem_total(), which
>> suggests a shared or cached interface may be useful, but that can
>> come at a later stage.
>
> One could cache the mount point and the cgroup path from
> /proc/self/cgroup. It would typically save 4-5 syscalls. I don't know
> if it's worth the extra code.

Agreed, it probably isn't worth the extra effort.

It would be nice to not duplicate code though. From my initial look at
implementing things yesterday I was thinking of putting cgroup2_mount
and the part of get_cgroup2_cpu_quota that reads "/proc/self/cgroup"
into a separate header/file.

> "sort /dev/null" (coreutils 9.11) makes over 40 rt_sigaction syscalls,
> so in sort(1) the cgroup related syscalls aren't so large portion of
> the total syscall count.

Yeah. I assume you probably knew already, but that is so we properly
clean up the temporary files. The slower start up time is nicer than
leaving junk on the file system. :)

Collin

Reply via email to