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 / 问题 / 645541
Accepted
Toto
Toto
Asked: 2014-11-20 08:27:12 +0800 CST2014-11-20 08:27:12 +0800 CST 2014-11-20 08:27:12 +0800 CST

评估 Linux 上的 CPU I/O 等待

  • 772

做一个top检查 io 等待,我得到这些数字:

Cpu(s):  6.7%us,  1.4%sy,  1.2%ni, 85.5%id,  5.0%wa,  0.0%hi,  0.3%si,  0.0%st

查看这些数字 (%us ~= %wa),它们是否意味着:

  1. 等待的 CPU 进程几乎与正在工作的 CPU 进程一样多?(=> 不好)
  2. 工作进程正在等待其执行计划的 5.0%?(=> 在这种情况下可以)
  3. 别的东西
linux
  • 3 3 个回答
  • 54579 Views

3 个回答

  • Voted
  1. Best Answer
    Matthew Ife
    2014-11-20T10:04:44+08:002014-11-20T10:04:44+08:00

    评估这些数字时需要小心。

    1. IOWait 与磁盘活动相关,但不一定与磁盘活动呈线性相关。
    2. 您拥有的 CPU 数量会影响您的百分比。
    3. 高 IOWait(取决于您的应用程序)并不一定表示您有问题。或者,一个小的 IOWait 可能会给您带来问题。它基本上归结为正在等待什么任务。

    在这种情况下,IOWait 是对给定时间段内 CPU(或所有 CPUS)由于所有可运行任务都在等待 IO 操作完成而空闲的时间的度量。

    在您的示例中,如果您有 20 个 CPU,其中一个任务真正敲击磁盘,则该任务(实际上)将 100% 的时间花在 IOWait 上,随后运行此任务的 CPU 几乎 100% 的时间花在等等。但是,如果 19 个其他 CPU 有效空闲并且没有使用该磁盘,它们会报告 0% IOWait。这导致平均 IOWait 百分比为 5%,而事实上,如果您要查看磁盘利用率,这可能会报告 100%。如果在磁盘上等待的应用程序对您很重要——这 5% 有点误导,因为瓶颈中的任务可能会遇到比 5% 慢得多的性能问题。

    等待的 CPU 进程几乎与正在工作的 CPU 进程一样多?(=> 不好)

    可能,请记住大多数情况下 CPU 运行任务,而任务是请求 IO。如果两个独立的任务忙于查询两个独立 CPU 上的同一个磁盘,这将使两个 CPU 处于 100% IOWait(在 20 CPU 示例中,总体平均 IOWait 为 10%)。

    基本上,如果您有很多任务需要 IO,尤其是来自同一个磁盘,再加上该磁盘 100% 被利用(请参阅 参考资料iostat -mtx),那么这很糟糕。

    工作进程正在等待其执行计划的 5.0%?(=> 在这种情况下可以)

    不,工作进程几乎可以肯定是全职等待 IO。这只是平均报告情况(“其他 CPU 不忙”)捏造了 CPU 有许多任务要运行的百分比或事实,其中许多任务不需要执行 IO。

    作为一般规则,在多 CPU 系统上,IOWait 百分比等于您拥有的 CPU 数量除以 100 可能需要调查。

    别的东西

    看上面。但请注意,执行大量写入的应用程序会受到限制(停止使用回写,开始直接写入磁盘)。这会导致这些任务产生高 IOWait,而同一 CPU 上的其他任务写入同一磁盘则不会。所以例外确实存在。

    另请注意,如果您有 1 个 CPU 专用于运行 2 个任务,一个是重 IO 读/写器,另一个是重 CPU 用户,那么在这种情况下 CPU 将报告 50% IOWait,如果您有 10 个这样的任务将是 10% IOWait(和一个可怕的负载),因此报告的数字可能比实际可能存在的问题要低得多。

    我认为您确实需要查看iostat -mtx一些磁盘利用率指标,并pidstat -d获得一些每个进程的指标,然后考虑以这种方式访问​​这些磁盘的应用程序是否可能导致问题,或其他潜在的应用程序撞击那些磁盘可能会导致问题。

    CPU 指标确实可以作为潜在问题的指标,它们很笼统,因此了解它们可能过于笼统的地方是一件好事。

    • 19
  2. Hrvoje Špoljar
    2014-11-20T08:37:52+08:002014-11-20T08:37:52+08:00

    这意味着 5% 的 CPU 时间用于等待磁盘 IO 完成,而 6.7% 的 CPU 时间用于实际执行用户态进程所需的处理。

    检查 vmstat 输出;例如vmstat 1 30,只要列中的进程计数b不堆积,你就很好。列b表示处于不可中断状态(D 状态)的进程数,这些进程在磁盘 IO 操作完成之前被阻塞。

    所以回答你的问题

    1. 等待的 CPU 进程几乎与正在工作的 CPU 进程一样多?(=> 不好)

    没有时间大致相同,但这不一定是问题。只要您没有在进程开始以 D 状态堆积的问题,就可以了。改进可能包括添加更多 RAM 以为页面缓存(磁盘缓存)提供更多空间以减少磁盘读取次数,而不是从内存缓存中读取,调整磁盘调度程序。

    1. 工作进程正在等待其执行计划的 5.0%?(=> 在这种情况下可以)

    这是处理用户态进程所花费的 CPU 时间的一部分;这里没有什么可担心的,尤其是有这么多空闲的85.5%idCPU 时间

    • 0
  3. Sobrique
    2014-11-20T08:37:56+08:002014-11-20T08:37:56+08:00

    等待状态是指原本可运行的进程停止等待 IO。这是争用的标志,通常是为了磁盘资源。

    这确实意味着您的某些进程没有尽可能快地运行,但这很正常。

    • 0

相关问题

  • 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