Skip to content

Rafael - Omen of tomorrow + Some fixes

Choose a tag to compare

@WeirdMidas WeirdMidas released this 06 Oct 00:30
· 21 commits to master since this release
46a132f

Changelog

Okay, it looks like SkyScene will return to having regular releases. The previous version was the last one in the sense of "testing optimizations" or including niche optimizations. Now, SkyScene will only come with new versions AS LONG AS they've been tested or recommended by Google for modern or older Android to fix their behavior.

Remember: We're not focusing on improving memory management simply or with tricks, but rather modernizing it. We want both modern and older Android to have optimizations that improve memory management behavior in a modern way.

And this release was focused on improving how lmkd reclaims, the difference between LRU and MGLRU, and other things. Expect some improvements in responsiveness, battery consumption, and memory management accuracy.

  • Added: Allow user to control compression aggressiveness of algorithms like lz4hc, zstd and deflate if your kernel supports it. Allowing better control in user space. (In testing, users need to report whether this customization works or not)
  • Added: Applied ZRAM 1:1 optimization for modern xiaomi devices (android 13+).
  • Added: Improved error margin on lowmem devices, reducing the need to configure lmkd to rely on reclaim. This allows the system to better handle error margins that can be quite unstable on lowmem devices.
  • Added: Allow certain devices with cgroupv1 to kill frozen applications if they suffer from a memory leak. A way to maintain security on these devices.
  • Added: Enable all LPMs on UFS storage and add a 1ms idle timer. This makes UFS reactive and more efficient based on the "rice-to-idle" strategy, combined with batching and other techniques we've developed.
  • Improvement: ZRAM size is larger for lowmem devices that have MGLRU. This is because MGLRU allows for a smaller margin of error, and in turn, the best possible memory compression.
  • Improvement: ZRAM Dedup is now enabled by default if the device uses MGLRU. Users who already use the module are recommended to enable ZRAM Dedup if they have MGLRU, to implement the strategy by default.
  • Improvement: Improved the ability to overwrite ZRAM in "funny" ROMs that try to override our rules, following a strict idea of: disable ZRAM before and after screen unlock, disable ZRAM after full boot and disable ZRAM and modify it after 15 seconds. All this applying swapoff, reset and disksize to 0, this is done to MITIGATE AS MUCH AS POSSIBLE problematic ROMs that try to activate ZRAM above ours (like old Samsung and others).
  • Improvement: The panel in the home/status section has been DRASTICALLY improved to make everything more beautiful and consistent, making it more user-friendly for new and advanced users.
  • Improvement: Now MBPE I/O Boosting is applied only to Xiaomi with mediatek SOC, as originally intended.
  • Improvement: PinnerService has been drastically refined. With improvements recommended by experienced devs, Google, and others. Our Pinnerservice now has everything truly essential, expels what isn't and causes more problems than benefits, and avoids pinning libs that don't exist. This allows for better runtime efficiency on the Pinnerservice side.
  • Improvement: VMA read_ahead has been re-enabled for LRU devices. As reported by some Google devs, VMA has demonstrated significant improvements to the LRU environment, slightly reducing its "dumbness." The report about it using more memory was based on a VMA in the testing phase, not a final product available in production kernels.
  • Improvement: Allow ART to use image cache. Allowing Zygote to be fully optimized by following the prefork >> image cache >> critical window strategy. Which can reduce the app start time by 30-50% of washing.
  • Improvement: Lowmem and high perf now rely more heavily on reclaim/ZRAM in their respective ways. Lowmem relies on reclaim to allow the device to multitask properly until it reaches a limit where the CPU starts spending too much time compressing and decompressing instead of interacting with the user. High perf relies on reclaim/ZRAM to always maintain a margin of free ZRAM regardless of the situation, allowing ZRAM to be fully utilized for useful data, not junk data.
  • Structure improvement: Some codes and internal structure have been improved for modernization purposes and greater batching efficiency.
  • Removed: Read_ahead settings on dynamic partitions. This is not a setting properly recommended by Google and can hurt I/O performance. I've seen that it saves up to 150MB of memory, but it's not beneficial if we'll experience more severe I/O stalls with less multitasking than before.
  • Removed: A LOT of tweaks that were not recommended by AOSP or Google, they are just niche tweaks, developer tweaks to get crumbs of performance improvements, nothing major.
  • Source Change: AxionOS will no longer be one of our sources. Due to some reports and users reporting that this ROM has extremely questionable optimizations, I will no longer be using AxionOS.
  • BACKPORT: Implemently optimization of modern kernels for old kernels. Allowing old kernels to be in tune with the modernization of current kernels. But this considering the VM subsystem and others.
  • Fix: Fixed some areas that I didn't reach by accident (like codes scattered in some corners, etc.).
  • Fix: Some more issues fixed.

Future Plans (Spoilers)

  • Add a "performance mode," basically a way to completely change memory management for two purposes: maximum available RAM and maximum cache locality. As such, this mode is only for gaming, not for multitasking or anything like that.

Recommended third-party modules

Below are the modules that I recommend you use to get additional improvements:

  • A1Memory (for Android 8-14): Improvements to Android's default memory management, including cleaning up unnecessary processes and other things. Useful for users who want an additional improvement to the management that SkyScene offers.

For the sake of familiarity. I no longer recommend Cirno, after some testing and use, I realized that the freeze from the Android developer options is better in two aspects:

  • More cohesive with the system. It knows what to suspend.
  • Faster and less unstable.

This means that the use_freezer from the Android default system is more integrated with SkyScene, favoring greater multitasking than using Cirno.