![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内存管理
文章平均质量分 95
专注于Linux Memory优化及稳定性研究
zjs-Linux
每一个遗憾的现在,都有一个不努力的过去.
展开
-
Linux anonymous page fault
getchar();getchar();return 0;Active(anon): 524 kB //映射且没有做写操作Active(anon): 102956 kB //102956 - 524 = 100M,可以看到anon active list 增加100MActive(anon): 692 kB //释放内存。原创 2023-11-29 22:32:12 · 815 阅读 · 0 评论 -
Linux memory watermark 内存水位
当系统低内存场景时有人会考虑拉升min水位这是不可取的,拉升min水位看似能够更快的进行direct reclaim但是这样会带来极大的延迟,同时又因为min,low,high这三者之间的差异很小导致kswapd无法发挥异步回收的作用很容易进入sleep状态可以通过适当通过调整watermark_scale_factor将min,low,high之间的差距增大这样更有利于kswapd发挥更大的作用提高系统性能。系统针对内存不同的状态就会做不同的内存行为,对系统内存状态进行管控。原创 2024-05-13 23:23:06 · 830 阅读 · 2 评论 -
Linux file-backed page fault
回头看这个do_fault_around 如果有这种机制的情况下一次最多可以映射 fault_around_bytes/PAGE_SIZE个pages,这样提高了fault的效率,如果没有这个机制一次只能映射一个page这样效率是低下的。总结以上三个流程核心流程是都是__do_fault 文件页的page fault的核心思想就是从page cache缓存当中读取文件,这样提高文件的page fault效率,这其中的预读,预fault都发挥重大作用。原创 2023-12-28 03:02:43 · 818 阅读 · 0 评论 -
Linux page fault
Linux在设计时有一个很重要的特性就是copy-on-write,这个特性就引出page fault,在用户态内存分配时,假如申请了1G内存,此时在没有使用的情况下Linux kernel 并没有提供实际的物理内存,只有当写访问时才会触发异常完成物理内存的分配,这个过程简单来讲就是page fault。通过以下demo能更加详细的认识这个page fault过程,做两个测试demo分别:demo01 memset 填充内存、demo02不填充内存。原创 2023-11-29 02:29:51 · 868 阅读 · 0 评论 -
Linux likely、unlikely
1、likely,unlikely同if else一样进行分支判断;likely 期望执行if (true)为真的分支;unlikely 期望执行 if (true) 当中的else分支, 直接运 行else分支代码。 2、likely, unlikely 通过分支预测指令的预取能提高代码的执行效率。原创 2024-01-02 00:16:22 · 991 阅读 · 0 评论 -
Linux readahead文件预读
Linux read/mmap 时将文件从磁盘读区到内存当中,read读取文件操作必然会带来IO如果能直接从内存当中读取文件这样就能有效的解决IO及延迟问题。page cache的诞生就是解决这个问题,文件读取后将文件对应的物理page 添加到redix tree当中管理后续在做同样的读取操作时就直接从page cache当中直接读取文件。这个机制本质上来讲与硬件架构的cache原理上是想通的,理解cache机制有助于理解page cache。原创 2024-03-31 23:11:41 · 901 阅读 · 0 评论