【问题标题】:Detecting CPU load on different machines检测不同机器上的 CPU 负载
【发布时间】:2017-05-15 09:45:01
【问题描述】:

我正在尝试为我的进程创建一个后台任务调度程序,它需要并行调度任务(计算密集型),同时保持 UI 的响应能力。 目前,我正在使用 CPU 使用率(百分比)来对抗调度程序启动新任务的阈值(~50%),它工作正常。 该程序可以在多种硬件配置(例如处理器速度、内核数量)上运行,因此 50% 的限制对于某些配置可能过于苛刻或过于软弱。

有没有什么好的方法可以包含 CPU 配置的不同参数,例如核心、速度;哪个可以根据硬件配置动态得出阈值?

【问题讨论】:

    标签: performance cpu cpu-speed


    【解决方案1】:

    我的建议:

    1. 在系统中运行与 CPU 一样多的线程。
    2. 将每个线程的优先级设置为空闲(最低)
    3. 在线程主循环中进行尽可能小的睡眠,即 usleep(1)

    【讨论】:

    • 在这种情况下,线程数不受控制,而是由正在运行的任务决定。问题更多地在于调度最佳数量的任务,以确保我们最大化资源利用率并同时保持应用程序响应。我正在寻找的是一种标准化处理能力数字的方法,以便阈值根据处理器的能力放大/缩小。
    • 这就是为什么 IMO 最好让这些线程始终运行,但优先级最低且处于休眠状态,因此基本上调度程序会为您执行此操作...
    • 当然,这取决于你 ;)
    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多