diff options
| author | Puranjay Mohan <puranjay@kernel.org> | 2024-05-02 15:18:54 +0000 | 
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2024-05-12 16:54:34 -0700 | 
| commit | 75fe4c0b3e181f5e3b990128013ac192fdfd4012 (patch) | |
| tree | fd23f2dc376d2db2d93c1831ad0abae58eb0868e /tools/perf/scripts/python/export-to-sqlite.py | |
| parent | 7a4c32222b0e14349a6311e72bf6ebd3e1d1064b (diff) | |
bpf, arm64: inline bpf_get_smp_processor_id() helper
Inline calls to bpf_get_smp_processor_id() helper in the JIT by emitting
a read from struct thread_info. The SP_EL0 system register holds the
pointer to the task_struct and thread_info is the first member of this
struct. We can read the cpu number from the thread_info.
Here is how the ARM64 JITed assembly changes after this commit:
                                      ARM64 JIT
                                     ===========
              BEFORE                                    AFTER
             --------                                  -------
int cpu = bpf_get_smp_processor_id();        int cpu = bpf_get_smp_processor_id();
mov     x10, #0xfffffffffffff4d0             mrs     x10, sp_el0
movk    x10, #0x802b, lsl #16                ldr     w7, [x10, #24]
movk    x10, #0x8000, lsl #32
blr     x10
add     x7, x0, #0x0
               Performance improvement using benchmark[1]
./benchs/run_bench_trigger.sh glob-arr-inc arr-inc hash-inc
+---------------+-------------------+-------------------+--------------+
|      Name     |      Before       |        After      |   % change   |
|---------------+-------------------+-------------------+--------------|
| glob-arr-inc  | 23.380 ± 1.675M/s | 25.893 ± 0.026M/s |   + 10.74%   |
| arr-inc       | 23.928 ± 0.034M/s | 25.213 ± 0.063M/s |   + 5.37%    |
| hash-inc      | 12.352 ± 0.005M/s | 12.609 ± 0.013M/s |   + 2.08%    |
+---------------+-------------------+-------------------+--------------+
[1] https://github.com/anakryiko/linux/commit/8dec900975ef
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20240502151854.9810-5-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/export-to-sqlite.py')
0 files changed, 0 insertions, 0 deletions
