首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在何处找到单个进程的iowait (作为文件)

在何处找到单个进程的iowait (作为文件)
EN

Unix & Linux用户
提问于 2018-07-30 08:54:23
回答 1查看 4.7K关注 0票数 3

我正在编写一个脚本,我需要找到一个文件,其中存储单个进程/pid/service的iowait的统计信息。在基于Debian的发行版上有这样的文件吗?

无论是/proc/<pid>/stat/proc/<pid>/io都没有任何iowait的统计数据,根据手册页。我知道我可以解析其他工具的输出,如iotop、sar等,但是,解析外部命令的输出是我必须避免的性能问题。

注:我知道/proc/stat及其内容的含义。我需要一个进程的iowait,而不是整个CPU或一个核心。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-07-30 09:51:02

理论上,您可以从iowait获得每个进程的/proc/[pid]/stat,因为我们从相应的PROC(5)块中读取:

代码语言:javascript
复制
(42) delayacct_blkio_ticks  %llu  (since Linux 2.6.18)
     Aggregated block I/O delays, measured in clock ticks (centiseconds).

我根本不知道delayacct_blkio_ticks实际上是什么意思。无论如何,唯一的man proc将对您有用。

有相关问题,请检查它:使用proc FS测量块I/O延迟

此外,请注意每个CPU /proc/stat块中的iowait注释:

  1. CPU不会等待I/O完成;iowait是任务等待I/O完成的时间。当CPU进入空闲状态以执行未完成的任务I/O时,将在此CPU上调度另一个任务。
  2. 在多核CPU上,等待I/O完成的任务不在任何CPU上运行,因此每个CPU的功耗很难计算。
  3. 在某些条件下,这一领域的价值可能会下降。

您可以从iowait获得每个CPU的/proc/stat数据。在我的Ubuntu18.04的/proc/stat中有这样的部分:

代码语言:javascript
复制
cpu  2752162 16054 941158 49212025 789607 0 217089 0 0 0
cpu0 1397207 7767 500620 24623046 407078 0 70574 0 0 0
cpu1 1354955 8286 440538 24588978 382529 0 146515 0 0 0

在我的特殊情况下,除cpus列外,第五列是iowait值。列的数量及其含义可以根据所使用的内核的不同而有所不同。

要获得每一列的确切含义,您必须查看文档。在Ubuntu中,首先安装linux-doc包:

代码语言:javascript
复制
sudo apt install linux-doc

看看man proc

代码语言:javascript
复制
man proc

对于每一列都有精确的/proc/stat解释。

另外阅读如何读取Linux /proc/stat文件,了解如何计算值。

在CentOS中,有必要安装kernel-doc包:

代码语言:javascript
复制
yum install kernel-doc

然后读取该文件:

代码语言:javascript
复制
/usr/share/doc/kernel-doc/Documentation/filesystems/proc.txt
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/459288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档