Skip to content

Pathological GC time on M1 mac #48473

Closed
JuliaLang/libuv
#34
@Keno

Description

@Keno

M1 mac:

category = "linked"
bench = "list.jl"
  No Changes to `~/GCBenchmarks/benches/serial/linked/Project.toml`
  No Changes to `~/GCBenchmarks/benches/serial/linked/Manifest.toml`
┌─────────┬────────────┬─────────┬───────────┬────────────┬──────────────┬───────────────────┬──────────┬────────────┐
│         │ total time │ gc time │ mark time │ sweep time │ max GC pause │ time to safepoint │ max heap │ percent gc │
│         │         ms │      ms │        ms │         ms │           ms │                us │       MB │          % │
├─────────┼────────────┼─────────┼───────────┼────────────┼──────────────┼───────────────────┼──────────┼────────────┤
│ minimum │      50297 │   48807 │     41368 │       7439 │         2172 │                 6 │     4034 │         97 │
│  median │      54143 │   52600 │     44078 │       8607 │         3089 │                 9 │     4048 │         97 │
│ maximum │      89575 │   88079 │     74315 │      13758 │         4959 │                27 │     4072 │         98 │
│   stdev │      11430 │   11436 │      9714 │       1845 │          928 │                 8 │       14 │          0 │
└─────────┴────────────┴─────────┴───────────┴────────────┴──────────────┴───────────────────┴──────────┴────────────┘

x86 server:

category = "linked"
bench = "list.jl"
  No Changes to `~/GCBenchmarks/benches/serial/linked/Project.toml`
  No Changes to `~/GCBenchmarks/benches/serial/linked/Manifest.toml`
┌─────────┬────────────┬─────────┬───────────┬────────────┬──────────────┬───────────────────┬──────────┬────────────┐
│         │ total time │ gc time │ mark time │ sweep time │ max GC pause │ time to safepoint │ max heap │ percent gc │
│         │         ms │      ms │        ms │         ms │           ms │                us │       MB │          % │
├─────────┼────────────┼─────────┼───────────┼────────────┼──────────────┼───────────────────┼──────────┼────────────┤
│ minimum │       7205 │    4740 │      3419 │       1320 │         1625 │                 6 │     2557 │         63 │
│  median │       7455 │    5015 │      3637 │       1369 │         1807 │                 7 │     2600 │         66 │
│ maximum │       8035 │    5657 │      4266 │       1416 │         2395 │                10 │     2622 │         69 │
│   stdev │        300 │     305 │       275 │         39 │          248 │                 2 │       20 │          2 │
└─────────┴────────────┴─────────┴───────────┴────────────┴──────────────┴───────────────────┴──────────┴────────────┘

For comparison, on other benchmarks, the M1 is faster:

category = "append"
bench = "append.jl"
  No Changes to `~/GCBenchmarks/benches/serial/append/Project.toml`
  No Changes to `~/GCBenchmarks/benches/serial/append/Manifest.toml`
┌─────────┬────────────┬─────────┬───────────┬────────────┬──────────────┬───────────────────┬──────────┬────────────┐
│         │ total time │ gc time │ mark time │ sweep time │ max GC pause │ time to safepoint │ max heap │ percent gc │
│         │         ms │      ms │        ms │         ms │           ms │                us │       MB │          % │
├─────────┼────────────┼─────────┼───────────┼────────────┼──────────────┼───────────────────┼──────────┼────────────┤
│ minimum │        888 │     127 │        52 │         73 │           30 │                 5 │     1483 │          8 │
│  median │        907 │     132 │        56 │         76 │           33 │                 7 │     1484 │          9 │
│ maximum │       1163 │     145 │        65 │         84 │           42 │                12 │     1485 │         10 │
│   stdev │        109 │       6 │         4 │          3 │            4 │                 2 │        0 │          1 │
└─────────┴────────────┴─────────┴───────────┴────────────┴──────────────┴───────────────────┴──────────┴────────────┘

vs

category = "append"
bench = "append.jl"
  No Changes to `~/GCBenchmarks/benches/serial/append/Project.toml`
  No Changes to `~/GCBenchmarks/benches/serial/append/Manifest.toml`
┌─────────┬────────────┬─────────┬───────────┬────────────┬──────────────┬───────────────────┬──────────┬────────────┐
│         │ total time │ gc time │ mark time │ sweep time │ max GC pause │ time to safepoint │ max heap │ percent gc │
│         │         ms │      ms │        ms │         ms │           ms │                us │       MB │          % │
├─────────┼────────────┼─────────┼───────────┼────────────┼──────────────┼───────────────────┼──────────┼────────────┤
│ minimum │       2305 │     108 │        84 │         24 │           48 │                 3 │     1483 │          1 │
│  median │       2664 │     112 │        87 │         25 │           49 │                 4 │     1484 │          2 │
│ maximum │       3442 │     139 │       102 │         40 │           59 │                 4 │     1524 │          2 │
│   stdev │        345 │      11 │         7 │          5 │            5 │                 1 │       16 │          0 │
└─────────┴────────────┴─────────┴───────────┴────────────┴──────────────┴───────────────────┴──────────┴────────────┘

Benchmarks are from https://github.com/JuliaCI/GCBenchmarks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GCGarbage collectorregressionRegression in behavior compared to a previous versionsystem:apple siliconAffects Apple Silicon only (Darwin/ARM64) - e.g. M1 and other M-series chips

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions