流浪的加菲
2024-03-14 10:48 deepin
搬砖到 deepin wiki 了,更详细、更系统(zRAM):Linux内存压缩技术
Reply Like 0 View the author
搬砖到 deepin wiki 了,更详细、更系统(zRAM):Linux内存压缩技术
感谢分享,怎样开启?
实验性的Radeon显卞动态电源管理支持,需要传递radeon.dpm=1参数启用;
用OCR拿的文章?
实验性的Radeon显卞动态电源管理支持,需要传递radeon.dpm=1参数启用;
用OCR拿的文章?
外面看到了扒过来分享下:http://www.wowotech.net/memory_management/zram.html
感谢分享,怎样开启?
帖子内有教程,不过还是不建议折腾了,怕你们翻车了,哈哈😂
帖子内有教程,不过还是不建议折腾了,怕你们翻车了,哈哈😂
Popular Events
More
概述
zSwap(内存压缩)是linux内核的一项功能,顾名思义,内存压缩就是压缩内存,节省内存空间。
就目前的技术而言,I/O的速度远远慢于RAM操作速度。因此,如果频繁地做I/O操作,不仅影响flash使用寿命,还严重影响系统性能。内存压缩是一种让I/O过程平滑过渡的做法, 即尽量减少由于内存紧张导致的I/O,提升性能。
内存管理框架(内存压缩技术处于内存回收memory reclaim部分中):
zSwap简介
zSwap为交换页提供了一个压缩的回写缓存,作为一种虚拟内存压缩形式。当内存页要被换出时,zSwap不会把它们移到交换设备上,而是对它们进行压缩,然后把它们存储到系统RAM中动态分配的内存池中,回写到实际交换设备的动作则会延迟,甚至能完全避免,从而大大减少了需要交换的Linux系统的I/O,副作用则是压缩所需的额外CPU周期。
zSwap并不虚拟一个块设备,而是hook到普通的swap代码里,在实际发生写入到磁盘/从磁盘读取的操作前,先利用自己管理的内存进行数据的换出/换入,内存不够用以后再使用传统的swap分区,所以zSWAP适用于本身已经有交换分区的系统(zRam更适合Android这样本身不配置交换分区的嵌入式系统)。
zSwap发展背景
在3.11版本Linux内核实现了以下新功能:
开启 zSwap 的方法
zRAM原理解析
zRram即压缩的内存,使用内存模拟block device的做法。实际不会写到块设备中去,只会压缩后写到模拟的块设备中,其实也就是还是在RAM中,只是通过压缩了。由于压缩和解压缩的速度远比读写I/O好,因此在移动终端设备广泛被应用。
zRAM的实现是把自己虚拟成一个swap分区,本身存在一些缺陷或问题:
zSwap原理解析
zSwap是在memory与flash之间的一层缓存,当内存需要swap出去磁盘的时候,先通过压缩放到zSwap中去,zSwap空间按需增长。达到一定程度后则会按照LRU的顺序(前提是使用的内存分配方法需要支持LRU)将就最旧的page解压写入磁盘swap device,之后将当前的page压缩写入zSwap。
与zRAM相比,zSwap则是介入了内核的swap过程,将所有被系统swap出来的数据全部截留,存入自己的存储器中。这种实现方式有个好处,就是能和真正存在于硬盘上的swap分区联合使用,可以避免zRam的问题。
一方面,zSwap在面临内存不足时可以向swap分区写入数据,而不会试图向内存中返回数据。另一方面,如果有大段内存被空闲程序占据,zSwap可以把这些数据填入硬盘中,由于这些内存极少被使用,所以存入较慢的硬盘也不会影响运行速度。
zSwap本身存在一些缺陷或问题:
如果开启“当zSwap满交换出backing store”的功能, 由于需要将zSwap里的内存按LRU顺序解压再swap out,这就要求内存分配器支持LRU功能;
如果不开启“当zSwap满交换出backing store”的功能, 那么和zRam有一样的缺陷问题;
主流内存压缩技术:zSwap、zRAM、zCache
deepin wiki 内有整理有更详细的资料(zRAM):Linux内存压缩技术
相关文献地址:
Linux内存压缩浅析之原理
zRAM内存压缩技术原理与应用