Commit 16af727
authored
Avoid taking vm barrier in heap_prepare() (ruby#14425)
We can avoid taking this barrier if we're not incremental marking or lazy sweeping.
I found this was taking a significant amount of samples when profiling `Psych.load`
in multiple ractors due to the vm barrier. With this change, we get significant improvements
in ractor benchmarks that allocate lots of objects.
-- Psych.load benchmark --
```
Before: After:
r: itr: time r: itr: time
0 #1: 960ms 0 #1: 943ms
0 ruby#2: 979ms 0 ruby#2: 939ms
0 ruby#3: 968ms 0 ruby#3: 948ms
0 ruby#4: 963ms 0 ruby#4: 946ms
0 ruby#5: 964ms 0 ruby#5: 944ms
1 #1: 947ms 1 #1: 940ms
1 ruby#2: 950ms 1 ruby#2: 947ms
1 ruby#3: 962ms 1 ruby#3: 950ms
1 ruby#4: 947ms 1 ruby#4: 945ms
1 ruby#5: 947ms 1 ruby#5: 943ms
2 #1: 1131ms 2 #1: 1005ms
2 ruby#2: 1153ms 2 ruby#2: 996ms
2 ruby#3: 1155ms 2 ruby#3: 1003ms
2 ruby#4: 1205ms 2 ruby#4: 1012ms
2 ruby#5: 1179ms 2 ruby#5: 1012ms
4 #1: 1555ms 4 #1: 1209ms
4 ruby#2: 1509ms 4 ruby#2: 1244ms
4 ruby#3: 1529ms 4 ruby#3: 1254ms
4 ruby#4: 1512ms 4 ruby#4: 1267ms
4 ruby#5: 1513ms 4 ruby#5: 1245ms
6 #1: 2122ms 6 #1: 1584ms
6 ruby#2: 2080ms 6 ruby#2: 1532ms
6 ruby#3: 2079ms 6 ruby#3: 1476ms
6 ruby#4: 2021ms 6 ruby#4: 1463ms
6 ruby#5: 1999ms 6 ruby#5: 1461ms
8 #1: 2741ms 8 #1: 1630ms
8 ruby#2: 2711ms 8 ruby#2: 1632ms
8 ruby#3: 2688ms 8 ruby#3: 1654ms
8 ruby#4: 2641ms 8 ruby#4: 1684ms
8 ruby#5: 2656ms 8 ruby#5: 1752ms
```1 parent 505fcf5 commit 16af727
1 file changed
+8
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
985 | 985 | | |
986 | 986 | | |
987 | 987 | | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
988 | 991 | | |
989 | 992 | | |
990 | 993 | | |
| |||
2022 | 2025 | | |
2023 | 2026 | | |
2024 | 2027 | | |
2025 | | - | |
| 2028 | + | |
| 2029 | + | |
| 2030 | + | |
| 2031 | + | |
2026 | 2032 | | |
2027 | 2033 | | |
2028 | 2034 | | |
| |||
2031 | 2037 | | |
2032 | 2038 | | |
2033 | 2039 | | |
2034 | | - | |
2035 | | - | |
2036 | | - | |
| 2040 | + | |
2037 | 2041 | | |
2038 | 2042 | | |
2039 | 2043 | | |
| |||
0 commit comments