Re: [PATCH v3 0/8] Add io_dir to avoid memory overhead from opendir

From: Namhyung Kim
Date: Tue Feb 25 2025 - 16:58:19 EST


On Fri, 21 Feb 2025 22:10:05 -0800, Ian Rogers wrote:
> glibc's opendir allocates a minimum of 32kb, when called recursively
> for a directory tree the memory consumption can add up - nearly 300kb
> during perf start-up when processing modules. Add a stack allocated
> variant of readdir sized a little more than 1kb
>
> v3: Rebase on top of Krzysztof Łopatowski's work. Add additional
> defines for SYS_getdents64 on all other architectures if its
> definition is missing. Add a patch to further reduce the
> stack/memory usage in machine__set_modules_path_dir by appending
> to a buffer rather than creating a copy.
> v2: Remove the feature test and always use a perf supplied getdents64
> to workaround an Alpine Linux issue in v1:
> https://lore.kernel.org/lkml/20231207050433.1426834-1-irogers@xxxxxxxxxx/
> As suggested by Krzysztof Łopatowski
> <krzysztof.m.lopatowski@xxxxxxxxx> who also pointed to the perf
> trace performance improvements in start-up time eliminating stat
> calls can achieve:
> https://lore.kernel.org/lkml/20250206113314.335376-2-krzysztof.m.lopatowski@xxxxxxxxx/
> Convert parse-events and hwmon_pmu to use io_dir.
> v1: This was previously part of the memory saving change set:
> https://lore.kernel.org/lkml/20231127220902.1315692-1-irogers@xxxxxxxxxx/
> It is separated here and a feature check and syscall workaround
> for missing getdents64 added.
>
> [...]
Applied to perf-tools-next, thanks!

Best regards,
Namhyung