Skip to content

ROOT 6.36.04 does a factor 2 more stats when loading a library than 6.32.08 #20673

@ktf

Description

@ktf

Check duplicate issues.

  • Checked for duplicates

Description

We see a large number of (unneeded?) stats when trying to load a library. This results in greatly reduced performance on startup to the point it prevents us to start our datataking workflows.

In particular doing:

strace -f root -q -e 'gSystem->Load("libO2DataFormatFV0s.so")' 2>&1 | grep BUILD

results in 15843 matches while with the old release we have 6049. Notice in both cases none of the files actually exists. So this is really ROOT looking up in some unrelocated path, which itself is wrong.

Moreover it looks like the same stat is done multiple times. In both logs I have patterns like:

→ cat stats-new.txt | head -n 100
 newfstatat(AT_FDCWD, "/home/alibuild/sw/BUILD/<build-hash>/ROOT/lib/libc.pcm", 0x7ffd02cf75e0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include", 0x7ffd02cf5fc0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include", 0x7ffd02cf6430, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stddef.h", 0x7ffd02cf61c0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stddef.h", 0x7ffd02cf6630, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_size_t.h", 0x7ffd02cf6130, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_size_t.h", 0x7ffd02cf65a0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_size_t.h", 0x7ffd02cf61c0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_size_t.h", 0x7ffd02cf6630, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_null.h", 0x7ffd02cf6130, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_null.h", 0x7ffd02cf65a0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_null.h", 0x7ffd02cf61c0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/__stddef_null.h", 0x7ffd02cf6630, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdint.h", 0x7ffd02cf6130, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdint.h", 0x7ffd02cf65a0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdint.h", 0x7ffd02cf61c0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdint.h", 0x7ffd02cf6630, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdarg.h", 0x7ffd02cf6130, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdarg.h", 0x7ffd02cf65a0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdarg.h", 0x7ffd02cf61c0, 0) = -1 ENOENT (No such file or directory)
 newfstatat(AT_FDCWD, "/data/sw/BUILD/<build-hash>/ROOT/etc/cling/lib/clang/18/include/stdarg.h", 0x7ffd02cf6630, 0) = -1 ENOENT (No such file or directory)

which show repetitive, failing stats for the same file.

Reproducer

See above

ROOT version

6.36.04-alice2

Installation method

aliBuild

Operating system

Linux

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugexperimentAffects an experiment / reported by its software & computimng expertsin:Cling

Type

No type

Projects

Status

Issues

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions