Ste*_*zzo 26 cpu-load kernel proc uptime
在多用户系统上,我想以 CPU 时间的秒数来衡量每个用户的 CPU 使用率。出于此测量的目的,我假设如果 PID 属于某个用户,则该用户会导致 CPU 时间 - 即我忽略了守护程序和内核。
目前我正在这样做,每五秒钟:
ps auxx的总和,UTIME,cutime,STIME和cstime从/proc/[pid]/statt = x / interval(高负载时间隔并不总是恰好 5 秒)如果我运行这个,我会得到合理的值。例如:这个系统上的一个用户在 python ( while True: pass) 中旋转,系统显示大约每秒 750 毫秒的 CPU 时间。当系统挂了一点时,它报告了 1600 毫秒的 1 秒 inverval。这似乎是正确的,但我不明白这些价值观可能具有欺骗性,特别是考虑到我并不真正理解它们。
所以我的问题是:
在每个用户的基础上衡量 CPU 负载的公平和正确的方法是什么?
该方法必须相当准确。该系统上可能有数百个用户,因此从中提取百分比ps aux将不够准确,特别是对于许多软件喜欢生成的短期线程。
虽然这可能很复杂,但我绝对知道这是可能的。这是我的出发点:
内核会跟踪进程的创建时间以及它在其生命周期中消耗的 CPU 时间。每个时钟滴答,内核都会更新当前进程在系统和用户模式下花费的时间,以 jiffies 为单位。—(来自Linux 文档项目)
我追求的值是用户在 CPU 上花费的秒数(或 jiffies),而不是系统负载或 CPU 使用率的百分比。
在进程仍在运行时测量 CPU 时间很重要。有些进程只会持续半秒,有些会持续数月——我们需要同时捕捉这两种情况,以便我们可以细粒度地考虑用户的 CPU 时间。
Ala*_*ell 13
听起来您需要流程会计。
http://www.faqs.org/docs/Linux-mini/Process-Accounting.html
在 Ubuntu 上,进程记帐工具在acct包中
要获取每个用户的报告,请运行
sa -m
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7447 次 |
| 最近记录: |