三星吧 关注:1,204,193贴子:7,754,613
  • 8回复贴,共1

三星RAM Plus 使用ZRAM而非SWAP分区/文件!?

取消只看楼主收藏回复

去年我一次楼中楼发帖,一直到现在都有人私信询问我。
当时使用S22国行,使用黑阈命令行简单无线调试,因楼中楼无法随图,便直接给了结论。
这次使用美版S25 RAM Plus 8GB, 使用ADB Shell 并解析步骤。
原地开始
-----------------------------------------------------------------------------------------------------------------------
首先使用
free -h
#显示系统中内存使用情况

排除硬件保留,物理RAM为11GB,其中10GB被使用,总虚拟内存为8GB(SWAP ZRAM ZSWAP合并归类到虚拟内存)
cat /sys/block/zram0/disksize
#查看ZRAM总大小

系统从物理RAM中配置了8589934592字节用于ZRAM内存交换
ls /dev/block/zram*
#查看系统中已挂载的ZRAM

dumpsys meminfo | grep -i zram
dumpsys meminfo | grep -i swap
#查看ZRAM与SWAP各自的使用情况及压缩率

两者的总交换空间一致,
1,115,304kb的物理内存,容纳了 4,631,164kb逻辑内存,此时压缩比为1:4.16 即24%。
cat /sys/block/zram0/comp_algorithm
#查看ZRAM使用的压解协议

表明设备使用lzo-rle协议,对比其他三种协议 速度非常快 压缩率中等偏低 CPU开销非常低
换句话说lzo-rle比lzo解压缩速度更快,比zstd速度和性能开销更低 但压缩率也更低,比lz4压缩率更高 但速度稍低 开销稍高。
----------------------------------------------------------------------------------------------------------------------------
其他cat ls smem或swapon命令,因三星内核设定和非root用户原因,未启用/支持不完全或权限受限。
无法使用ls检索swap* 确认系统中是否完全没有swap交换分区/文件。
但截至目前所有结果均偏向于RAM Plus设定值影响ZRAM而非SWAP,且目前没有证据表明ZRAM会结合少量磁盘转储(writeback)。
-------------------------------------------------------------------------------------------------------------------------------
总之所有我试过的有效命令均以贴出,有兴趣自己查证非S25设备RAM plus情况的,可以使用有线 ADB Shell,或使用黑阈 shizuku 其他终端,使用无线调试。
----------------------------------------------------------------------------------------------------------------------------------
完全关闭RAM plus与设定更少(如2GB),对ZRAM的影响仍然是个有趣的情况。
按照我过往的经验,完全关闭RAM plus系统仍会强制启用物理ROM一定比例的ZRAM,来源于安卓内核。
但设置的更低与S25设备是否会有特殊情况,我重启几下试试看,楼下简单贴。


IP属地:辽宁1楼2025-04-17 15:14回复
    pa1q:/ $ free -h
    total used free shared buffers
    Mem: 11G 10G 1.3G 20M 3.9M
    -/+ buffers/cache: 10G 1.3G
    Swap: 3.0G 1.1G 1.8G
    -------------------------------------------------------------------------------
    pa1q:/ $ cat /sys/block/zram0/disksize
    3221225472
    -----------------------------------------------------------------------------------
    pa1q:/ $ dumpsys meminfo | grep -i zram
    umpsys meminfo | grep -i swap
    ZRAM: 276,336K physical used for 942,592K in swap (3,145,724K total swap)
    pa1q:/ $ dumpsys meminfo | grep -i swap
    ZRAM: 276,336K physical used for 942,592K in swap (3,145,724K total swap)
    --------------------------------------------------------------------------------------------
    RAM Plus 完全设置关闭时,自动设置为3GB ZRAM,此时压缩率为29% 估计是因为压力不充分。
    但即使有8GB物理内存供使用,内存压力反而大幅度增加。


    IP属地:辽宁2楼2025-04-17 15:28
    回复
      2026-01-21 03:43:45
      广告
      不感兴趣
      开通SVIP免广告
      接下来我尝试将RAM Plus设置为 2GB,是否可以强制覆盖内核特性。


      IP属地:辽宁3楼2025-04-17 15:29
      回复
        C:\CK\platform-tools>adb shell
        pa1q:/ $ free -h
        total used free shared buffers
        Mem: 11G 9.4G 1.4G 17M 2.0M
        -/+ buffers/cache: 9.4G 1.4G
        Swap: 3.0G 87M 2.9G
        -----------------------------------------------------------------------------
        pa1q:/ $ cat /sys/block/zram0/disksize
        3221225472
        --------------------------------------------------------------------------
        mpsys meminfo | grep -i swap
        ZRAM: 244,304K physical used for 1,032,192K in swap (3,145,724K total swap)
        pa1q:/ $ dumpsys meminfo | grep -i swap
        ZRAM: 244,408K physical used for 1,030,400K in swap (3,145,724K total swap)
        -----------------------------------------------------------------------------
        似乎无法覆盖内核特性


        IP属地:辽宁4楼2025-04-17 15:32
        回复
          虽然非root用户无法访问/proc/swaps,但以linux内核逻辑,free -m命令会将所有虚拟内存(SWAP ZRAM ZSWAP)加算最终显示。


          IP属地:辽宁5楼2025-04-17 15:37
          回复
            RAM Plus 设置4GB及以上,会覆盖内核最低设定。
            但非root用户无法强制将ZRAM完全关闭。


            IP属地:辽宁7楼2025-04-17 15:43
            回复
              结论RAM Plus通过修改ZRAM大小,而非将UFS储存以SWAP交换分区/文件的方式实现。
              ZRAM的原理是在物理RAM中模拟一个交换分区,将非活动分页缓存,压缩存放,并且使用时解压至物理RAM。
              以lzo-rle协议和8elit的多核性能,这点性能开销和功耗增加可以忽略不计。
              lzo-rle协议的压缩率在20-30%,本次测试中常见中位数为25%。
              8GB ZRAM根据压缩率20%-30%等效物理内存26-40GB,但实际情况仍取决于到底存了点啥,小进程与大进程的存放分隔也有区别,在最保守的情况下,也至少在等效20GB左右。
              通常来讲,你就这么当作吧。


              IP属地:辽宁8楼2025-04-17 16:10
              回复
                因为测试ZRAM读写速度需要在root用户下使用dd命令读写/sys/block/zram0
                但我在既往已root设备上测试,888的读写速度为600MB/S 855的读写速度为150MB/S
                8elit的多核性能保守估计有3GB/S
                S25在用户线程中测试的读写速度为20GB/S,LPDDR5X理论峰值速度为85.6GB/S
                但对于虚拟内存用途,3GB/S足够。
                因为就算是16GB物理RAM,也分分钟占满触发内存回收机制。
                内存回收的性能开销起码比ZRAM压解开销大很多


                IP属地:辽宁10楼2025-04-17 16:50
                回复
                  2026-01-21 03:37:45
                  广告
                  不感兴趣
                  开通SVIP免广告
                  我目前手里s25在oneui 8.5 beta2,在8.0 ramplus最高支持设置为12gb。但出现了一个情况,由内核控制的4gb(内核固定设置为物理ram的30% 并取整)与自行设置的x gb,在统计的时候相加。在测试的时候发现这4+ x gb,可以同时被使用。
                  按照我的日常使用习惯,在某些时候6gb会使用至99%,一般8gb(实际ramplus开启4gb)可以满足我的使用。
                  得益于总计16gb的zram远远超出了物理ram的大小,此时发现三星设备上的zram并非像早期安卓或其他厂商的硬式预分配,而是根据使用方式和内存压力,动态的调整zram实际压缩后在物理ram中的大小。 压缩率在23-33%之间,并且调度积极 很快的将展示不活跃 但又需要展示停留在ram中的进程压缩丢进zram块中。
                  得益于此,有些时候隔了几小时想起来刷个抖音(依然快于冷启动的速度)从zram中,拉出 苏醒。
                  简单来说,ramplus可以设置为50-75%物理内存大小,或者直接拉满,让三星的内存交换算法自行处理。
                  小25 4000mah电池,说实话 并没有感受到明显的续航区别。 后台管理推荐使用 “黑阈”来接替三星的受限/休眠/深度休眠 后台管理。



                  IP属地:辽宁来自Android客户端34楼2025-12-30 00:31
                  回复