zram_mtk zram-程序员宅基地

技术标签: kernel  

http://zh.wikipedia.org/wiki/Zram


zram是Linux内核的一个模块,之前被称为“compcache”。zram通过在RAM内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能。由于zram可以用内存替代硬盘为系统提供交换空间的功能,zram可以让Linux在需要大量RAM的情况下在内存上进行交换/分页,而提高内存的使用率,显著得减少系统启动时(此时Linux还不能使用外部存储)对内存大小的要求。在物理内存较少的旧电脑上,尤其如此。[2][3]

即使RAM的价格比较低,这项功能仍对上网本和其他低功率的笔记本电脑、虚拟化有优势,尤其是那些使用闪存嵌入式设备,其寿命有限且依赖于使用频率,因此用作交换时磨损得很快。[3]

谷歌将为Chrome OS默认启用zram。[4]

参考[编辑]

  1. ^ Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)[13 October 2011].
  2. ^ Increased performance in Linux with zram (virtual swap compressed in ram). Web Upd8. 2 October 2011 [8 November 2011].
  3. 3.0 3.1 Google Codecompcache Compressed Caching for Linux. 27 April 2010 [11 November 2011].
  4. ^ Dinsan, Francis. Google is Enabling zRAM for Chrome OS By Default. Chrome Story. 28 March 2013 [29 March 2013].

外部链接[编辑]


ZRAM 将内存swap并压缩,cpu换取内存的的一种方法。

开启配置

1.KCONFIG配置:

CONFIG_SWAP=y
CONFIG_ZRM=y
CONFIG_ZSMALLOC=y

2.init.rc中设置zram swap分区

swapon_all fstab.zram
#fstab.zram 文件中新增一分区size为1G
/dev/block/zram0 none swap defaults zramsize=1073741824
 
#MTK平台有固定size的策略,一般为内存的50%;无法通过外部再设置
#swap方式也有区别,通过/enableswap.sh脚本来实现
#/system/bin/tiny_mkswap /dev/block/zram0
#/system/bin/tiny_swapon /dev/block/zram0

3.优化swappiness

write /proc/sys/vm/swappiness 100 #提高swap利用率
 
配置 /proc/sys/vm/extra_free_kbytes
#Framework中的Config.xml <integer name="config_extraFreeKbytesAbsolute">目前1G Ram为100M。
#增大系统尽可能保持的free大小,提高swap利用率。同时有利于新程序的内存快速分配,及用户的主观感受

效果验证

1.dumpsys meminfo中会列出ZRAM的数据。

2.通过cat /proc/zraminfo来查看压缩的效果,或者/sys/devices/virtual/block/zram0下的记录值

OrigSize(orig_data_size):原始数据大小

ComprSize(compr_data_size):压缩后数据大小

MemUsed(mem_used_total):压缩使用的内存大小。

如上图中“未压缩前占用”是通过SwapTotal -SwapFree来得出,与OrigSize会有略微差异。

ZRAM 的Size是限制Swap的地址空间,不会开机时就占用物理内存。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Fybon/article/details/30272407

智能推荐

VirtualBox + CentOS 使用 NAT + Host-Only 方式联外网_nat和host only 一起用-程序员宅基地

文章浏览阅读1.2k次。virtualbox版本5.2.10 r122406 centos版本6.5_x64最近在配置本地虚拟机环境,之前纠结于NAT模式可以连外网,Host-Only模式只能连宿主机,配置环境的时候来回切比较烦。本来打算走网络共享路线来实现Host-Only模式下连接外网的,但是没有成功。问度娘半天终于实现NAT+Host-Only的方式联网1、设置全局网络管理网络CIDR设置为192.1..._nat和host only 一起用

Java实现解压zip压缩包(支持多层级)_java解压多层zip-程序员宅基地

文章浏览阅读994次,点赞30次,收藏16次。最常见的压缩文件格式之一,可以存储一个或多个文件,并可在不同的操作系统中进行解压缩。_java解压多层zip

AI绘画商业变现-程序员宅基地

文章浏览阅读1k次,点赞25次,收藏20次。这一时期出现了很多运用 Diffusion 技术的模型,比如 DALL-E 系列,Midjourney 等等,它们都有非常不错的效果,例如使用 Midjourney 创作的画作《太空歌剧院》就在美国科罗拉多州博览会的艺术比赛中获得了第一名,引发了媒体的竞相转载,以至于在指数工具里飙出了一个很高的 “异常值”,但因为它们要么是彻底闭源的,要么是只开放一些 api,所以 “异常值” 飙的快降得也快,最终没有特别出圈,停留在了新闻和少量技术尝鲜者中。用说的可能不清楚,我弄一组图片在下面,大家看了就明白了。

【问题-已解决】Unity3d Animator的状态转换时,状态变量改变而State没有改变_unity animator setbool-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏5次。先给出素材: Tip Panel: 动画状态机: 用于控制Tip Panel的动画,通过将Exit变量设置为True时执行Tip Panel的退出动画。 ClosePanel()代码: 某用于统一管理Panel的管理类中统一关闭Panel的方法。通过传入参数name(要关闭的Panel的名字),先调用对应panel的OnClosing方法执行一些逻辑后才Destroy掉panel..._unity animator setbool

python开发工具下所有软件都打不开_Python 开发工具-程序员宅基地

文章浏览阅读58次。显示行号|选择喜欢的代码风格默认GitHubDuneLakeSidePlateauVibrantBlueEightiesTranquilPython IDE 集成开发工具有很多,可以根据自己的情况来选择。PyCharmPyCharm 一次获得所有 PYTHON 工具,是最好的一个(也是唯一一个)专门面向于Python的全功能集成开发环境。PyCharm 是由 JetBrains 打造的一款 Pyt..._pycharm显示finished in 0.1s

随便推点

VS2017代码自动对齐快捷键_vs c++如何一键对其-程序员宅基地

文章浏览阅读6.2k次。VS2017代码自动对齐快捷键 C#:Ctrl + K + D C++:Ctrl+K+F(松开K后再按F) _vs c++如何一键对其

【socket】网卡内部缓冲区、socket缓冲区、滑动窗口-程序员宅基地

文章浏览阅读1k次。网卡内部缓冲区、socket缓冲区、滑动窗口三者的关系_socket缓冲区

自动化运维(十)Ansible 之进程管理模块-程序员宅基地

文章浏览阅读1.1k次,点赞25次,收藏6次。Ansible的进程管理模块提供了一种强大而灵活的方式来管理和操作各种进程管理器和服务。无论你使用的是Supervisor、Systemd、传统的init脚本还是Runit,这些模块都可以帮助你轻松地管理服务的生命周期。通过合理地使用这些模块,你可以实现服务的自动化管理,提高系统的可靠性和稳定性,下面我们一起来学习这些进程管理模块。

启动mac版docker自带的k8s-程序员宅基地

文章浏览阅读375次。最近准备好好学习下k8s,为了图方便,直接使用docker集成的k8s,但是网上找了一些教程但都没能一次性成功,只好自己从头跑一遍,顺手写个教程可以方便有类似需求的同学参考。话不多说,直接上步骤。1.下载docker直接去官网下载即可。由于docker官网需要fq,我使用了阿里云的镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors2.启动docker下载完docker.dmg后点击安装,随...

解决报错:The Module Root specified is not a module according to Intellij-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏3次。最近接触gradle在找简便实用的寻运行办法,结果一直通不过,一番寻找排查得到如下解决方法重点如图标注即可运行_the module root specified is not a module according to intellij

Lee Hung-yi强化学习 | (2) Proximal Policy Optimization算法(PPO)_hung-yi lee ppo-程序员宅基地

文章浏览阅读253次。Lee Hung-yi强化学习专栏系列博客主要转载自CSDN博主 qqqeeevvv,原专栏地址课程视频课件地址1. On-policy vs. Off-policy所谓 on-policy (左图)指我们学习的 agent(即actor) 和与环境交互的 agent 是相同的,即 agent 一边和环境互动,一边学习;而 off-policy (右图)指我们学习的 agent 与环境交互的 agent 是不同的,即 agent 通过看别人玩游戏来学习。on-policy的过程是这样的:1_hung-yi lee ppo