Feature #15085
closedDecrease memory cache usage of MJIT
Description
MJIT makes ruby-methods faster by ordinary, but I have observed that some cases are exceptional.
I guess the one is caused by invokesuper
instruction.
And I guess it is related to memory caching, especially iTLB.
Attached "export-big-func.patch" makes MJIT binary code for invokesuper
smaller.
"super.rb" is a benchmark script with benchmark_driver.
"benchmark.log" is a result of super.rb.
"benchmark-with-perf.log" is another result with PERF_STAT
environment variable.
The results are merely in my environment and depend to a large part on machine specs.
invokesuper
can get faster with exported vm_search_super_method()
, but I think it is not enough.
Because perf stat
shows that there are still many iTLB-load-misses.
I believe MJIT can grow fast with good care for CPU memory cache, not only iTLB but also L1 / L2 and so on.
Files