Issue #15085 has been updated by wanabe (_ wanabe).

File benchmark-with-perf-on-preview3.log added

The issue is almost gone on v2_6_0_preview3.
`invokesuper` on MJIT runs as about fast as on normal VM.

Attached "benchmark-with-perf-on-preview3.log" is benchmark result.

----------------------------------------
Feature #15085: Decrease memory cache usage of MJIT
https://bugs.ruby-lang.org/issues/15085#change-74815

* Author: wanabe (_ wanabe)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
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--------------------------------
export-big-func.patch (934 Bytes)
super.rb (897 Bytes)
benchmark.log (624 Bytes)
benchmark-with-perf.log (7.05 KB)
export-vm_call_super_method.patch (2.66 KB)
benchmark-with-perf-on-preview3.log (9.99 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>