what the difference betweent pin page and lock page ?
以前在项目中,大家为了避免自己使用的page被换出,使用的方式是mlock,从mlock的实现的看,它限制了page被swap,
然后在一个swap off的系统中,这样其实和mlock调用与否没有关系了。
我们使用mlock,最终的目标无非了latency,但是mlock却没有阻止内核将页面进行迁移,也就是虽然保证了对应的虚拟地址
访问的时候不会需要swap迁入,但无法保证对应的物理页面和虚拟地址对应关系不变,如果变化了,访问该虚拟地址的话,还会
出现pagefault,虽然不会io,但对于实时性要求高的场景,依然不爽。
有人提出,干脆pin住内存吧,也就是不让他swap,也不让他迁移,这样物理页面和虚拟地址的对应关系一直不变,是不是就解决了
这个问题呢?这样就带来了一个问题,既然你可以pin住那么多内存,相当于在mm的地盘划出来了一片自留地,这种虽然比系统上电
的时候reserve部分内存,改动起来方便一些,但就不好管理了,为了更好地追踪这个pin住的页面,就有必要固定页保留在单独的虚拟内存区域(VMA)中,
该区域用 VM_PINNED标志标记(不过我在较新的内核中也没找到这个合入)?
这个pin住的页面和我们 mdev中看到的
vfio_iommu_type1_pin_pages内部是通过try_get_page(page)将struct page的_refcount加一,来实现所谓的「pin住内存」的效果的。这样做的实际效果是:
- 该物理页仍可以被换出
- 该页不会被迁移,即虚拟地址和物理地址的对应关系被锁定
另一方面,mlock系统调用的「锁住内存」,其含义则是:
- 内存不会被换出
- 内存可以被迁移,即虚拟地址不变,物理地址改变
而mpin的实现,则是两者的交集,即不会换出,也不会改变映射关系,它处于nomoveable区域。具体可以参考《https://lwn.net/Articles/600502/》。
从统计的角度说,目前使用pin_pages方式pin住的内存,统计计数也是放在
what the difference betweent pin page and lock page ?的更多相关文章
- Library Cache: Lock, Pin and Load Lock
What is "Library cache lock" ? This event controls the concurrency between clients of the ...
- 外键约束列并没有导致大量建筑指数library cache pin/library cache lock
外键约束列并没有导致大量建筑指数library cache pin/library cache lock 清除一个100大数据表超过一百万线,发现已经运行了几个小时: delete B001.T_B1 ...
- Add custom and listview web part to a page in wiki page using powershell
As we know, Adding list view web part is different from custom web part using powershell, what's mor ...
- Page Cache与Page回写
综述 Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能.此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page ...
- page cache 与 page buffer 转
page cache 与 page buffer 标签: cachebuffer磁盘treelinux脚本 2012-05-07 20:47 2905人阅读 评论(0) 收藏 举报 分类: 内核编程 ...
- Response.Write,Page.RegisterClientScriptBlock和Page.RegisterStartupScript的区别
Response.Write("<script>");输出在文件头部,一打开就执行. RegisterClientScriptBlock一般返回的是客户端函数的包装, ...
- man page ,info page 和/usr/share/doc/整理自鸟哥
- 比如查看date指令 - 命令:vbird@www ~]$ man date - 返回示例(部分):DATE(1) User Commands DATE(1) - 部分释义(注释2): ...
- 【Linux】在线求助man page与info page
先来了解一下Linux有多少命令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少命令可以让你用? [knife@www ~]$ <==在这里不要输入任何字符,直接输入两次[ta ...
- man page及info page用法
Linux系统的在线求助man page与info page 先来了解一下Linux有多少命令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少命令可以让你用? [vbird@www ...
随机推荐
- 攻防世界pwn题:forgot
0x00:查看文件信息 该文件是32位的,canary和PIE保护机制没开. 0x01:用IDA进行静态分析 总览: 该函数就是:v5初值为1,对v2输入一串字符.然后执行一个会根据输入的字符串而修改 ...
- 「洛谷 P3834」「模板」可持久化线段树 题解报告
题目描述 给定n个整数构成的序列,将对于指定的闭区间查询其区间内的第k小值. 输入输出格式 输入格式 第一行包含两个正整数n,m,分别表示序列的长度和查询的个数. 第二行包含n个整数,表示这个序列各项 ...
- 接口测试postman深度挖掘应用②
上一篇文章我们已经介绍了postman的基本用法,以及接口测试原理.未关注博主的可以关注下博主,后期测试安全,以及各种工具用法,编程语言都会有讲解的 老样子:①先补习基础知识: ②补充上一章节由于过 ...
- 【Java面试】什么是可重入,什么是可重入锁? 它用来解决什么问题?
一个工作了3年的粉丝,去一个互联网公司面试,结果被面试官怼了. 面试官说:"这么简单的问题你都不知道? 没法聊了,回去等通知吧". 这个问题是: "什么是可重入锁,以及它 ...
- vue大型电商项目尚品汇(后台篇)day02
这几天更新有点小慢,逐渐开始回归状态了.尽快把这个后台做完,要开始vue3了 3.添加修改品牌 用到组件 Dialog 对话框,其中visible.sync这个配置是修改他的显示隐藏的,label-w ...
- oracle-安装与访问、卸载
安装oracle 官网(http://oracle.com/ )下载oracle -->Oracle Database -->点击接受Accept --> 下载11g(Downloa ...
- key可重复的Map
在正常的map操作中,key是不能重复的,如果希望key的内容可以重复,可以用IdentityHashMap 举个栗子 输出结果: public static void main(String[] a ...
- Mybatis-Plus介绍
Mybatis-Plus介绍 Mybatis-Plus概念 Mybatis-Plus介绍 官网https://mybatis-plus/或https://mp.baomidou.com/ mybati ...
- springboot的@ConditionalOnBean注解
上篇文章中分析了springboot的自动注入的原理,可在文章后面的推荐阅读中温习哦.在自动注入的原理那篇文章中提到了@ConditionalOnXX注解,今天来看下springboot中的@Co ...
- C#《原CSharp》第三回 万文疑谋生思绪 璃月港口见清玉
第三回 万文疑谋生思绪 璃月港口见清玉 ===================================================================== 云溪愣了下,在他的认 ...