FEX 2506 Makes Big Improvements To Its JIT For x86_64 Binaries On ARM64 Linux
([Linux Gaming] 3 Hours Ago
FEX 2506 Released)
- Reference: 0001551226
- News link: https://www.phoronix.com/news/FEX-2506-Released
- Source link:
FEX 2506 released today as the newest version of this open-source emulator for running x86/x86_64 binaries on AArch64 (ARM64) Linux systems.
FEX 2506 continues churning along for making it very viable and even speedy to run x86/x86_64 binaries on ARM64 systems whether it be big systems like the [1]Ampere Altra powered System76 Thelio Astra or smaller platforms like AArch64 SBCs like the Raspberry Pi.
With FEX 2506 they pulled off quite a feat in being able to reduce its Just-In-Time (JIT) time by 25% thanks to sharing code buffers between threads. This long goal has finally been achieved to yield a big speed-up for their JIT:
"neobrain’s change here is a fundamental shift to how FEX does its code JITing. In particular, all JIT code gets written to a shared code buffer region and if one thread has JITed the code, then all threads can reuse it. This means in an ideal case only one thread ever JITs code and all other threads benefit from it. In addition since code is now shared between threads, if a thread exits then none of that JITed code is lost anymore; a new thread can reuse it.
This change has some serious knock-on effects; Memory-usage is lower, total time spent in the JIT is lower, and it preps FEX to start caching code to the filesystem for sharing between multiple invocations of an application! So not only will memory usage of applications be lower, allowing more games to run on platforms with less RAM, but they should be faster as well since JIT time is lower and L2/L3 cache is hit less aggressively.
A pedantic edge case game called RUINER improved from around 30FPS to 60FPS due to how it constantly JITs code due to threads being created and destroyed quickly! In other games tested by neobrain, we also see significantly less time spent in the JIT."
This JIT improvement alone makes FEX 2506 quite a big milestone. FEX 2506 takes things further though by also providing a number of other JIT optimizations, addresses a "nasty" race condition, and brings various other fixes.
Downloads and more details on the open-source FEX 2506 emulator release via [2]FEX-Emu.com .
[1] https://www.phoronix.com/review/system76-thelio-astra
[2] https://fex-emu.com/FEX-2506/
FEX 2506 continues churning along for making it very viable and even speedy to run x86/x86_64 binaries on ARM64 systems whether it be big systems like the [1]Ampere Altra powered System76 Thelio Astra or smaller platforms like AArch64 SBCs like the Raspberry Pi.
With FEX 2506 they pulled off quite a feat in being able to reduce its Just-In-Time (JIT) time by 25% thanks to sharing code buffers between threads. This long goal has finally been achieved to yield a big speed-up for their JIT:
"neobrain’s change here is a fundamental shift to how FEX does its code JITing. In particular, all JIT code gets written to a shared code buffer region and if one thread has JITed the code, then all threads can reuse it. This means in an ideal case only one thread ever JITs code and all other threads benefit from it. In addition since code is now shared between threads, if a thread exits then none of that JITed code is lost anymore; a new thread can reuse it.
This change has some serious knock-on effects; Memory-usage is lower, total time spent in the JIT is lower, and it preps FEX to start caching code to the filesystem for sharing between multiple invocations of an application! So not only will memory usage of applications be lower, allowing more games to run on platforms with less RAM, but they should be faster as well since JIT time is lower and L2/L3 cache is hit less aggressively.
A pedantic edge case game called RUINER improved from around 30FPS to 60FPS due to how it constantly JITs code due to threads being created and destroyed quickly! In other games tested by neobrain, we also see significantly less time spent in the JIT."
This JIT improvement alone makes FEX 2506 quite a big milestone. FEX 2506 takes things further though by also providing a number of other JIT optimizations, addresses a "nasty" race condition, and brings various other fixes.
Downloads and more details on the open-source FEX 2506 emulator release via [2]FEX-Emu.com .
[1] https://www.phoronix.com/review/system76-thelio-astra
[2] https://fex-emu.com/FEX-2506/
estrafire