内存空间的扩充:覆盖技术,交换技术,虚拟存储技术 覆盖技术-解决程序大小超过物理内存总和问题(现在基本不用了),增加了编程负担 思想: 1)将程序分为多个段,常用的段常驻内存,不常用的段需要时调入内存 2)内存分为一个"固定区",若干个"覆盖区" 3)需要常驻的放在"固定区",调入后不在调出(除非运行结束) 4)不常用的段放在"覆盖区" 交换技术-将内存某些进程暂时换出外存,把外存某些具备运行条件的进程换入内存 (进程在内存与磁盘间动态调整),中级调度内存调度中的进程挂起 1)磁盘分为文件区和交换区,交换区使用连续分配方式,交换区的i/o速度比文件区更快 2)如果进程经常出现缺页,说明内存紧张,可以换出一些进程
创建交换文件创建交换文件可以增加系统的交换空间。 永久启用交换文件为了在系统重启后仍然启用交换文件,需要编辑 /etc/fstab 文件。 调整交换优先级可以通过调整交换优先级来优化系统的交换行为。 禁用交换文件如果需要禁用交换文件,可以使用 swapoff 命令。禁用交换文件sudo swapoff /swapfile删除交换文件确保交换文件已禁用。 监控交换空间使用情况使用 top 或 htop 命令监控系统的内存和交换空间使用情况。
file-backed pages在内存不足的时候可以直接写回对应的硬盘文件里,称为page-out,不需要用到交换区(swap);而anonymous pages在内存不足时就只能写到硬盘上的交换区( 但是常驻内存的话,就会吃内存,可以通过给硬盘搞一个swap分区或硬盘中创建一个swap文件让匿名页也能交换到磁盘上。可认为是为匿名页伪造的文件背景。 swap分区或swap文件实际上最终是到达了增大内存的效果。当然,如果频繁交换的话,被交换出去的数据的访问就会慢一些,因为要有IO操作了。 1. zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存 Android里面普遍使用了zRAM技术,由于zRAM牺牲了CPU时间,所以交换次数还是越少越好。像Android和windows,内存越大越好,因为发生交换的几率就小。
file-backed pages在内存不足的时候可以直接写回对应的硬盘文件里,称为page-out,不需要用到交换区(swap);而anonymous pages在内存不足时就只能写到硬盘上的交换区( 但是常驻内存的话,就会吃内存,可以通过给硬盘搞一个swap分区或硬盘中创建一个swap文件让匿名页也能交换到磁盘上。可认为是为匿名页伪造的文件背景。 swap分区或swap文件实际上最终是到达了增大内存的效果。当然,如果频繁交换的话,被交换出去的数据的访问就会慢一些,因为要有IO操作了。 1. zRAM机制 不用swap分区,也可以用zRAM机制来缓解内存紧张: 从内存里拿出一段内存空间(compressed block),作为交换空间模拟硬盘的交换分区,用来交换匿名页,并且让kernel看到的物理内存大小不包括这段内存 Android里面普遍使用了zRAM技术,由于zRAM牺牲了CPU时间,所以交换次数还是越少越好。像Android和windows,内存越大越好,因为发生交换的几率就小。
发表于2018-11-022019-01-01 作者 wind 第一步:创建交换文件 mkdir /data fallocate -l 4G /data/swap 或 dd if=/dev/zero
LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,例如内存交换,内存区域对比,磁盘与内存镜像比较 插件地址:https://github.com/lyshark/LyScript内存区域交换: 实现被加载程序内特定一块内存区域的交换,该方法实现原理就是两个变量之间的交换,只是在交换时需要逐个字节进行 from LyScript32 import MyDebug# 交换两个内存区域def memory_xchage(dbg,memory_ptr_x,memory_ptr_y,bytes): ref flag = memory_xchage(dbg, 6815744,6815776,4) print("内存交换状态: {}".format(flag)) dbg.close()PE 文件头节点交换后如下:图片内存区域对比: 可用于对比该进程内存中的特定一块区域的差异,返回是列表中的字典形式,分别传入对比内存x,y以及需要对比的内存长度,此处建议不要超过1024字节。
Center OS 7 增加交换内存(虚拟内存) 千寻简笔记介绍千寻简文库已开源,Gitee与GitHub搜索chihiro-doc,包含笔记源文件.md,以及PDF版本方便阅读,文库采用精美主题,阅读体验更佳 @[toc]简介本文关键词虚拟内存、交换内存实现步骤1、查看内存的使用情况free -mh2、创建一个swap文件,大小为2Gbs 为单位,bs*count = 最终大小dd if=/dev/zero
LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将继续对API进行封装,实现一些在软件逆向分析中非常实用的功能,例如内存交换,内存区域对比,磁盘与内存镜像比较 插件地址:https://github.com/lyshark/LyScript 内存区域交换: 实现被加载程序内特定一块内存区域的交换,该方法实现原理就是两个变量之间的交换,只是在交换时需要逐个字节进行 from LyScript32 import MyDebug # 交换两个内存区域 def memory_xchage(dbg,memory_ptr_x,memory_ptr_y,bytes): (memory_ptr_x + index) read_byte_y = dbg.read_memory_byte(memory_ptr_y + index) # 交换内存 ) PE文件头节点交换后如下: 内存区域对比: 可用于对比该进程内存中的特定一块区域的差异,返回是列表中的字典形式,分别传入对比内存x,y以及需要对比的内存长度,此处建议不要超过1024字节。
,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。 那么内存回收和swap的关系,我们可以提出以下几个问题: 什么时候会进行内存回收呢? 哪些内存会可能被回收呢? 回收的过程中什么时候会进行交换呢? 具体怎么交换? 如果回收内存可以有两种途径(匿名页交换和file缓存清空),那么我应该考虑在本次回收的时候,什么情况下多进行file写回,什么情况下应该多进行swap交换。 如果符合交换条件的内存较长,是不是可以不用全部交换出去?比如可以交换的内存有100M,但是目前只需要50M内存,实际只要交换50M就可以了,不用把能交换的都交换出去。 除非针对本地节点的内存限制策略或者cpuset配置有变化,对swap的限制会有效约束交换只发生在本地内存节点所管理的区域上。
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活的计算架构的 GPU 内存交换机技术。 作为一项创新技术,旨在进一步拓展 GPU 在推理工作负载中的利用率, Run:ai 的 GPU 内存交换,又称“模型热交换(Model Hot Swapping)” 便应运而生,以解决上述痛点。 其核心运作方式如下: 1、动态内存卸载: 在特定时间段内没有接收到任何请求的模型,将不再持续占用 GPU 内存。它们会被交换到 CPU 内存中,以释放宝贵的 GPU 资源。 2、快速激活: 当接收到新的请求时,所需的模型会以极小的延迟被迅速交换回 GPU 内存,并立即投入运行。 来一些对比测试数据,具体可参考如下: Model Hot Swapping(模型热交换)内存交换技术为企业在部署大型语言模型(LLMs)时提供了一种创新的解决方案,成功在性能和成本之间找到了理想的平衡点
简介 swappiness,Linux内核参数,控制换出运行时内存的相对权重。swappiness参数值可设置范围在0到100之间。 低参数值会让内核尽量少用交换,更高参数值会使内核更多的去使用交换空间。默认值为60(参考网络资料:当剩余物理内存低于40%(40=100-60)时,开始使用交换空间)。 swappiness参数值说明 vm.swappiness = 0 仅在内存不足的情况下--当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。 vm.swappiness = 1 内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换。 vm.swappiness = 10 当系统存在足够内存时,推荐设置为该值以提高性能。
图右说明了 基于CXL 交换机可实现的两种内存共享模式:1. 单设备直通挂载给主机;2. 多设备池化共享给多主机。 CXL 交换机互联价值 使用CXL交换机的优势(图左): 提供标准化的Fabric管理,使多个主机能够高效共享和管理内存池。 更适合复杂的多主机、多设备场景,具有更好的可扩展性和管理性。 这张图展示了两种不同的CXL 2.0内存池化方法的设计和应用场景,交换机的使用在可扩展性和集中管理方面具有明显优势。 小结: 受控移除流程: 类型3设备的受控移除包括信号触发、事件通知、内存解绑、主机准备、设备移除、交换机解绑和最终确认的完整流程。 2.0交换机允许多个节点直接访问共享内存,支持内存级别的直接字节寻址访问,极大提高了数据访问效率。
反射内存交换机基础架构技术文档本文档系统阐述反射内存交换机的整体架构、硬件层级架构、网络拓扑架构、数据流转架构、冗余容错架构,清晰区分与普通以太网交换机的架构本质差异,内容严谨、层次清晰,可直接用于方案设计 一、架构总体概述反射内存交换机是面向高精度实时分布式测控、仿真、精密控制场景的专用实时交换设备。 二、整体系统组成架构一套完整的反射内存交换系统由四大核心部分组成,构成闭环实时传输体系:• 反射内存交换机主机:核心交换单元,内置全局共享内存、FPGA高速逻辑、多通道光纤收发模块,负责全网数据镜像、硬件广播 3.3 全局共享内存层交换机内置独立高速全局物理内存,作为全网所有节点的统一数据镜像区域。 九、与普通以太网交换机架构本质区别普通以太网交换机为CPU/NPU软件协议转发架构,依赖TCP/IP协议栈、报文排队、软件调度,存在随机抖动、数据不同步、核心单点故障;反射内存交换机为硬件共享内存镜像架构
覆盖技术 早期计算机内存很小,因此经常出现内存大小不够使用的情况,因此人们引入了覆盖技术,用来解决“程序大小超过物理内存总和”的问题 覆盖技术的思想在于,将程序分为多个段(多个执行模块),常用的模块常驻在内存中 交换技术 交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度) 之前所讲过的中级调度(内存调度),就是要决定哪个处于挂起状态的进程重新调入内存 回忆部分: 暂时换出外存等待的进程状态称为挂起状态(挂起态,suspend)挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态 进程的状态,控制与通信 交换技术需要考虑的问题 应该在外存(磁盘 什么时候应该交换? 交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间… 需要注意的一点就是整个过程中,进程的PCB始终还是存放在内存队列中的,
Swap 是 Linux 下的交换分区,类似 Windows 的虚拟内存,当物理内存不足时,系统可把一些内存中不常用到的程序放入 Swap,解决物理内存不足的情况。 3、swap 分区一般为内存的 2 倍,但最大不超过 2G 4、还有尽量不让过早占用 SWAP 可以设置 vm.swappiness 值到 0,这样就不会过早的占用 SWAP 影响 IO 编辑 /etc
相对于内存来说, 磁盘的容量是非常大的, 所以Linux内核实现了一个叫 内存交换 的功能 -- 把某些进程的一些暂时用不到的内存页保存到磁盘中, 然后把物理内存页分配给更紧急的用户使用, 当进程用到时再从磁盘读回到内存中即可 有了 内存交换 功能, 系统可使用的内存就可以远远大于物理内存的容量. LRU算法 内存交换 过程首先是找到一个合适的用户进程内存管理结构,然后把进程占用的内存页交换到磁盘中,并断开虚拟内存与物理内存的映射,最后释放进程占用的内存页。 如果被交换出去的内存页刚好又被访问了,这时又需要从磁盘中把内存页的数据交换到内存中。所以,在这种情况下不单不能解决内存紧缺的问题,而且增加了系统的负荷。 非活跃脏链表中的内存页是需要被交换到磁盘的, 当系统中空闲内存页紧缺时就会从非活跃脏链表的尾部开始把内存页刷新到磁盘中, 然后移动到非活跃干净链表中, 非活跃干净链表中的内存页是可以立刻分配给进程使用的
不太经常使用的部分,它们存放在磁盘上,当调用它们时才被调入内存覆盖区。 交换技术 交换技术:在分时系统中,用户的进程比内存能容纳的数量要多,这就需要在磁盘上保存那些内存放不下的进程。 在需要运行这些进程时,再将它们装入内存。 进程从内存移到磁盘并再移动回内存称为交换。交换技术是进程在内存与外存之间的动态调度,是由操作系统控制的。 后备存储区(又称盘交换区)。 目的:尽可能达到”足够快的交换进程,以使当CPU调度程序想重新调度CPU时,总有进程在内存中处于就绪(准备执行)状态“的理想状态,从而提高内存利用率。 交换技术的原理: (1)换出进程的选择:系统需要将内存中的进程换出时,应该选择那个进程? 根据时间片轮转法或基于优先数的调度算法来选择要换出的进程。 (2)交换时间的确定 在内存空间不够或有不够的危险时,还出内存中的部分进程到外存,以释放所需要的内存。 (3)交换空间的分配 在一些系统中,当进程在内存中时,不再外塔分配磁盘空间。
etc/security/limits.conf 单用户线程数调大 echo "* - nproc 131072" >> /etc/security/limits.conf 单进程可以使用的最大map内存区域数量
反射内存交换机与普通以太网交换机区别对比技术文档本文档独立、系统对比反射内存交换机(RFM实时交换设备)与普通以太网交换机的核心差异,涵盖工作原理、延迟特性、同步机制、数据处理方式、可靠性、组网架构、适用场景等全维度内容 一、核心工作原理本质区别1.1 反射内存交换机基于硬件全局共享内存机制设计,属于实时专用交换设备。无TCP/IP协议栈、无数据包解析、无转发排队机制。 数毫秒• 极端工况延迟:网络拥堵时可达十几毫秒甚至更高• 同步抖动:毫秒级抖动,时序偏差极大• 延迟特点:流量越大、节点越多,延迟越高、抖动越严重,时序不可预测三、数据同步与数据一致性差异3.1 反射内存交换机硬件级全网内存镜像同步 、机房数据上传、视频监控• 普通工控数据采集、后台监测、日志传输• 互联网接入、设备常规通信、文件传输• 非实时、非闭环、无精密协同的通用数据交互场景八、核心参数汇总对比表(标书直接复用)对比项目反射内存交换机普通以太网交换机工作原理硬件共享内存 反射内存交换机彻底摒弃传统网络协议转发机制,依靠硬件共享内存、确定性微秒级低延迟、全网精准同步、高容错冗余的核心特性,解决了传统网络无法突破的实时性与同步性瓶颈,是军工仿真、航空航天、精密测控、高端工业控制等严苛场景的唯一可靠交换设备
八口反射内存交换机产品介绍技术文档本文档针对行业主流八口反射内存交换机(ACC-5595-208)进行全面介绍,涵盖产品概述、硬件架构、核心参数、功能特点、组网模式、容错机制、适配场景等完整内容,区别于普通八口以太网交换机 一、产品概述八口反射内存交换机(典型型号ACC-5595-208)是专为高精度实时仿真、分布式测控、精密协同控制场景研发的专用实时光纤交换设备,可完美匹配PCIe-5565系列反射内存卡组网使用。 二、硬件规格与接口参数2.1 基础硬件配置• 设备型号:ACC-5595-208 八口反射内存专用交换机• 端口数量:标配8路独立光纤接口,支持灵活配置• 端口类型:可适配单模/多模可插拔光收发模块,支持用户按需选配 ,可多设备级联扩展至256节点大型网络• 传输距离:多模光纤最大2km,单模光纤最大10km,适配分布式远距离组网• 数据误码率:<10⁻¹²,7×24h连续运行无丢包、无错包三、核心架构设计八口反射内存交换机采用纯硬件 精密运动控制:多轴机器人同步控制、工业精密联动设备控制系统• 科研实验测控:小型核聚变测控、加速器辅助测控、高精度仪器同步采集系统• 工业高可靠控制:智能分站保护、小型分布式工业实时监控系统七、与普通八口以太网交换机核心区别对比项目八口反射内存交换机普通八口以太网交换机工作架构硬件内存镜像