AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 107094
In Process
racitup
racitup
Asked: 2010-01-28 23:10:12 +0800 CST2010-01-28 23:10:12 +0800 CST 2010-01-28 23:10:12 +0800 CST

IRP_MJ_WRITE 延迟长达 15 秒

  • 772

我们编写了一个应用程序,该应用程序在同一个本地卷 (RAID1) 上一次对多个文件执行小 (22kB) 写入(一个线程代表其他线程对多个位置执行异步排队写入)。
99.9% 的写入是低延迟的,但偶尔(可能每分钟或两分钟)我们会收到一两个巨大的延迟写入(我见过 10 秒及以上)而没有任何真正的解释。

平台:带 NTFS 的 Win2003 服务器。
监控:Sysinternals Process Monitor(参见下面的链接)和我们自己的应用程序日志记录。

我们已经尝试了多种方法来尝试解决从一些网站收集到的这个问题,例如:

  • 使文件名的第一部分唯一以帮助 8.3 名称生成

  • 将文件写入多个目录

  • 更改英特尔磁盘写入缓存

  • Windows 文件/打印机共享

    • 最小化内存使用

    • 平衡

    • 最大化文件共享的数据吞吐量

    • 最大化网络应用程序的数据吞吐量

  • 系统->高级->性能->高级

  • NtfsDisableLastAccessUpdate - 使用 fsutil 行为设置 disablelastaccess 1

  • 禁用 8.3 名称生成 - 使用“fsutil 行为集 disable8dot3 1”+ 重新启动

  • 启用大尺寸文件系统缓存

  • 禁用内核代码的分页

  • IO 页面锁定限制

  • 关闭(或打开)索引服务

但似乎没有什么太大的不同。有很多事情我们还没有尝试过,但我们想知道是否有人遇到过同样的问题、原因和解决方案(程序化与否)?

我们可以使用 IOMeter 和简单的设置重现问题:

  1. 启动 IOMeter 并使用断开按钮删除“拓扑”中除第一个工作线程之外的所有工作线程。

  2. 选择 Worker 线程并在 Disk Targets 选项卡中要使用的磁盘旁边的框中打一个叉,然后在 Maximum Disk Size 中输入“2000000”(注意:必须至少有 1GB 可用空间;扇区大小为 512 字节)

  3. 接下来创建一个新的访问规范并将其添加到工作线程:

    • 传输请求大小 = 22kB

    • 100% 连续

    • 访问规范的百分比 = 100%

    • 读/写百分比 = 100% 写

  4. 将结果显示更新频率更改为 5 秒,将测试设置运行时间更改为 20 秒,并将“自动生成的工人数量”设置均为零。

  5. 在 Topology 面板中选择 Worker Thread 并点击 Duplicate Worker 按钮 59 次以创建 60 个具有相同设置的线程。

点击“开始”按钮(绿旗)并监控“结果”选项卡。我们机器上的“最大 I/O 响应时间 (ms)”总是至少达到 3500。我们的机器并不是很慢(具有 4GB 和板载 RAID 的 Xeon 8 核机架服务器)。

我很想看看其他人得到了什么。我们感觉这可能与 NTFS 文件系统有关(我们的文件系统目前 75% 都是碎片文件),我们将围绕这个原则尝试一些事情。但它也与磁盘性能有关,因为我们在 RAMDisk 上看不到它,而且在 RAID10 阵列上也没有那么严重。

任何帮助深表感谢。
理查德

右键单击并选择“在新选项卡中打开链接”:
ProcMon 结果

performance monitoring latency ntfs write
  • 1 1 个回答
  • 774 Views

1 个回答

  • Voted
  1. racitup
    2010-02-08T15:01:55+08:002010-02-08T15:01:55+08:00

    我现在有更多关于这个问题的信息。

    在使用各种硬件在 12 台不同的机器上测试了所描述的 IOMeter 测试后,我将其缩小到特定的 RAID 芯片组(具有相同芯片组的 3 台不同的机器使用 RAID1 和 RAID10 表现出这种行为)。所有其他机器的结果至少要好一个数量级。

    芯片组:英特尔 631xESB/632xESB SATA RAID(又名 ESB2)

    有关更多信息,请参阅英特尔网站上的这篇文章,并希望得到英特尔的回应:
    英特尔 631xESB/632xESB SATA RAID (aka ESB2) writes slow

    理查德

    • 1

相关问题

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • jvm性能调优技巧/资源?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve