- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 Linux page reclaim 内存回收
内存回收是针对inactive list将非活动页面回收到buddy系统当中,当系统内存回收导致inactive list链表缩短,常规情况下page fault新的page是放到inactive list所以一般情况下inactive list长度相对是偏大的,所以在进行内存回收过程中除了要解决**在回收流程中根据page的不同状态就行对应的操作,匿名页、文件页的回收方式是不同的,都存在脏页的写回(writeback。的内存回收交换量是有效的,但是交换效率是低下的,所以在系统当中如果想提高。
2024-11-24 23:49:54
730
1
原创 Linux page flags 页面标志
想要了解更多Linux 内存相关知识敬请关注:Linux 内存笔记公众号,期待与大家的更多交流与学习。原创文章,转载请注明出处。一、背景 系统的业务是复杂的、不断变化的所以内存状态也是复杂的;内存以page为单位进行描述,在不同的场景下page的状态是不同的,准确的理解page的状态对内存分配、回收、迁移等不同内存场景有极大的帮助。二、分析struct page中的flags成员是页面的标志位集合,这些标志位是内存管理中非常重要的部分,具体定义在include/linux/page-flags.
2024-08-20 02:29:03
1282
1
原创 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
1301
2
原创 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
1224
1
原创 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
1436
原创 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
930
原创 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
954
原创 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
1159
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人