ZRAM(压缩内存块设备)和传统的SWAP分区都是Linux系统中用来增加可用内存的方法,但它们的工作原理和实现方式有很大的区别:

ZRAM

  1. 压缩内存:ZRAM使用压缩算法将数据存储在内存中。这样,当系统需要将数据写入swap空间时,它会首先将数据压缩,然后存储在RAM中。这意味着相同大小的物理内存可以存储更多的数据。

  2. 速度:由于数据在RAM中进行压缩和解压缩,因此读写操作比传统的硬盘Swap分区要快得多。压缩和解压缩数据的开销通常比从硬盘读取或写入数据的时间要短。

  3. 减少硬盘I/O:ZRAM通过减少对硬盘的I/O操作来提高系统性能和硬盘寿命,因为硬盘的读写速度相对较慢,并且频繁的I/O操作会对硬盘产生磨损。

  4. 适用场景:ZRAM通常用于内存有限的系统,如嵌入式设备、虚拟机和容器,以提高系统的响应速度和性能。

SWAP分区

  1. 物理存储:传统的Swap分区将数据写入物理存储设备(如硬盘或SSD)。当系统的物理内存不足时,它会将数据移到Swap分区,从而释放物理内存。

  2. 速度:Swap分区的速度受限于硬盘的读写速度。尽管SSD的读写速度比传统硬盘快,但仍然比RAM要慢。

  3. I/O开销:频繁的Swap操作会增加硬盘的I/O开销,尤其是在使用传统硬盘时,可能会导致性能瓶颈和硬盘寿命缩短。

  4. 适用场景:Swap分区适用于大多数桌面和服务器环境,提供一种相对廉价和简单的方法来扩展可用内存。

总结

  • 性能:ZRAM通过在内存中压缩数据,提供比Swap分区更快的读写速度。
  • I/O开销:ZRAM减少了对硬盘的I/O操作,从而延长硬盘寿命和提高系统性能。
  • 适用场景:ZRAM适用于内存有限的系统和需要高响应速度的场景,而Swap分区则更适合内存充足且需要较大Swap空间的环境。

你可以根据具体的使用场景和需求来选择使用ZRAM或传统的Swap分区,或者在某些情况下结合使用两者来获得最佳性能和稳定性。

ZRAM 的SWAP功能是读写磁盘还是读写内存

ZRAM的Swap功能是通过读写内存来实现的,而不是读写磁盘。具体来说,ZRAM将数据压缩后存储在内存中,避免了传统Swap分区需要将数据写入磁盘的过程。因此,ZRAM的Swap操作具有以下特点:

  1. 读写内存:ZRAM直接在内存中进行数据的压缩和解压缩操作,所有的数据读写都发生在内存中。这大大提高了Swap操作的速度,因为内存的读写速度远快于磁盘。

  2. 压缩数据:ZRAM使用压缩算法(如LZO或ZSTD)将数据压缩存储在内存中,从而节省了内存空间。虽然压缩和解压缩数据需要一定的CPU资源,但通常这种开销远小于从磁盘读写数据的时间。

  3. 减少I/O负载:由于ZRAM在内存中操作,避免了频繁的磁盘I/O操作,从而减轻了磁盘负载,提高了系统的整体性能,特别是在内存和I/O资源有限的系统中。

总结

ZRAM的Swap功能主要是通过在内存中读写压缩数据来扩展可用内存空间,并且避免了传统Swap分区需要读写磁盘的瓶颈。这使得ZRAM在需要高性能和低延迟的场景下,尤其是在内存有限的系统中,成为一个非常有效的内存管理解决方案。

ZRAM的Swap功能和 SWAP分区有什么区别的更多相关文章

  1. centos系统swap设置 查看swap分区的方法

    交换分区swap,意思是“交换”.“实物交易”,它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefi ...

  2. 阿里云云主机swap功能设置实战案例

    阿里云云主机swap功能设置实战案例 阿里云提供的云服务器(Elastic Compute Service,简称 ECS),是云主机的一种,当前采用的虚拟化驱动是Xen(这一点可以通过bios ven ...

  3. Difference Between Currency Swap and FX Swap

    [z]https://www.differencebetween.com/difference-between-currency-swap-and-vs-fx-swap/ Currency Swap ...

  4. 大数据学习day19-----spark02-------0 零碎知识点(分区,分区和分区器的区别) 1. RDD的使用(RDD的概念,特点,创建rdd的方式以及常见rdd的算子) 2.Spark中的一些重要概念

    0. 零碎概念 (1) 这个有点疑惑,有可能是错误的. (2) 此处就算地址写错了也不会报错,因为此操作只是读取数据的操作(元数据),表示从此地址读取数据但并没有进行读取数据的操作 (3)分区(有时间 ...

  5. Swap Swap,即交换分区

    Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用 ...

  6. ubuntu14.04 swap not avalible交换分区不能使用

    系统最近特别卡,打开"System monitor"中的resource发现"swap not avalibe".原来系统每交换分区. 我的是笔记本电脑,存储空间有限.首先我下载磁盘分区工具Gpart ...

  7. java坏境内存不够用 大量占用swap 临时加swap

    dd if=/dev/sda of=/tmp/mbr.bin   bs=512   count=1 查询2进制文件 file  看文件类型 思路 创建一个大文件作为swap 1.1创建文件 [root ...

  8. MySQL全面瓦解29:使用Partition功能实现水平分区

    1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和 水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下. ...

  9. 监控 Linux Unix Solaris AIX, swap page in / swap page out

    vmstat 的 pi/po si/so --监控一天 vmstat 5 17280> vmstat.txt sar -W 1.得到数据 (linux 的 /var/log/sar/saX 自带 ...

  10. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

随机推荐

  1. sqoop 从数据库导入数据到hdfs

    前提 配置hadoop配置文件 前提 启动hadoop 配置hive 改名进入sqoop/conf 增加环境变量 tar xf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz ...

  2. 【微信小程序】 全局数据共享

    1.什么是全局数据共享 全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题. 开发中常用的全局数据共享方案有: Vuex.Redux. MobX等. 2.小程序中的全局数据共享方案 在小 ...

  3. rllab —— 强化学习 算法模块库 (环境配置失败!!!) (已经不进行维护更新,已被淘汰,由于一些老旧代码还有可能关联因此fork了下,复制了份原始项目)

    代码地址: https://gitee.com/devilmaycry812839668/rllab 由于官方代码地址在github上,外网偶尔会出现网络连接中断的问题因此在国内代码库中fork了一个 ...

  4. MindSpore 框架的官方预训练模型的加载 —— MindSpore / hub 的安装

    MindSpore计算框架提供了一个官方版本的预训练模型存储库,或者叫做官方版本的预训练模型中心库,那就是 MindSpore / hub . 首先我们需要明确概念: 第一个就是 mindspore_ ...

  5. WSL启动nvidia-docker镜像:报错libnvidia-ml.so.1- file exists- unknown

    参考: https://blog.csdn.net/xujiamin0022016/article/details/124782913 https://zhuanlan.zhihu.com/p/361 ...

  6. Dolphinscheduler不重启加载Oracle驱动

    转载自刘茫茫看山 问题背景 某天我们的租户反馈数据库连接缺少必要的驱动,我们通过日志查看确实是缺少部分数据库的驱动,因为DolphinScheduler默认只带了Oracle和MySQL的驱动,并且需 ...

  7. EF Core 索引器属性(Indexer property)场景及应用

    EF Core 索引器属性(Indexer property)场景及应用 简介 EF Core 中的索引器属性(Indexer Property)是指通过一个特殊的属性来访问实体类中的数据,而不必明确 ...

  8. Linux input 子系统详解

    1. 模块概述 1.1.相关资料和代码研究 drivers/input/ include/uapi/linux/input-event-codes.h 2. 模块功能 linux核心的输入框架 3. ...

  9. .NET中各种线程同步锁

    编程编的久了,总会遇到多线程的情况,有些时候我们要几个线程合作完成某些功能,这时候可以定义一个全局对象,各个线程根据这个对象的状态来协同工作,这就是基本的线程同步. ​支持多线程编程的语言一般都内置了 ...

  10. Github 通义千问模型测试

    通义千问 大模型安装 相关地址 https://github.com/QwenLM/Qwen2-Audio/blob/main/README_CN.md PS C:\Users\supermao> ...