gpt4 book ai didi

limit - 如何限制赋予特定程序的处理能力?

转载 作者:行者123 更新时间:2023-12-01 05:42:15 25 4
gpt4 key购买 nike

我在带有双核 amd 1.8 GHz 处理器的笔记本电脑上进行开发,但人们经常在弱得多的系统(例如 300 MHz ARM)上运行我的程序。

我想在我的笔记本电脑上模拟这样的弱环境,这样我就可以观察我的程序是如何运行的。它是一个交互式应用程序。

我查看了 qemu,我知道如何设置环境,但它有点痛苦,而且我没有看到使 qemu 模拟较弱的 CPU 所需的开关的确切咒语。

我有 virtualbox,但似乎我不能虚拟化少于 1 个完整的主机 cpu。

我知道 http://cpulimit.sourceforge.net/它使用 sigstop 和 sigcont 来尝试限制提供给进程的 CPU,但我担心这并不是对较弱 CPU 的准确描述。

有任何想法吗?

最佳答案

如果你的 CPU 是 1800 MHz,你的目标是 300 MHz,你的代码是这样的:

while(1) { /*...*/ }

你可以像这样重写它:
long last=gettimestamp();
while(1)
{
long curr=gettimestamp();
if(curr-last>1000) // out of every second...
{
long target=curr+833; // ...waste 5/6 of it
while(gettimestamp()<target);
last=target;
}

// your original code
}

哪里 gettimestamp()是您操作系统的高频计时器。

您可以选择使用较小的值以获得更流畅的体验,例如每 100 毫秒中的 83 毫秒,或每 10 毫秒中的 8 毫秒,依此类推。你走得越低,精度损失就越多,这会毁了你的数学。

编辑:或者这个怎​​么样?创建第二个进程,启动第一个进程并将自身作为调试器附加到它,然后定期暂停它并根据上述算法恢复它。

关于limit - 如何限制赋予特定程序的处理能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com