linux high memory机制引发的问题

2023-10-27

linux high memory

32bit操作系统:

linux将逻辑地址空间分为两部分:0-3G是用户地址空间,3-4G是内核地址空间。所以linux内核只能够访问物理地址空间大小为1G,也就是物理地址0-1G。为了能够访问所有的物理地址空间,linux提出了high memory机制:从内核地址空间划分出一部分作为high memory,该区域的逻辑地址可以动态的去映射到其他的物理地址。

引发的问题

VFS inode shrinker 回收了当前仍在使用的page cache的inode,也会从内存卸载掉大量的active page cache。

  1. inode cache:打开文件的inode会暂存在low memory(内核地址可以直接映射的物理地址),因为很可能会再次被访问。
  2. page cache:读取的文件数据会暂存在high memory中,但是受到high memory的逻辑地址空间的限制,shrinker采用lru算法保证不会超出限制。

参考文献

1. LWN articles: An end to high memory?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux high memory机制引发的问题 的相关文章

  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • C - 为什么我无法映射较小(256UL 或更小)的内存?

    请告诉我 为什么我的简单应用程序无法映射较小的内存 而且 为什么有这样一个特定的边界 257UL define MAP SIZE 256UL or below fail define MAP SIZE 257UL ok include
  • 找出 Linux 上的默认语言

    有没有办法从C语言中找出Linux系统的默认语言 有 POSIX API 可以实现这个功能吗 例如 我想要一个人类可读格式的字符串 即德语系统上的 German 或 Deutsch 法语系统上的 French 或 Francais 等 有类
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 错误:命令“c++”失败,退出状态为 1

    所以我尝试按照以下说明安装 Pyv8https andrewwilkinson wordpress com 2012 01 23 integrating python and javascript with pyv8 https andre
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam

随机推荐

  • c++基础(华清远见学习之星)

    最近刚接触c 与c还是有很多不同的 如果有其写c的操作 头文件用
  • Linux查看CPU支持的指令集

    gcc march native Q help target grep march 或者 cat proc cpuinfo Intel的CPU 可以去官网查看能支持什么指令集 https ark intel com content www
  • STM32F103基于W5500实现Modbus简单TCP通信

    文章目录 一 Modbus TCP协议 1 查询报文 2 响应报文 二 从机代码 1 初始化从机网络 2 简单响应函数 3 main函数循环等待连接 三 效果 四 总结 五 源码 一 Modbus TCP协议 功能码 作用 01 读取线圈状
  • 正则表达式和通配符的区别

    http www eetop cn blog html 65 554165 26125 html http blog csdn net whxlovehy article details 6052366 Explain 1 1 正则表达式是
  • Python Selenium/WebDriver 操作手册新版

    写在前面 本文为个人整理手册 有错误的地方欢迎指正 参考链接较多 重点参考 侵权删 什么是Selenium 通俗的解释 引用 Selenium是一个Web的自动化测试工具 最初是为网站自动化测试而开发的 类型像我们玩游戏用的按键精灵 可以按
  • Hadoop集群搭建记录

    本文目录 写在前面 写在前面 本系列文章索引以及一些默认好的条件在 传送门 因为课程需要 我们要进行Eclipse的安装操作 eclipse需要是CentOS下的 网址在 传送门 在出现的页面中 根据自身的机型选择合适的类型 博主为x86
  • 基础三 * 下 【vim 编辑器】 【管道】【文件内容浏览命令】

    目录 vim 编辑器 管道 文件内容浏览命令 练习 vim 编辑器 前言须知 1 vim 是个啥 其实 vim 类似于 windows 上的记事本 能够编辑 保存 复制 粘贴 搜索 替换等等
  • AI开放平台能力集合

    背景 随着AI技术的兴起及其逐步在各业务领域落地 越来越多的公司将其业务中使用到的底层AI能力开放出来 通过付费的模式提供给不具备建立AI能力的公司使用 AI技术包含非常多不同的方向 如文档识别 人脸人体识别 NLP语义分析以及大数据挖掘等
  • Linaro 作为白金会员加盟 Zephyr 项目

    转载自 https www zephyrproject org linaro joins zephyrtm project platinum member 作者 Zephyr 本文地址 https linux cn article 7817
  • Mybatis-Plus:实现自定义SQL

    目录 1 简介 2 自定义SQL具体实现 2 1 注解SQL 2 2 Wrapper传参 注解SQL 2 3 Wrapper传参 xml文件SQL 2 4 正常传参 XML文件SQL 3 总结 1 简介 Mybatis Plus 以下简称M
  • mybaties-plus 代码成器使用笔记

    1 简介 MyBatis Plus Generator 可以生成 Controller Service Mapper Entity 也支持自写 SQL 的 mapper 步骤 1 数据库中创建相应表 2 引入maven依赖 freemark
  • 用gdb调试core dump文件

    尊重原创 http blog chinaunix net u2 83905 showart 2134570 html 在Unix系统下 应用程序崩溃 一般会产生core文件 如何根据core文件查找问题的所在 并做相应的分析和调试 是非常重
  • php获取当前文件夹下所有图片大小,PHP获取文件夹大小函数用法实例

    本文实例讲述了PHP获取文件夹大小函数用法 分享给大家供大家参考 具体如下 获取文件夹大小 function getDirSize dir handle opendir dir while false FolderOrFile readdi
  • layui layer弹出层通过offset属性定位弹出层在光标处弹出(event.clientY和event.clientX)失败。

    将弹出层弹出位置定位到光标处 大小超过父弹出层的部分无法显示 js 页面层 自定义 more click function event layer open id moreMenu type 1 title false closeBtn 0
  • BACnet协议栈apdu_set_confirmed_handler函数中的确认型回调函数是如何传参的

    BACnet协议栈中的确认型回调函数通常会被传入三个参数 BACNET ADDRESS src uint8 t apdu和uint16 t apdu len BACNET ADDRESS src参数表示请求的源地址 它是一个指向BACNET
  • Redis7之实现分布式锁(九)

    9 1 分布式锁需要的条件和刚需 独占性 任何时刻有且只有一个线程持有这个锁 高可用 若redis集群环境下 不能因为某一个节点挂了而出现获取锁和释放锁失败的情况 高并发请求下 依旧性能很好 防死锁 不能出现死锁问题 必须有超时重试机制或者
  • QT 如何保存登陆的用户信息

    使用QQ大家多知道需要一个账户来登陆 不止QQ啦 其实还有很多需要账户的 所以就需要将登陆用户的信息保存下来 此文使用的是 申请new一个指针来保存登陆用户的信息 并设置成后续的的操作都能读到此登陆值 好了 直接上代码 先看头文件怎么写 i
  • 学习笔记 JavaScript ES6 模块化Module

    学习内容 export import as import default 模块化的规范 1 CommonJS Node js 这是出现的比较早的一种规范 他是在Node js中的一种模块化规范 他的局限性是基于Node虽然能在服务器端实现模
  • 计算机视觉走向如何?分割大模型全面盘点(SAM/SegGPT/SEEM等)

    点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 今天自动驾驶之心很荣幸邀请到小乌龟 为大家分享分割大模型近期的发展情况 如果您有相关工作需要分享 请在文末联系我们 gt gt 点击进入 自动驾驶之心 语义分割 技术交流
  • linux high memory机制引发的问题

    linux high memory 32bit操作系统 linux将逻辑地址空间分为两部分 0 3G是用户地址空间 3 4G是内核地址空间 所以linux内核只能够访问物理地址空间大小为1G 也就是物理地址0 1G 为了能够访问所有的物理地