diff options
| author | Alexei Starovoitov <[email protected]> | 2022-06-11 14:25:35 -0700 |
|---|---|---|
| committer | Alexei Starovoitov <[email protected]> | 2022-06-11 14:25:35 -0700 |
| commit | d5e9aeda81616150532b24277da2498ee52a2045 (patch) | |
| tree | 8974d99ea9ec8751d0ff50f257b5e5206e740208 /tools/perf/scripts/python/arm-cs-trace-disasm.py | |
| parent | fe92833524e368e59bba9c57e00f7359f133667f (diff) | |
| parent | 89eda98428ce10f8df110d60aa934aa5c5170686 (diff) | |
Merge branch 'Optimize performance of update hash-map when free is zero'
Feng zhou says:
====================
From: Feng Zhou <[email protected]>
We encountered bad case on big system with 96 CPUs that
alloc_htab_elem() would last for 1ms. The reason is that after the
prealloc hashtab has no free elems, when trying to update, it will still
grab spin_locks of all cpus. If there are multiple update users, the
competition is very serious.
0001: Use head->first to check whether the free list is empty or not before taking
the lock.
0002: Add benchmark to reproduce this worst case.
Changelog:
v5->v6: Addressed comments from Alexei Starovoitov.
- Adjust the commit log.
some details in here:
https://lore.kernel.org/all/[email protected]/
v4->v5: Addressed comments from Alexei Starovoitov.
- Use head->first.
- Use cpu+max_entries.
some details in here:
https://lore.kernel.org/bpf/[email protected]/
v3->v4: Addressed comments from Daniel Borkmann.
- Use READ_ONCE/WRITE_ONCE.
some details in here:
https://lore.kernel.org/all/[email protected]/
v2->v3: Addressed comments from Alexei Starovoitov, Andrii Nakryiko.
- Adjust the way the benchmark is tested.
- Adjust the code format.
some details in here:
https://lore.kernel.org/all/[email protected]/T/
v1->v2: Addressed comments from Alexei Starovoitov.
- add a benchmark to reproduce the issue.
- Adjust the code format that avoid adding indent.
some details in here:
https://lore.kernel.org/all/[email protected]/T/
====================
Signed-off-by: Alexei Starovoitov <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/arm-cs-trace-disasm.py')
0 files changed, 0 insertions, 0 deletions