- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果我有一个长时间运行的进程,它在完成工作时平均使用 10% 的 CPU,并且我并行运行它的两个副本,我可以预期它们总共使用 20% 的 CPU中央处理器。或者,如果我在速度两倍的不同 CPU 上运行一个副本,我预计它会使用该 CPU 的 5%。
我想做的是处理此类进程的 CPU 要求,但以合理的 CPU 相关方式,即不是百分比。
我想知道通过将其 CPU 百分比乘以我测量它的机器的 bogomips 数,为这样的应用分配一个简单的“每秒需要的周期数”数字可能有多大意义。也就是说,在 bogomips 值为 1000 的机器上使用 10% CPU 的进程可以说每秒需要 100,000,000 条(伪造的)指令。
(免责声明:我当然知道 bogomips 是伪造的,指令不等于周期,周期和指令时序在不同的处理器系列之间根本不可比。我在这里寻找粗略的线性比较,而不是精确计数。)
更详细一点:假设我有一个系统,其中有各种各样的长时间运行的进程在一台可能受 CPU 限制的机器上运行。我可能想提前预测它们是否都能在 CPU 不重载的情况下运行。或者我可能想要执行检查(简单的检查),以确保没有进程使用比预期更多的 CPU。我愿意提前根据经验衡量每个过程的性能,以帮助我做出这些预测并实现这些检查。我在这里探索的是,衡量性能的正确单位是什么?
例如,今天我可能在处理器 X 上运行进程 A、B、D、E 和 H。我可能会观察到进程使用的 CPU 百分比为 10%、5%、1%、5% 和 20% , 分别。 10+5+1+5+20 是 41,41 小于 100,所以我很好。
但明天我可能想在以一半时钟速率运行的不同处理器 Y 上运行进程 A、B、C、H 和 J。即使我也对进程 C 和 J 的性能有所了解,当 CPU(百分比所在的)是一个移动目标时,尝试基于百分比进行数学计算似乎不必要地困惑。
如前所述,我可能还想为每个长时间运行的进程分配一个明确的 CPU“预算”,为了理智起见,我可能希望该预算随着时间的推移保持合理有效。也就是说,我可能想说进程A每秒只允许使用100,000,000个周期。如果它曾经使用过 150,000,000,那就有问题了。但是,如果明天我将所有内容都转移到速度提高 2 倍的 CPU,我不希望进程 A 能够使用两倍的 CPU,因为我可能会考虑将额外的 CPU 能力用于其他进程。
最后,如果这有任何意义,并且如果乘以 bogomips 不是做我想做的事情的好方法,有人有更好的主意吗?
(哦,还有一个免责声明:对于多处理器机器和多核处理器,这个问题显然变得更加复杂。我稍后会担心这些额外的皱纹,而不是今天。)
最佳答案
完全不合理。不,认真的。确实,有人提议删除 bogomips,正是因为它们毫无意义,但由于它破坏了某些用户的功能而被覆盖:https://lwn.net/Articles/627930/ (搜索“bogomips”)。
关于linux - 使用 bogomips 估计 cpu 周期有多合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34641836/
我有一个曾经是 TreeView 控件的菜单,但现在我想让每个项目更加直观,并向树中的每个对象添加更多信息。 我的第一个意图是制作一个代表项目的用户控件,并在运行时将它们添加到面板中。这是一个好方法吗
我是 Docker 新手,想知道是否有可能(并且是一个好主意)在 Docker 容器中进行开发。我的意思是创建一个容器,执行 bash,安装和配置我需要的一切,然后开始在容器内进行开发。 容器将成为我
在 Java 中: Parent obj = new Child(); 我创建了一个 Parent 类型的对象。我假设我只能调用父类中定义的方法。因此,我无法调用 Child 中定义的“附加”方法或访
注意:我省略了其他两个阶段(V 和 W)的代码,示例中不需要。 我很确定,我这样处理“开”和“关”时间的方式并不是一种有效的方式。 我想使用查找表实现“开”和“关”脉动。计时器应与表的当前选定值进行比
当代码中包含 Java instanceof 运算符时,许多人会扬起眉毛并说这是禁忌。例如,在这个 other SO Q&A ,答案说: Note that if you have to use th
我是一名优秀的程序员,十分优秀!