Skip to content

Conversation

@bbockelm
Copy link
Collaborator

Valgrind is incredibly useful C++ debugging tool to check for leaks and other memory usage errors.

However, it also makes the application incredibly slow: it's often a 20x (or more) performance penalty. Xrootd caches hit the timeouts frequently.

This PR adds a few hidden tunables to allow us to increase timeouts enough for xrootd to run under valgrind. It also adds some standard C++ debugging tools into the development container.

Copy link
Member

@jhiemstrawisc jhiemstrawisc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we pull the actual defaults from docs/parameters.yaml yet, so the value we get from param.Xrootd_MaxStartupWait.GetDuration() is going to be 0 unless it's defined in the user's custom config. My guess is this is what's breaking the ticker.

Defaults can be defined in either config/resources/defaults.yaml or in our new config/config.go::SetServerDefaults

If xrootd is running under valgrind, the startup time may be much
more than 10s.  Provide a hidden tunable to give valgrind more time.
Under valgrind, its trivial to make the default cache timeouts hit
frequently - make this adjustable so stress tests can succeed.

Additionally, add a few helper RPMs for debugging under valgrind.
@jhiemstrawisc jhiemstrawisc self-requested a review November 27, 2024 18:16
@jhiemstrawisc jhiemstrawisc merged commit 8e5f60a into PelicanPlatform:main Nov 27, 2024
20 checks passed
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.

3 participants