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 / 问题 / 751752
Accepted
Michael Graff
Michael Graff
Asked: 2016-01-26 22:36:59 +0800 CST2016-01-26 22:36:59 +0800 CST 2016-01-26 22:36:59 +0800 CST

Linux 软件 raid-10 性能不佳

  • 772

我有一台带有 8 通道 LSI SAS3008 控制器芯片的机器,单独的驱动器测试显示我可以以 174 MB/秒和 193 MB/秒之间的速度写入任何磁盘或所有磁盘,并具有持续的写入速度:

这是与所有 12 个磁盘并行dd if=/dev/zero of=/dev/mapper/mpath?p1 bs=1G count=100 oflag=direct运行的命令的输出:

107374182400 bytes (107 GB) copied, 556.306 s, 193 MB/s
107374182400 bytes (107 GB) copied, 566.816 s, 189 MB/s
107374182400 bytes (107 GB) copied, 568.681 s, 189 MB/s
107374182400 bytes (107 GB) copied, 578.327 s, 186 MB/s
107374182400 bytes (107 GB) copied, 586.444 s, 183 MB/s
107374182400 bytes (107 GB) copied, 590.193 s, 182 MB/s
107374182400 bytes (107 GB) copied, 592.721 s, 181 MB/s
107374182400 bytes (107 GB) copied, 598.646 s, 179 MB/s
107374182400 bytes (107 GB) copied, 602.277 s, 178 MB/s
107374182400 bytes (107 GB) copied, 604.951 s, 177 MB/s
107374182400 bytes (107 GB) copied, 605.44 s, 177 MB/s

但是,当我将这些磁盘作为软件 raid 10 设备放在一起时,我得到了大约 500 MB/秒的写入速度。我预计会得到两倍左右,因为同时访问这些磁盘不会受到任何惩罚。

我确实注意到了 md10_raid10 进程,我假设软件 raid 本身接近 80%,并且一个核心始终处于 100% 等待时间,并且 0% 空闲。然而,哪个核心发生了变化。

此外,当使用缓冲区缓存写入已挂载的 EXT4 文件系统而不是使用 oflag=direct 绕过缓存时,性能会进一步下降。磁盘报告 25% 繁忙(根据 munin 监控),但磁盘显然没有运行热,但我担心 md10 设备本身可能是。

关于下一步该去哪里的任何建议?我正在尝试一个硬件 raid 10 配置来进行比较,虽然我似乎只能构建一个 10 磁盘单元——也就是说,我希望能够保持 900 MB/秒的写入速度。当我发现更多时,我会更新这个问题。

编辑1:

如果我在紧密循环中使用 putdd命令写入安装在该设备上的 ext4 分区,并且我不使用缓冲区缓存(oflag=direct),我可以在峰值时达到 950 MB/秒以上,并且持续达到 855 MB/秒对安装标志进行了一些更改。

如果我同时使用 iflag=direct 读取,我现在可以获得 480 MB/秒的写入和 750 MB/秒的读取。

如果我在没有 oflag=direct 的情况下写入,因此使用缓冲区缓存,我得到 230 MB/秒的写入和 1.2 MB/秒的读取,但机器似乎非常缓慢。

那么,问题来了,为什么使用缓冲区缓存会如此严重地影响性能呢?我尝试了各种磁盘排队策略,包括在驱动器级别使用“noop”并将“deadline”或“cfq”放在适当的多路径 dm 设备上,或者在所有设备上设置截止日期,或者在 dm 上不使用,在后备驱动器上设置截止日期。似乎后备驱动器应该没有,多路径设备应该是我想要的,但这根本不会影响性能,至少在缓冲区高速缓存的情况下。

linux
  • 1 1 个回答
  • 2891 Views

1 个回答

  • Voted
  1. Best Answer
    the-wabbit
    2016-01-27T01:18:13+08:002016-01-27T01:18:13+08:00

    编辑:

    您的dd oflag=direct观察结果可能是由于电源管理问题。使用PowerTOP查看您的 CPU 的 C 状态是否在写入负载下过于频繁地切换到 C1 以上。如果是,请尝试调整 PM 以确保 CPU 不会休眠并重新运行基准测试。请参阅发行版的文档以了解如何执行此操作 - 在大多数情况下,这将是intel_idle.max_cstate=0内核引导线参数,但 YMMV。

    写入和缓冲写入之间的巨大性能差异O_DIRECT可能是由于:

    • 使用 O_DIRECT 时,CPU 不会进入 C3+ 睡眠或
    • CPU 被发送到 C3+,但由于使用 O_DIRECT 时显着简化的处理,这并不重要 - 只需指向一个归零的内存区域并发出 DMA 写请求比缓冲处理需要更少的周期,并且对延迟不敏感

    过时的答案:

    这看起来很像md.

    推理

    • 控制器的数据表承诺6,000 吞吐量
    • 您的并行dd运行显示每个驱动器 170MB /s +,因此路径不受连接 PCIe 带宽的限制
    • 您看到 md10_raid10 的利用率很高,接近 100%

    虽然多线程 RAID5 校验和计算的补丁已mdraid在 2013 年提交,但我找不到任何关于类似 RAID1 / RAID10 增强功能的信息,因此它们可能根本不存在。

    要尝试的事情

    • 不止一个写线程dd,只是为了看看它是否改变了什么
    • 一个不同的 RAID10 实现 - LVM RAID 10浮现在脑海中,但您也可以看看 ZFS 1,它的设计正是考虑到这个用例(许多磁盘,没有硬件 RAID 控制器)
    • 可能是更新的内核版本

    FWIW,您很少(如果有的话)会在使用机械存储介质的带宽上看到写入性能峰值(尤其是使用非 CoW 文件系统)。大多数情况下,您会受到寻道次数的限制,因此峰值带宽不必太在意,只要它满足您的最低要求即可。


    1如果您使用ZFS,您应该改进您的测试方法,因为将全零块写入 ZFS 数据集可能会非常快。如果为数据集启用压缩,零不会写入磁盘,而只是链接到全零块。

    • 4

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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