Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Per-thread cpu time #181

Closed
wants to merge 1 commit into from
Closed

Per-thread cpu time #181

wants to merge 1 commit into from

Conversation

d-netto
Copy link
Member

@d-netto d-netto commented Sep 20, 2024

PR Description

Expands on #175 by:

  • Adding per-thread start-time.
  • Using a proper macro/API to increment metrics.
  • Splitting GC time into safe-point time and proper GC time.
  • Introducing internal SpinLock time.
  • Introducing feature flag to report metrics in terms of CPU time or wall time.

Checklist

Requirements for merging:

  • I have opened an issue or PR upstream on JuliaLang/julia: <link to JuliaLang/julia>
  • I have removed the port-to-* labels that don't apply.
  • I have opened a PR on raicode to test these changes:

@github-actions github-actions bot added port-to-v1.10 port-to-v1.12 This change should apply to Julia v1.12 builds labels Sep 20, 2024
@d-netto d-netto force-pushed the dcn-user-cpu-time branch 3 times, most recently from 4e1bf4c to 296eeb4 Compare September 23, 2024 16:40
Copy link
Member

@nickrobinson251 nickrobinson251 left a comment

Choose a reason for hiding this comment

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

nice work. Have you been able to test this out on some simple examples to sense-check the numbers?

JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *trypoptask, jl_value_t *q, jl_value_t *checkempty)
{
uint64_t t0 = jl_record_time_for_tls_metric();
jl_task_t *task = _jl_task_get_next(trypoptask, q, checkempty);
jl_increment_timing_tls_metric(jl_current_task->ptls, scheduler_time, jl_record_time_for_tls_metric() - t0);
return task;
}
Copy link
Member

Choose a reason for hiding this comment

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

I think this got lost in the handoff, but the original plan was to not record the current time twice for the "fast-path" of task switching.

The concern is that adding two syscalls can meaningfully slow down task switching, and the idea was that we probably don't need to do this anyway since the time we'd be measuring in the fast-path case is trivial (we believe).

So ideally I think we'd want to only do this in the slow paths inside jl_task_get_next?

BUT to be honest, I find your approach much cleaner and clearer - and it's nice that we would get an accurate measure of that switch time which is supposed to be cheap......... AND we are going to need something like this anyway for the per-task CPU time in https://relationalai.atlassian.net/browse/RAI-30482...

So maybe if we could solve the vDSO / fast instruction problem, then we could do it this way after all?
Something to resolve CC @kpamnany.

@d-netto d-netto force-pushed the dcn-user-cpu-time branch 5 times, most recently from abe0d2e to d7c0b4c Compare September 30, 2024 18:38
@d-netto d-netto force-pushed the dcn-user-cpu-time branch from d7c0b4c to 1cbe632 Compare October 1, 2024 13:28
Copy link

github-actions bot commented Nov 1, 2024

This PR is stale because it has been open 30 days with no activity. Comment or remove stale label, or this PR will be closed in 5 days.

@github-actions github-actions bot added the stale This pull request is inactive label Nov 1, 2024
@github-actions github-actions bot closed this Nov 7, 2024
@d-netto d-netto removed the port-to-v1.12 This change should apply to Julia v1.12 builds label Jan 30, 2025
github-actions bot pushed a commit that referenced this pull request Feb 15, 2025
…ang#57266)

Stdlib: Statistics
URL: https://github.com/JuliaStats/Statistics.jl.git
Stdlib branch: master
Julia branch: master
Old commit: d49c2bf
New commit: 77bd570
Julia version: 1.13.0-DEV
Statistics version: 1.11.2(Does not match)
Bump invoked by: @nalimilan
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaStats/Statistics.jl@d49c2bf...77bd570

```
$ git log --oneline d49c2bf..77bd570
77bd570 Fix `quantile` doctest (#188)
bfa5c6b Merge pull request #184 from JuliaStats/an/quantilemuladd
6bd1531 Update src/Statistics.jl
44d51c7 Use muladd in aleph calculation in _quantile to avoid some rounding errors.
793733e Bump codecov/codecov-action from 4 to 5 (#181)
```

Co-authored-by: nalimilan <1120448+nalimilan@users.noreply.github.com>
DelveCI pushed a commit that referenced this pull request Feb 15, 2025
…ang#57266)

Stdlib: Statistics
URL: https://github.com/JuliaStats/Statistics.jl.git
Stdlib branch: master
Julia branch: master
Old commit: d49c2bf
New commit: 77bd570
Julia version: 1.13.0-DEV
Statistics version: 1.11.2(Does not match)
Bump invoked by: @nalimilan
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaStats/Statistics.jl@d49c2bf...77bd570

```
$ git log --oneline d49c2bf..77bd570
77bd570 Fix `quantile` doctest (#188)
bfa5c6b Merge pull request #184 from JuliaStats/an/quantilemuladd
6bd1531 Update src/Statistics.jl
44d51c7 Use muladd in aleph calculation in _quantile to avoid some rounding errors.
793733e Bump codecov/codecov-action from 4 to 5 (#181)
```

Co-authored-by: nalimilan <1120448+nalimilan@users.noreply.github.com>
(cherry picked from commit 504cbc3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stale This pull request is inactive
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants