gpt4 book ai didi

windows - 为分析设置 CPU 亲和性

转载 作者:可可西里 更新时间:2023-11-01 11:48:39 31 4
gpt4 key购买 nike

我正在从事计算密集型 C# 项目,该项目实现了多种算法。问题是,当我想分析我的应用程序时,特定算法所需的时间会有所不同。例如,有时运行该算法 100 次大约需要 1100 毫秒,而另一次运行 100 次需要更多时间,如 2000 甚至 3000 毫秒。即使在同一次运行中,它也可能会有所不同。所以当我优化一段代码时,不可能衡量改进。这只是不可靠。

enter image description here

这是另一个运行:

enter image description here

所以基本上我想确保一个 CPU 专用于我的应用程序。 PC 有一个旧的双核 Intel E5300 CPU,在 Windows 7 32 位 上运行。所以我不能只设置进程亲和性而永远忘记一个核心。这会使计算机在处理日常任务时变得非常慢。我需要其他应用程序在我需要时使用特定的核心,当我完成分析时,CPU 亲和性恢复正常。拥有一个 bat 文件来完成任务将是一个极好的解决方案。

我的问题是:是否可以有一个 bat 文件来为 Windows 7 上的每个进程设置进程关联?

PS:算法是正确的,每次都运行相同的代码路径。我创建了一些对象池,所以在第一次运行后,分配了零内存。我还使用 dottrace 分析了内存分配,它在第一次运行后显示没有分配。所以我不相信算法运行时会触发 GC。物理内存可用且系统 RAM 不低。

结果: Chris Becke 的回答完全按照预期完成了工作并设置了进程亲和性。它产生了更统一的结果,特别是当 visual studio 和 dottrace 等后台应用程序正在运行时。对不同执行时间的进一步调查表明,不可预测性的根源是 CPU 过热。当温度超过 100C 时,CPU 过热警报关闭!所以在修复故障风扇后,结果变得完全一致。

最佳答案

你的意思是SetProcessAffinityMask

我看到这个问题,虽然标记的窗口是 c#,所以...我看到 System.Diagnostics.Process 对象有一个 ThreadAffinity 成员应该执行相同的功能。

我只是不确定这是否会像您期望的那样稳定 CPU 时间。除非另一个线程中断它,否则不执行 IO 的单个繁忙任务无论如何都应该保留在同一个内核上,所以我认为你的可变时间更多是由于其他线程/进程中断你的算法而不是操作系统随机将你的线程分流到不同的核心 - 因此,除非您为系统中的所有其他线程设置关联以排除您的首选核心,否则我看不到这有帮助。

关于windows - 为分析设置 CPU 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733845/

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