减少线程或进程的CPU使用量
Reducing the CPU usage of a thread or process
还有很多其他类似的问题,但我看到的唯一实质性的答案是使用SetPriorityClass
优先考虑其他进程。这不是我想要的。我想显式地限制线程/进程的CPU使用量。
我该怎么做?
编辑:我无法提高流程本身的效率,因为我无法控制它。我正在将我的代码注入一个我想在后台"自动化"的游戏中。
限制进程或线程的cpu使用量的最佳解决方案是确保线程或进程使用更少的cpu。
这可以通过提高代码的效率或减少调用频率来实现。其目的是确保流程不会持续消耗所有可用的时间片。
尝试的东西:
- 计算出实际占用所有CPU的部分。优化重处理区域-最好是通过更改算法
- 尽可能减少投票
- 尝试依赖操作系统在必要时唤醒进程的能力。例如,通过等待文件/套接字/fifos/互斥对象/信号量/消息队列等
- 让进程自行调节其处理器使用情况。如果你的进程在一个无休止的循环中做了很多工作,那么在每N个循环之后插入一个sched_yield()或sleep()。如果没有其他进程在等待CPU使用,那么您的进程将几乎立即被重新安排,但会允许系统的其他部分在必要时使用CPU时间
- 重新安排您的进程,以便在进程空闲时运行优先级较低的活动
- 仔细调整线程或进程优先级。但请注意,正如@MooingDuck所说,这样做可能只会将CPU使用量从一个地方转移到另一个地方,而不会看到整体改进
定期发出睡眠命令怎么样?
你的问题很宽泛——我不知道它在做什么。您当然可以跟踪线程的I/O,并在超过某个阈值后强制它放弃cpu。
我最终列举了一个线程列表,然后有一个100ms的计时器,每五次迭代中就有两次暂停线程列表(理论上这会减少40%的CPU使用量)。
谢谢你的回答。
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 如何禁用 CPU 的无序执行
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 分别测量每个线程上花费的 CPU 时间(C++)
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- C++程序的总空间使用量
- 应用程序内存使用量减少
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 您选择的 CPU 不支持 x86-64 指令集
- 减少 g++ 内存使用量
- 如何降低应用程序的 CPU 使用率?
- 对于 CPU 无法原子操作的类型,std::atomic 有什么意义?
- 如何区分CPU和内存瓶颈?
- 如何使用 gcc 通过命令行限制C++代码的内存使用量?
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 减少线程或进程的CPU使用量
- 如何在c++中计算一个应用程序所消耗的总内存和CPU使用量