当前位置: 首页 > news >正文

refault distance算法的一点理解

这个算法看了好几次了,都没太理解,今天记录一下,加深一下印象。
引用某个博客对这个算法的介绍

一次访问page cache称为fault,第二次访问该页面称为refault。page cache页面第一次被踢出LRU链表并回收(eviction)的时刻称为E,第二次再访问该页的时刻称为R,那么R-E的时间里需要移动的页面个数称为Refault Distance。
把Refault Distance概念再加上第一次读的时刻,可以用一个公式来概括第一次和第二次读之间的距离(read_distance)。
read_distance = nr_inactive + (R-E)
如果page想一直保持在LRU链表中,那么read_distance不应该比内存的大小还长,否则该page永远都会被踢出LRU链表,因此公式可以推导为:
NR_inactive+(R-E) <= NR_inactive+NR_active
(R-E) <= NR_active

看来半天,其实一直没太理解(R-E)的含义。干脆,抛开这个,讲讲自己的理解。
按当前内核设计,一个pagecache被加入系统中时,会加入到不活跃lru链表。一段时间后,这个页被挪到了不活跃链表的最尾部,记这个时间为T0,并被内核的内存回收机制发现最近没被访问,则这个page cache页会被踢出lru链表,记这个时间为T1。
一段时间后,内核需要访问该page cache里的内容,但是发现该page cache不在内存里了,只好重新从存储介质中将其内容读出来,记这个时间点为T2。
这个时候,应该将这个page cache放到活跃lru链表还是不活跃lru链表呢?这个决策就是由refault distance算法来做。
这个算法的核心思想是,是否可以通过计算,来避免pagecache这层缓存的颠簸;换成大白话来说就是,如果这个时候(第二次读入pagecache缓存),我把这个pagecache页放入活跃lru链表,有没有可能(或者说增大可能),在下次用户需要读取这个pagecache的时候,他还在lru链表上(无论是活跃还是非活跃链表),这样的话,就代表这个页还没被踢出lru链表,从而用户访问的时候,就没必要从存储介质中重新读了,毕竟从存储介质读内容的性能肯定比不上从内存里读,如果能直接从内存里(lru链表上)读到,岂不美哉?
那么,需要怎么去做这个判断呢?
首先,拿T1时刻到T2时刻之间的数据当样本值。怎么采样判断呢?本质核心是这样的,假设用户要读取的pagecache在T0时刻被加入了活跃lru链表,并且,在T2时刻进行第二次刚好没有被踢出lru链表,需要满足什么条件呢?
需要满足:T1时刻到T2时刻之间链表挪动的pagecache页数,小于等于活跃lru链表页的数量。
举个例子吧,如果T1时刻到T2时刻之间lru链表挪动的pagecache页数是10,也就是说,如果用户想读的pagecache在被踢出内存这段时间,lru链表挪动的pagecache页数是10,并且,如果一开始活跃链表上的页的数量超过10的话,那这个pagecache肯定还没有被挪动到不活跃lru链表的尾端,反之,这个pagecache肯定被挪动到不活跃lru链表的尾端并被踢出内存。这里说的lru链表挪动的pagecache页数,包括把页从不活跃lru链表踢出内存的数量,也包括把页从不活跃lru链表升级到活跃lru链表的数量。(当然这只是估算,从活跃链表尾挪到活跃链表头肯定也会产生挪动)。所以在这个情况下,无非就是统计T1时刻到T2时刻之间链表挪动的pagecache页数,小于等于活跃lru链表页面数的话,肯定是需要挪动到活跃lru链表头的,从而最大程度避免缓存颠簸,否则如果大于活跃lru链表页面数的话,即使是挪到活跃lru链表头,按采样的规律大概率也没办法在被踢出内存前重新访问到,那直接放在非活跃lru链表即可。
罗里吧嗦的,希望能看懂。

相关文章:

refault distance算法的一点理解

这个算法看了好几次了&#xff0c;都没太理解&#xff0c;今天记录一下&#xff0c;加深一下印象。 引用某个博客对这个算法的介绍 一次访问page cache称为fault&#xff0c;第二次访问该页面称为refault。page cache页面第一次被踢出LRU链表并回收(eviction)的时刻称为E&#…...

软件安全技术【太原理工大学】

没有划重点&#xff0c;只说了一句课后题和实验中的内容都可能会出。 2022考试题型&#xff1a;选择20个20分&#xff0c;填空10个10分&#xff0c;名词解释4个20分&#xff0c;简答6个30分&#xff0c;分析与论述2个20分&#xff0c;没找到历年题。 如此看来&#xff0c;这门考…...

异常(Exception)

异常是什么 异常就是程序在进行时的不正常行为&#xff0c;就像之前数组时会遇到空指针异常&#xff08;NullPointerException&#xff09;&#xff0c;数组越界异常&#xff08;ArrayIndexOutOfBoundsException&#xff09;等等。 在java中异常由类来表示。 异常的分类 异常…...

一文者懂LLaMA 2(原理、模型、训练)

引言 LLaMA&#xff08;Large Language Model Meta AI&#xff09;是Meta&#xff08;前身为Facebook&#xff09;开发的自然语言处理模型家族之一&#xff0c;LLaMA 2作为其最新版本&#xff0c;展示了在语言理解和生成方面的显著进步。本文将详细解读LLaMA 2的基本原理、模型…...

MySQL 存储函数及调用

1.mysql 存储函数及调用 在MySQL中&#xff0c;存储函数&#xff08;Stored Function&#xff09;是一种在数据库中定义的特殊类型的函数&#xff0c;它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的SQL逻辑&#xff0c;使得在应用程序中调用时更加简单…...

设计模式七大原则-单一职责原则SingleResponsibility

七大原则是在设计“设计模式”的时候需要用到的原则&#xff0c;它们的存在是为了保证设计模式达到以下几种目的&#xff1a; 1.代码重用性 2.可读性 3.可拓展性 4.可靠性&#xff08;增加新的功能后&#xff0c;对原来的功能没有影响&#xff09; 5.使程序呈现高内聚、低耦合的…...

msfconsole利用Windows server2008cve-2019-0708漏洞入侵

一、环境搭建 Windows系列cve-2019-0708漏洞存在于Windows系统的Remote Desktop Services&#xff08;远程桌面服务&#xff09;&#xff08;端口3389&#xff09;中&#xff0c;未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞&#xff0c;可能导致远程无需用户验…...

Reinforcement Learning学习(三)

前言 最近在学习Mujoco环境,学习了一些官方的Tutorials以及开源的Demo,对SB3库的强化学习标准库有了一定的了解,尝试搭建了自己的环境,基于UR5E机械臂,进行了一个避障的任务,同时尝试接入了图像大模型API,做了一些有趣的应用,参考资料如下: https://mujoco.readthedo…...

hw meta10 adb back up DCIM

1. centos install adb 2. HW enable devlepment mode & enalbe adb debug 3. add shell root/zt/adb-sync python3 ./adb-sync --reverse /sdcard/DCIM/Camera /root/zt/meta10...

Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)

上期链接&#xff1a;Unity2D游戏制作入门 | 11(之人物属性及伤害计算)-CSDN博客 上期我们聊到了人物的自身属性和受伤时的计算&#xff0c;我们先给人物和野猪挂上属性和攻击属性的代码&#xff0c;然后通过触发器触发受伤的事件。物体&#xff08;人物也好敌人也行&#xff…...

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域&#xff0c;智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中&#xff0c;ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性&#xff0c;在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…...

零拷贝技术

背景 磁盘可以说是计算机系统重最慢的硬件之一&#xff0c;读写速度相对内存10以上&#xff0c;所以针对优化磁盘的技术非常的多&#xff0c;比如&#xff1a;零拷贝、直接I/O、异步I/O等等&#xff0c;这些优化的目的就是为了提高系统的吞吐量&#xff0c;另外操作系统内核中的…...

Flutter_Android上架GooglePlay_问题

上架GooglePlay权限问题 问题描述 REQUEST_INSTALL_PACKAGES 权限问题解决方式 方式1 找到所有使用该权限的库修改删除该权限引用 方式2 打开项目 ~/andoird/app/src/main/AndroidMainfest.xml 添加文本<uses-permission android:name"android.permission.REQUES…...

【Java】解决Java报错:NumberFormatException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 字符串包含非数字字符2.2 空字符串或 null 字符串2.3 数值超出范围 3. 解决方案3.1 验证字符串格式3.2 使用异常处理3.3 处理空字符串和 null 4. 预防措施4.1 数据验证4.2 编写防御性代码4.3 单元测试 结语 引言 在Java编程中&a…...

视觉大模型(VLLM)学习笔记

视觉多模态大模型&#xff08;VLLM&#xff09; InternVL 1.5 近日&#xff0c;上海人工智能实验室 OpenGVLab 团队、清华大学、商汤科技合作推出了开源多模态大语言模型项目InternVL 1.5&#xff0c;它不仅挑战了商业模型巨头例如 GPT-4V 的霸主地位&#xff0c;还让我们不禁…...

【软考的系统分析师的考题考点解析2025】

2024-2025系统分析师考试&#xff08;简称软考&#xff09;是计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试中的高级资格考试&#xff0c;主要考察考生在系统分析、系统设计、项目管理等方面的知识和技能。以下是软考系统分析师的常见考点、考题和重点&#x…...

JavaScript前端技术入门教程

引言 在前端开发的广阔天地中&#xff0c;JavaScript无疑是最耀眼的一颗明星。它赋予了网页动态交互的能力&#xff0c;让网页从静态的文本和图片展示&#xff0c;进化为可以与用户进行实时交互的丰富应用。本文将带您走进JavaScript的世界&#xff0c;为您提供一个入门级的教…...

类和对象(上续)

前言&#xff1a;本文介绍类和对象中的一些比较重要的知识点&#xff0c;为以后的继续学习打好基础。 目录 拷贝构造 拷贝构造的特征&#xff1a; 自定义类型的传值传参 自定义类型在函数中的传值返回 如果返回值时自定义的引用呢&#xff1f; 在什么情况下使用呢&#…...

【C++初阶学习】第十三弹——优先级队列及容器适配器

C语言栈&#xff1a;数据结构——栈(C语言版)-CSDN博客 C语言队列&#xff1a;数据结构——队列&#xff08;C语言版&#xff09;-CSDN博客 C栈与队列&#xff1a;【C初阶学习】第十二弹——stack和queue的介绍和使用-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经…...

Java(十七)---ArrayList的使用

文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …...

实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》

你有没有发现&#xff0c;困的时候真的清醒不了。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地址和子网掩码的子网信息。 知道 IP 地址、网络掩码和子网掩码后&#xff0c;您应该能够确定有关该 IP 地…...

定个小目标之刷LeetCode热题(12)

这是一道简单题&#xff0c;使用位运算中的异或运算即可&#xff0c;异或运算有以下性质&#xff1a; 1、任何数异或 0 结果仍然是原来的数&#xff0c;即 a⊕0a 2、任何数和其自身做异或运算&#xff0c;结果是 0 所以我们只需要让数组里的所有元素进行异或运算得到的结果就…...

MYSQL内存占用查询语句

可以通过以下 SQL 语句查询相关配置参数的当前值&#xff1a; InnoDB 缓冲池大小 (innodb_buffer_pool_size)&#xff1a; SHOW VARIABLES LIKE innodb_buffer_pool_size;最大连接数 (max_connections)&#xff1a; SHOW VARIABLES LIKE max_connections;临时表大小 (tmp_table…...

HikariCP连接池初识

HikariCP的简单介绍 hikari-光&#xff0c;hikariCP取义&#xff1a;像光一样轻和快的Connetion Pool。这个几乎只用java写的中间件连接池&#xff0c;极其轻量并注重性能&#xff0c;HikariCP目前已是SpringBoot默认的连接池&#xff0c;伴随着SpringBoot和微服务的普及&…...

LeetCode136只出现一次的数字

题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 解析 需要想到异或运算&#…...

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…...

echarts组件x轴坐标显示不全解决方法

1.旋转: 修改前: option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 1…...

JS实现移动端的轮播图滑动事件

在移动端实现轮播图滑动事件&#xff0c;我们通常使用 touchstart、touchmove 和 touchend 这三个事件。下面是一个基本的示例&#xff0c;展示了如何使用原生JavaScript来创建一个简单的移动端轮播图滑动效果&#xff1a; HTML结构&#xff1a; <div id"carousel&qu…...

2024.6.10学习记录

1、代码随想录二刷 2、项目难点 review 3、计组复习...

RapidJSON

要在项目中使用 RapidJSON 库&#xff0c;需要首先下载并包含该库的头文件。以下是详细的步骤&#xff0c;包括如何下载、引用和使用 RapidJSON&#xff1a; 使用 CMake 引用 RapidJSON 如果你的项目使用 CMake 构建系统&#xff0c;可以按照以下步骤引用 RapidJSON&#xff…...

网站模板 酒类/重庆关键词自动排名

文章目录写在开头(使用前必看)!!!1 linux怎么修改用户名2 SSH服务器拒绝了密码&#xff0c;请再试一次2.1 首先检查输入用户名密码&#xff0c;大部分都是此类错误2.2 通常解决方法3 Linux -bash: telnet: 未找到命令4 Failed to restart ssh.service: Unit not found.5 root被…...

适合设计师的网站/网络优化软件有哪些

一、问题引入如果服务提供者响应非常缓慢&#xff0c;那么消费者对提供者的请求就会被强制等待&#xff0c;直到提供者响应或超时。在高负载场景下&#xff0c;如果不作任何处理&#xff0c;此类问题可能会导致服务消费者的资源耗尽甚至整个系统的崩溃。1.1、雪崩效应微服务架构…...

destoon 网站搬家/公司网络营销实施计划

[冰多多]Alpha项目展示 冰多多项目: 语音coding 助手, alpha阶段目标: 语音辅助输入 一. 团队成员的简介和个人博客地址 成员角色个人博客地址卓培锦PM, 后端开发https://www.cnblogs.com/butub/牛雅哲后端http://www.cnblogs.com/swainz/韩笑冰前端后端对接http://www.cnblogs…...

wordpress 商业主题插件/深圳网站建设运营

文章目录 1、Rancher 2.x 介绍 1.1、Rancher 1.x VS Rancher 2.x 1.2、Rancher 2.x 架构图 2、环境、软件准备 3、创建 RancherOS 启动 Rancher 2.x 3.1、安装 Docker machine 3.2、创建 RancherOS 3.3、启动 Rancher 2.x 4、Rancher 2.x UI 界面 5、Rancher 2.x 管理现有 Kube…...

人与马做网站/服装店营销策划方案

配套FPGA开发板&#xff08;含该设计的工程代码&#xff09;&#xff1a;https://item.taobao.com/item.htm?spma1z10.1-c.w4004-4676525296.4.6e8950ed57YPhv&id17848039135 基于FPGA的智力抢答器设计 功能说明 说明 4路抢答器&#xff0c;选手&#xff0c;主持人可以进行…...

网站开发云南/广州各区最新动态

java环境变量配置新建系统变量JAVA_HOME 和CLASSPATH 变量名&#xff1a;JAVA_HOME 变量值&#xff1a;C:\Program Files\Java\jdk1.7.0_75变量名&#xff1a;CLASSPATH 变量值&#xff1a;.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Path添加变量置变量名&#xff1…...