Linux内存管理
文章平均质量分 94
二级专栏,用以收藏一些Linux内存管理方面的博文,以open 形式展现
私房菜
独乐乐不如众乐乐!!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android ashmem 原理分析
ashmem称为匿名共享内存(Anonymous),它以驱动程序的形式实现在内核空间中。它有两个特点:能否辅助内存管理系统来有效地管理不再使用的内存块(pin / unpin);通过Binder进程间通信机制来实现内存共享;虽然 Binder机制已经可以实现了跨进程的高效通信,但是Binder 通信所允许的数据是有限制的(如下代码),如果需要大量数据交互就有限制了。原创 2024-05-11 16:33:46 · 1909 阅读 · 2 评论 -
Linux 内核复合页(compound page)原理分析
复合页() 只是将两个或更多物理上连续的页面组合成一个单元,在许多方面可以将其视为单个更大的页面。它们最常用于创建大页面,在hugetlbfs或透明大页(transparent huge pages)子系统中使用,但它们也出现在其他场景中。复合页可以用作匿名内存或用作内核中的buffers;但是,它们不能出现在page cache中,page cache只能处理单个页面。分配复合页面是调用 alloc_pages() 并设置__GFP_COMP分配标志和页帧数大于1, 即order至少为1。原创 2024-04-15 17:50:43 · 2496 阅读 · 0 评论 -
ramdump 中的memory统计
ramdump是指某个时刻系统或者子系统发生crash等异常,系统将内存中的数据通过一定的方式保存下来,相当于一个系统内存快照,用以开发者离线分析系统异常问题。原创 2023-12-30 10:32:57 · 1542 阅读 · 0 评论 -
Linux scatterlist 详解
之前在《Linux DMA... 零拷贝》博文分享了DMA 技术和零拷贝技术,在进行I/O设备和内存的数据传输的时候,数据搬运的工作全部交给DMA 控制器,而CPU 不再参与任何与数据搬运相关的事情,这样CPU就可以去处理别的事务。用户层与外设或子系统可能需要大量数据交互,这样就需要大量的内存,而随着系统的长时间运行,物理内存可能存在大量的碎片,想要申请很大的一块物理内存已经成为奢望。并且,从性能方面考虑,用户层和子系统都希望减少交互的次数,更希望一次性将数据都交给 DMA控制器搬运。原创 2023-11-30 16:25:50 · 4551 阅读 · 0 评论 -
如何提升CMA利用率?
CMA 全称是 Contiguous Memory Allocator(连续内存分配器)。顾名思义它是一种内存分配器,提供了分配、释放物理连续内存的功能。你可能会有疑问:为什么需要 CMA? 这个问题等价于两个子问题:第一,为什么业务需要物理地址连续的内存空间?第二,为什么 buddy 系统无法满足业务的此类连续内存需求? 对于第一个子问题:最主要原因是功能上需要。很多嵌入式设备没有 IOMMU,也不支持 scatter-getter,因此这类设备的驱动程序需要操作连续的物理内存空间才能提供服务。早期,这些转载 2023-02-07 11:07:26 · 529 阅读 · 0 评论 -
Linux 深入理解脏页(dirty page)
Linux内核由于存在page cache, 一般修改的文件数据并不会马上同步到磁盘,会缓存在内存的page cache中,我们把这种和磁盘数据不一致的页称为脏页,脏页会在合适的时机同步到磁盘。为了回写page cache中的脏页,需要标记页为脏(dirty)。原创 2022-01-14 20:38:14 · 18052 阅读 · 0 评论 -
Linux PSI 指标
当CPU、内存或IO设备被竞争时,工作负载将经历延迟峰值、吞吐量损失,并运行OOM终止的风险。如果没有对这种争用的精确度量,用户就被迫要么安全行事,要么不充分利用其硬件资源,要么孤注一掷,经常遭受由于过度承诺而导致的中断。PSI(Pressure Stall Information)特性识别并量化这种资源紧张所造成的中断,以及它对复杂工作负载甚至整个系统的时间影响。对资源稀缺造成的生产力损失有一个准确的度量,可以帮助处于根据硬件调整负载或是根据工作负载需求提供硬件的用户。原创 2021-11-25 15:38:07 · 5068 阅读 · 0 评论 -
linux 中swap 原理简介
1.什么是swap从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到 swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降.原创 2021-11-22 14:45:38 · 11845 阅读 · 0 评论 -
linux内存中 swappiness=0究竟意味着什么?
0. 前言本文解释linux内存中swappiness的作用,以及linux内存中swappiness=0究竟意味着什么。1. 内存回收我们都知道,Linux一个进程使用的内存分为2种:file-backed pages(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache anonymous pages(匿名页,如stack,heap,C转载 2022-01-11 16:39:29 · 2964 阅读 · 2 评论 -
Linux 内核Page Cache 和Buffer Cache 关系及演化历史
在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache)。块缓存(buffer cache),则是内核为了加速对底层存储介质的访问速度,而构建的一层缓存。他缓存部分磁盘数据,当有磁盘读取请求时,会首先查看块缓存中是否有对应的数据,如果有的话,则直接将对应数据返回,从而减少对磁盘的访问。两层缓存各有自己的缓存目标,我转载 2022-01-13 14:17:16 · 1522 阅读 · 4 评论 -
存储模型:大端和小端
计算机操作系统中存储信息都是以字节为单位,每个地址单元对应 1 个字节。1 个字节为 8 bits,对于某些32 位处理器而言,char类型数据占用 1 个字节的空间,short 占用2个字节,int 占用4个字节。而这些字节在内存中的存储顺序,以及字节内存的排列方式,都是人们迫切关注的。当第一个字节出现的时候,第二个字节就需要确定其出现的位置以及其意义。例如,Internet 协议,例如RFC 791;再例如,文件格式,例如GIF、JPEG、MPEG等等。而这些字节一个接着一个的顺序,称之为字节顺序(en原创 2022-06-22 21:11:40 · 1101 阅读 · 0 评论
分享