posix_fadvise(WILLNEED) 会使 IO 变慢吗?

2024-04-23

在运行 Linux 内核版本 2.6.18-194.26.1.el5 的 CentOS 5.5 机器上,我注意到 posix_fadvise(WILLNEED) 使读取 60K 文件比常规 IO 慢了近 200%。

看起来实际的 fadvise 调用是同步的,并且它还延迟调度应用程序中使用从文件读取的数据的其他线程。

是否有可能由于 fadvise 调用,内核正忙于从磁盘获取数据,并最终延迟了其他计划任务?这似乎与我们期望进行 fadvise 调用所期望的异步预取行为相反。

我的问题是:是否有任何可调整的内核参数可用于强制 posix_fadvise(WILLNEED) 的异步行为?比如增加内核IO线程、页面缓存?


这是最近才发生的在 LKML 上询问 http://news.gmane.org/find-root.php?message_id=%3C20101206135049.GB8135@thunk.org%3E。这就是它的设计方式。如果你需要非阻塞fadvise,在另一个线程中执行。

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

posix_fadvise(WILLNEED) 会使 IO 变慢吗? 的相关文章

  • Bash 变量:区分大小写?

    Bash shell 脚本区分大小写吗 是可变的date与DATE 是的 它区分大小写 就像 UNIX 的其余部分一样 date and DATE是两个不同的变量 makefile and Makefile是两个不同的文件 h and H是
  • POSIX:FreeBSD 与 Linux 中的管道系统调用

    在 Linux 2 6 35 22 generic 中 man pipe指出 pipeline 创建一个管道 一个可用于进程间通信的单向数据通道 在 FreeBSD 6 3 RELEASE p5 中 man pipe指出 pipeline
  • SSL 和 Tkinter 不存在于 Python 3.5.2、Debian Linux 的源代码构建中

    我刚刚将 Python 3 5 2 下载到我的 Debian 机器上并使用以下命令构建它 configure make make test sudo make install 一切正常 但在make test输出中 它显示安装程序由于未安装
  • 为多线程 UDP 客户端执行“close ()”时套接字描述符未释放

    我在下面编写了 UDP 客户端 它基本上生成一个单独的线程来接收数据报 但是数据报仅在主线程中发送 现在 在 Linux 发行版上实例化 udpClient 1 UDP 客户端后按 ctrl D 实现退出循环 围绕 getline 调用 并
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • PyGTK+3(PyGObject)创建屏幕截图?

    我过去 3 天在 google 上搜索 如何使用 PyGTK 3 创建屏幕截图 有关于 pyqt pygtk 2 wx 和 PIL 的 gallizion 教程 顺便说一句 我不需要 scrot imlib2 imagemagick 等外部
  • Linux 中不使用 C++ 的 C 异常处理

    Linux 是否提供了 C 语言的异常处理而不求助于 C 或者 实现此类异常处理的最佳方法是什么 目标是避免检查每个调用的函数的返回码 而是执行类似于 C 的线程安全且易于移植的操作 您可以通过为其编写信号处理程序来处理信号 GNU 记录的
  • 保护一个保存 MySQL 数据库的简单 Linux 服务器?

    这是一个初学者问题 但我浏览了该网站上的许多问题 但没有找到简单直接的答案 我正在设置一个运行 Ubuntu 的 Linux 服务器来存储 MySQL 数据库 该服务器尽可能安全非常重要 据我所知 我主要担心的是传入的 DoS DDoS 攻
  • 为什么 SDL 在 Mac 上比 Linux 上慢得多?

    我正在研究使用 SDL2 渲染的单线程图形程序 https github com TurkeyMcMac intergrid 请参阅末尾的较小示例 它既可以在旧的 Linux 机器上运行 也可以在不太旧的 Mac 上运行 Linux 计算机
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • Node exec 无权执行脚本

    直到最近 它都运行良好 但是当我今天尝试使用它时 它无法正常运行 它返回以下错误 错误 命令失败 bin sh c home pi RPi Computer Power RPi Server routes scripts hash js 1
  • 有没有比使用 backtrace() 更便宜的方法来查找调用堆栈的深度?

    我的日志记录代码使用的返回值回溯 http linux die net man 3 backtrace确定当前堆栈深度 出于漂亮的打印目的 但我可以从分析中看到这是一个相当昂贵的调用 我不认为有更便宜的方法吗 请注意 我不关心帧地址 只关心
  • 当模式在范围内时使用 sed 打印范围?

    我有一个充满查询的日志文件 我只想查看有错误的查询 日志条目类似于 path to file executing query QUERY SIZE ROWS MSG DURATION 我想打印所有这些东西 但只有当MSG 包含一些有趣的内容
  • 从 bash 脚本返回值

    我想创建一个返回值的 Bash 文件 意思是 在脚本 script a bash 中我有一定的计算 脚本 script b bash 会调用它 script a bash return 1 5 script b bash a value s
  • 如何检测文本文件中大于 n 的一系列“空洞”(孔、与模式不匹配的线)?

    Case scenario cat Status txt 1 connected 2 connected 3 connected 4 connected 5 connected 6 connected 7 disconnected 8 di
  • 使用openssl从服务器获取证书

    我正在尝试获取远程服务器的证书 然后可以将其添加到我的密钥库中并在我的 Java 应用程序中使用 一位高级开发人员 正在度假 告诉我我可以运行这个 openssl s client connect host host 9999 获取转储的原
  • 将一个文件写入.c中的另一个文件

    我有一个读取文件然后将其内容复制到另一个文件的代码 我需要使其仅复制每 20 个符号 然后跳过 10 个符号 然后再次跳过 20 个符号 依此类推 我必须使用 lseek 函数 但我不知道如何将所有这些放入循环中来执行此操作 main ar
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶

随机推荐

  • 文本段的名称从何而来?

    传统的汇编器和更高级别的编译器使用多个内存segments 根据预期用途 因此 有数据段 堆栈段 bss 和文本段 文本段也称为代码段 Text部分 为了机器码 我问过所有我能找到的老前辈 像机器代码这样难以阅读的东西是如何被称为 文本段
  • Javascript:setTimeout() - 需要帮助

    我目前正在网页上执行突出显示功能 并为此使用 jquery 插件 我的代码如下所示 var input function var matchword searchbox val if matchword body removeHighlig
  • 当同时按下两个按钮时

    我有一个小问题 我有一个表单 这是我的登录表单 然后我还有另一个表单 这是我的添加用户表单 当我单击登录表单的登录按钮时 它需要检查是否同时按住了 Shift 和 Control 键 如果两者均未按下 则不应打开添加用户表单 但如果它们都被
  • C++ UDP Socket端口复用

    如何在 C 中创建客户端 UDP 套接字 以便它可以侦听另一个应用程序正在侦听的端口 换句话说 如何在 C 中应用端口复用 我只想监听一个端口 您可以使用嗅探器来做到这一点 只需忽略来自不同端口的数据包即可 我可能需要阻止它发送一些特定的数
  • Powershell:如何将字节字符串与二进制注册表值进行比较

    我有一个二进制注册表值 我想检查它在 Powershell 脚本中的一致性 我通过以下方式检索值 Get ItemProperty Path HKLM Software ORL WinVNC3 Name ACL ACL 这将返回一个字节字符
  • 使用 AngularJS 将选择重置为默认值

    我有一个关于 AngularJS 的问题 我有一个 使用 ngOptions 创建的选项进行选择 我想要 将所选选项设置回默认选项 我尝试过了 删除模型变量 例如 if angular isDefined scope first delet
  • 如何在视图中加载部分视图?

    我对这种片面的观点感到非常困惑 我想在我的主视图中加载部分视图 这是一个简单的例子 我正在加载 Homecontroller Index 操作的 Index cshtml 作为主页 在index cshtml中 我通过创建一个链接 Html
  • 如何更改 Composer 中一个包的最低稳定性 [重复]

    这个问题在这里已经有答案了 我正在尝试合并LDAP 验证 https github com ccovey ldap auth通过 Composer 模块到我的 Laravel 项目中 然而 它仅适用于dev稳定版本 我当前的 Compose
  • 如何使用 AngularJS 显示和隐藏 div?不使用任何 css 或 jquery

    我想使用 angularJS 隐藏 div 并在单击按钮时显示它 我使用了 ng show 和 ng hide 但它不起作用 div div
  • 可点击的精灵标签?

    我一直在玩精灵文本标签 更具体地说是这个例子 http stemkoski github io Three js Sprite Text Labels html http stemkoski github io Three js Sprit
  • Flask Python 未加载 main.css

    文件结构如下 app py 和 app2 py 几乎相同 只是 app2 py 指向 templates 文件夹 因为 app2 py 位于 src 文件夹中 app py app2 py 通过 app py 加载时 一切运行正常并且找到了
  • ReferenceError:CKEDITOR 未定义

    我正在尝试使用CK编辑器 http ckeditor com 但是当我尝试时出现以下错误 在 JS 控制台中 例子 http docs ckeditor com guide dev framed从教程中 浏览器中仅显示一个文本框 Refer
  • 独立Python3脚本之间的进程间通信

    我们可以使用标准的 multiprocessing Queue 类在独立的 Python3 脚本之间进行通信吗 bash aaa py bash bbb py 如果没有 是否有另一个库 例如标准多处理模块 用于与独立脚本进行通信 看一下有关
  • Webpack 中的 /node_modules/watchpack 中出现“无法解析模块 'aws-sdk'、'child_process'、'net'”

    我正在尝试构建我的 prod webpack 文件并收到 5 10 个 无法解析模块 aws sdk child process 的错误 所有这些错误都以相同的路径开始 ERROR in webpack watchpack chokidar
  • 如何在对象字段值发生变化时定义断点?

    作为示例 给出下面的代码摘录 我想定义一个断点 每当对象字段值发生变化时就会触发断点 并且可以选择根据条件中断 False or True在这种情况下 type TForm1 class TForm EnableButton TButton
  • 一个表列可用于多个 fk 表?

    对于这种情况 最好的解决方案 做法是什么 我有一个表 可以引用多个表 对象 以下是 UserCalendar 表的示例 这是一个用户保存事件的表 但系统也从后面插入到该表中 用户执行一些有截止日期的服务 这些服务也被插入到该表中 问题是没有
  • 为什么 C# 在这种情况下无法解决正确的重载问题?

    我遇到过一种明确的奇怪情况 但重载解析器并不这么认为 考虑 public static class Program delegate int IntDel delegate string StringDel delegate void Pa
  • 是否可以在 Jenkins 的构建后操作中执行 JavaScript 脚本?

    我需要在构建结束后执行 JavaScript 脚本 该脚本应该使用 npm 包 我安装的插件是 post build actions 我发现类似带有选项的执行脚本 add generic file script 如果我在这里给出 js脚本
  • 如何在 jQuery 中删除 css 属性

    if prev clicked accordion li a category css background image url img off all channel png accordion li a comment css back
  • posix_fadvise(WILLNEED) 会使 IO 变慢吗?

    在运行 Linux 内核版本 2 6 18 194 26 1 el5 的 CentOS 5 5 机器上 我注意到 posix fadvise WILLNEED 使读取 60K 文件比常规 IO 慢了近 200 看起来实际的 fadvise