gpt4 book ai didi

.net - 限制程序集执行的 cpu 周期数

转载 作者:行者123 更新时间:2023-12-02 00:46:46 25 4
gpt4 key购买 nike

我有一个项目动态加载未知程序集实现指定的接口(interface)。除了实现我的界面外,我不知道程序集的内容或用途。

我需要以某种方式限制这些程序集可用的处理能力。处理器优先级不是我要找的。我不能使用秒表并为程序集分配一定的时间来运行,因为服务器可能很忙。

最理想的情况是,我想指定一些完全与负载无关的 CPU 使用量度。如有必要,我可以在它们自己的进程中运行程序集。

有没有办法以某种方式测量给定线程(或进程,尽管线程是最佳的)的总超时 CPU 使用率?

我是否可以使用进程性能计数器,或者我怀疑它们是否太不可靠?虽然我不需要周期精度,但我需要相当高的精度来限制分配给每个程序集执行的计算能力。


稍微推断一下我的情况。我不寻找流程优先级的原因是我不怕耗尽我的资源,我只需要确保我可以衡量给定程序集使用的“多少”资源 - 因此我对服务器的看法是任意的忙。

想象一下您有两个程序集 X 和 Y 的示例场景。每个程序集都实现了一个给定的算法,我想做一个原始测试,看看哪个程序集能最快完成工作。我运行每个程序集并让它运行直到它使用“Z”资源,此时我评估哪个程序集做得最好。在这种情况下,我不介意一个程序集是否以 100% CPU 运行 3 秒,而另一个以 2% CPU 运行超过 5 分钟 - 重要的是总资源使用量。

我在想我也许可以使用 CPU 时间性能计数器来做一个粗略的限制。在新线程中运行每个程序集并让它运行,直到它使用了给定的 CPU 时间,此时我将终止进程并评估结果。我只是担心它不够准确。

最佳答案

我想我记得 Terrarium 做了一些与您想要的类似的事情我建议看一下 http://www.codeplex.com/terrarium2 .

不幸的是,我认为您没有简单的方法来通过配置加载 DLL 的 AppDomain 来做到这一点。您可能必须重新实现 Terrarium 的功能。

关于.net - 限制程序集执行的 cpu 周期数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/234411/

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