【问题标题】:CPU usage event notification in C/C++?C/C++ 中的 CPU 使用事件通知?
【发布时间】:2011-04-29 07:12:52
【问题描述】:

很难确定当 CPU 使用率达到某个点时是否有系统调用来接收通知?我正在专门寻找 Linux/BSD 变体的电话,但如果您也知道 Windows 版本,那么我知道以供将来参考。

类似于 kqueue 的东西。

显然,我可以定期检查 /proc/cpuinfo 或单个 utime,但我希望有一个系统调用可以更有效地为我做这件事。

例如"让我知道最后一分钟的平均总 CPU 使用率何时超过 50%"

【问题讨论】:

    标签: c++ c cpu cpu-usage system-calls


    【解决方案1】:

    您可以从getrusage() 获取 CPU 使用信息,并且可以使用 soft 限制和setrlimit() 在超过预设阈值时获取SIGXCPU(然后您可以增加信号中的阈值)处理程序)。

    更多信息:http://linux.about.com/library/cmd/blcmdl2_getrusage.htm

    【讨论】:

    • 我以前用过这个,但是我会在一个循环中不断地轮询这个,直到(或如果)使用超过阈值,与 kqueue 一样,内核处理跟踪事物和在触发事件之前它不会返回。每次超过阈值时,我都需要不断收到通知。
    【解决方案2】:

    您正在寻找的 API 是 GetProcessTimes 和 GetSystemTimes。 This link 有两个很好的使用它们的例子。如果您有任何其他问题,因为我自己使用它们来确定 CPUUsage,请随时提问。

    【讨论】:

    • 我以前用过这个,但是我会在一个循环中不断地轮询这个,直到(或如果)使用超过阈值,与 kqueue 一样,内核处理跟踪事物和在触发事件之前它不会返回。每次超过阈值时,我都需要不断收到通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2017-01-25
    相关资源
    最近更新 更多