慢慢欣赏linux 页面回收续

sync SYSCALL_DEFINE0(sync)
free_more_memory
do_try_to_free_pages
=>void wakeup_flusher_threads(long nr_pages)
{
	bdi_writeback_all(NULL, nr_pages);
	=>void bdi_writeback_all(struct super_block *sb, long nr_pages)
	{
		list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) {
			bdi_alloc_queue_work(bdi, &args);
			=>void bdi_alloc_queue_work(struct backing_dev_info *bdi, struct wb_writeback_args *args)
			{
				bdi_queue_work(bdi, work);
				=>void bdi_queue_work(struct backing_dev_info *bdi, struct bdi_work *work)
				{
					list_add_tail_rcu(&work->list, &bdi->work_list);
					if (unlikely(list_empty_careful(&bdi->wb_list)))
						wake_up_process(default_backing_dev_info.wb.task);
					else {
						struct bdi_writeback *wb = &bdi->wb;

						if (wb->task)
							wake_up_process(wb->task);
					}
				}
			}
		}
	}
}

唤醒线程

int bdi_forker_task(void *ptr)
{
	for (;;) {
		if (wb_has_dirty_io(me) || !list_empty(&me->bdi->work_list))
			wb_do_writeback(me, 0);
			
		wb->task = kthread_run(bdi_start_fn, wb, "flush-%s", dev_name(bdi->dev));
	}
}

Linux 3.2中回写机制的变革
https://blog.51cto.com/alanwu/1109952

writeback机制源码分析
https://blog.51cto.com/alanwu/1110046

linux pagecache bdi writeback 机制
https://blog.csdn.net/qqqqqq999999/article/details/77481899

mmap原理及流程(kernel 4.1版本)        博客不错
https://blog.csdn.net/omnispace/article/details/77600704

普通文件的readpage方法(do_mpage_readpage)
https://blog.csdn.net/weixin_36145588/article/details/74990382

do_mpage_readpage函数详细分析
http://blog.chinaunix.net/uid-28236237-id-4028521.html

linux2.6.37内核接两个硬盘导致读写效率变低的问题
https://blog.csdn.net/ctthuangcheng/article/details/42204425

Cgroup-memory子系统分析(1)
https://blog.csdn.net/tanzhe2017/article/details/81001507

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值