小智 145
nice
(和/或renice
)降低优先级.您也可以使用nice()
系统调用以编程方式执行此操作.这不会降低执行速度本身,但会使Linux调度程序分配更少(也可能更短)的执行时间帧,更频繁地抢占等等.有关调度的更多详细信息,请参阅了解Linux内核的进程调度(第10章).cpufreq-set
命令控制(减慢,加速)CPU .sched_yield()
程序的性能关键部分调用(这将为其他进程提供量子)(需要代码更改).malloc()
,free()
,clock_gettime()
使用等LD_PRELOAD,并做一些愚蠢的东西一样烧了几百万的CPU周期rep; hop;
,插入记忆障碍等,这会拖慢程序是肯定的.(有关如何执行此操作的示例,请参阅此答案).-O0
启用断言(即-DDEBUG
))可以实现一些缓慢.希望能帮助到你.
art*_*ise 36
QEMU 是Linux的CPU模拟器.Debian有它的包(我想大多数发行版都会).您可以在模拟器中运行程序,其中大多数应该支持减慢速度.例如, Miroslav Novak有补丁减缓QEMU.
或者,你可以交叉编译到另一个CPU-linux(arm-none-gnueabi-linux等)然后让QEMU翻译该代码来运行.
在漂亮的建议很简单,如果你与另一个进程,这将消耗CPU结合它可能工作.
nice -19 test &
while [ 1 ] ; do sha1sum /boot/vmlinuz*; done;
Run Code Online (Sandbox Code Playgroud)
你没有说你是否需要图形,文件和/或网络I/O?你知道你正在寻找的错误类吗?这是竞争条件,还是代码在客户站点表现不佳?
编辑: 您还可以使用STOP和CONT等信号来启动和停止程序.调试器也可以这样做.问题是代码运行全速然后停止.使用Linux调度程序的大多数解决方案都会遇到此问题. 英特尔公司提供了某种线程分析器.我看到了Vtune发行说明.这是Vtune,但我很确定还有另一种工具来分析线程竞赛. 请参阅:英特尔线程检查器,可以检查某些线程争用情况.但我们不知道应用程序是否是多线程的?
Izk*_*ata 20
用途cpulimit
:
Cpulimit是一个限制进程CPU使用率的工具(以百分比表示,而不是以CPU时间表示).当您不希望它们吃太多CPU周期时,控制批处理作业很有用.目标是防止进程运行超过指定的时间比率.它不会更改nice值或其他调度优先级设置,而是更改实际的CPU使用率.此外,它能够动态,快速地适应整个系统负载.
使用的cpu量的控制完成了向进程发送SIGSTOP和SIGCONT POSIX信号.
所有子进程和指定进程的线程将共享相同的CPU百分比.
它在Ubuntu回购中.只是
apt-get install cpulimit
Run Code Online (Sandbox Code Playgroud)
以下是一些如何在已经运行的程序中使用它的示例:
通过可执行名称将进程'bigloop'限制为40%CPU:
Run Code Online (Sandbox Code Playgroud)cpulimit --exe bigloop --limit 40 cpulimit --exe /usr/local/bin/bigloop --limit 40
通过PID将进程限制为55%CPU:
Run Code Online (Sandbox Code Playgroud)cpulimit --pid 2960 --limit 55
Mik*_*ail 13
归档时间: |
|
查看次数: |
12531 次 |
最近记录: |