收集系统进程 IO 详细信息

Posted

技术标签:

【中文标题】收集系统进程 IO 详细信息【英文标题】:Gathering System Process IO details 【发布时间】:2020-06-09 00:39:54 【问题描述】:

我正在尝试准备一份报告,其中我需要收集系统上运行的所有进程的 I/O 读取、写入和其他字节。下面是我目前使用的脚本。

Get-Process|select name,cpu,@name="WorkingSet";Expression=$_.WorkingSet/1kb,BasePriority,path|where $_.Name -in 'dllhost','firefox','dsapi'

下面是我们经过一些处理和测量对象得到的输出。

我面临的问题是,对于大多数系统进程或用户名是 system 的情况,这些值的返回值大多以 zero 的形式返回。请提供一些有关如何解决此问题并获得系统进程实际值的指导。

从我读到的 I/O 值不会从 get-process cmdlet 中提取,这就是为什么我使用下面的 cmdlet 并且它适用于用户创建的进程但是对于系统创建的进程,脚本返回一个零值如上图所示。

$gc = get-counter '\Process(dllhost)\IO Read Bytes/sec'
$gc.countersamples | sort cookedvalue

【问题讨论】:

【参考方案1】:

确保您以管理员身份运行 powershell。

据我所知,没有 ReadByteSec 或 WriteBytpeSec。 您还使用了不包含这些属性的 select 语句。

键入此以查看 dllhost 的所有可用属性:

$processes = Get-Process | where $_.Name -in 'dllhost'
Get-Member -InputObject $processes[0]

然后将这些添加到您的声明中:

Get-Process|select name,cpu,@name="WorkingSet";Expression=$.WorkingSet/1kb,BasePriority,path, *BytesField1, BytesField2, etc* |where $.Name -in 'dllhost','firefox','dsapi'

【讨论】:

@OptilMysticall 我已经更新了问题。错过了从我获取 I/O 详细信息的位置添加 sn-p。请立即查看

以上是关于收集系统进程 IO 详细信息的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用性能工具功能用法及原理

请详述XP中svhost进程及其所含线程详细信息。

linux系统维护命令

操作系统之进程

常用的Linux服务器性能查看命令

并发编程之 进程