问题标签 [affinity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
35143 浏览

c - 如何在 Linux 中为 C 或 C++ 的进程设置 CPU 亲和性?

是否有一种编程方法可以为 Linux 操作系统的 c/c++ 中的进程设置 CPU 亲和性?

0 投票
3 回答
3166 浏览

winapi - 将逻辑处理器映射到物理处理器

在双四核GetProcessAffinityMask(或 taskman.exe 中“设置关联”的对话框)上,将报告八个逻辑处理器。如何找出哪个逻辑处理器在哪个物理处理器上?特别是:哪些逻辑处理器在同一个物理处理器上?

编辑:如果无法以编程方式执行此操作,是否有人知道法线映射是什么?是第一个处理器上的前四个,第二个处理器上的后四个,还是第一个处理器上的奇数编号和第二个处理器上的偶数编号?

0 投票
8 回答
25384 浏览

windows-xp - 如何在 Windows XP 中的可执行文件上设置处理器关联?

我有一个带有第三方应用程序的四核系统,它偶尔会旋转几个进程(总是相同的可执行文件,但它有几个实例)并占用 100% 的 CPU 时间。我还在同一个盒子(IIS 和第三方)上运行了几个 Web 服务。

所有核心都忙的问题是它使这个第三方 Web 服务器超时(IIS 工作正常,只是比平时慢)。我无法控制第三方网络服务器,它是更大产品的一部分并且必须能够运行。因此,我尝试使用处理器亲和性(通过 SysInternals Process Explorer)并将那些讨厌的进程限制为 4 个内核中的 3 个内核,并将第 4 个内核专用于第三方 Web 服务器,它似乎工作得很好。

问题是它只在正在运行的进程上设置亲和力,而不是在可执行级别上,所以在这些进程完成并稍后作为新进程重生之后,它又是一样的——它们占用了所有 4 个内核。因此,我在 Google 上搜索了 Microsoft 提供的这个 ImageCfg.exe 实用程序,但我无法在 Microsoft 网站上找到它以供下载,我看到有些人尝试过它,但现在抱怨它并没有真正起作用。

有没有办法将亲和力与可执行文件联系起来?

0 投票
3 回答
29295 浏览

windows-xp - 如何从 Windows XP 的批处理文件中设置处理器关联?

我有一台双处理器机器,我想通过两个处理器上的批处理文件启动可执行文件。

例如:(1) 在处理器 1 上启动 Notepad.exe,以及 (2) 同时在处理器 2 上启动 Notepad.exe

目前,我在批处理文件中使用以下内容,因为我的可执行文件“难以”启动并且需要返回才能在启动时运行:echo.|DoStuff.exe

因此,我想启动它并让它在每个处理器上运行。

感谢您提供的任何反馈。

PS我不认为“开始”对我有用,因为我需要将返回字符发送到可执行文件,如上图所示。

PSS 这适用于 Windows XP 解决方案。谢谢。

0 投票
4 回答
5881 浏览

benchmarking - 为什么一个 CPU 内核会比其他内核运行得慢?

我正在对一个大型科学应用程序进行基准测试,发现在相同的输入下它有时会慢 10%。经过大量搜索,我发现只有当它在我的四核 CPU 的核心 #2 上运行时才会出现减速(特别是运行在 2.4 GHz 的 Intel Q6600)。该应用程序是单线程的,大部分时间都花在 CPU 密集型矩阵数学例程中。

现在我知道一个内核比其他内核慢,我可以通过将处理器亲和性设置为所有运行的同一内核来获得准确的基准测试结果。但是,我仍然想知道为什么一个核心更慢。

我尝试了几个简单的测试用例来确定 CPU 的慢速部分,但测试用例的运行时间相同,即使在慢速核心 #2 上也是如此。只有复杂的应用程序表现出放缓。以下是我尝试过的测试用例:

  • 浮点乘法和加法:

    /li>
  • 三角函数:

    /li>
  • 整数加法:

    /li>
  • 尝试使 L2 缓存未命中时的内存复制:

    /li>

问题:为什么一个 CPU 内核会比其他内核慢,以及 CPU 的哪一部分导致了速度变慢?

编辑:更多测试显示了一些Heisenbug行为。当我明确设置处理器关联时,我的应用程序不会在核心 #2 上减慢速度。但是,如果它选择在没有明确设置处理器亲和性的情况下在核心 #2 上运行,则应用程序的运行速度会慢约 10%。这就解释了为什么我的简单测试用例没有表现出同样的减速,因为它们都明确地设置了处理器亲和性。因此,看起来有一些进程喜欢在核心#2 上运行,但如果设置了处理器亲和性,它就会不受干扰。

底线:如果您需要在多核机器上对单线程程序进行准确的基准测试,请确保设置处理器亲和性。

0 投票
2 回答
1279 浏览

assembly - 在多核 x86 处理器中设置关联

(我之所以这么问,是因为我是在严肃的 SMP 和多核之前学习操作系统的。我喜欢对代码的执行方式有一些了解。)

如果我有一个多核 x86 CPU 直接启动到我的程序中。有人可以推荐一个描述我必须控制亲和力的汇编器命令的网站吗?

0 投票
3 回答
11040 浏览

c# - 如何设置程序的 CPU 亲和性?

我有一个用 C# 编写的程序,我正在使用 VSTS 2008 + .Net 3.5 + Windows Vista Enterprise x86 来开发一个 Windows 窗体应用程序。

我当前的计算机是双核 CPU,我想将我的程序的 CPU 亲和性设置为在特定 CPU 上运行并释放另一个 CPU 来完成其他工作。任何想法如何做到这一点?通过编码或配置都可以。

还有一点背景是,我的程序是 CPU 密集型的,所以我不想让它占用我电脑上的所有两个 CPU 资源,我想释放一个 CPU 以便我可以同时快速浏览网络。:-)

提前谢谢,乔治

0 投票
1 回答
533 浏览

c# - 父窗口和线程亲和性

我有一个 WinForms 应用程序,我想在其中执行一些长时间运行的操作,例如想象 Explorer 并行复制 2 个大文件。对于每一个长时间运行的操作,我将启动一个单独的 UI 线程(包括发送消息/Application.Run/Application.ExitThread),在其中创建IProgressDialog的实例。

我想知道 - 由于 Windows 的线程亲和力 - 将主窗体的句柄打包到 HandleRef 中并将其作为进度对话框的所有者/父级传递(位于不同的 UI 线程上)是否合法?我没有从辅助 UI 线程访问主窗口的句柄(在调试模式下没有跨线程异常),只是将它传递给本机函数。

谢谢。

0 投票
1 回答
2927 浏览

linux - 如何从 Linux 内核模式设置进程的亲和性?

如何在内核模块中设置进程的 CPU 亲和性?在用户模式下有一个 syscall sched_setaffinity,但我正在寻找内核模式等价物。

在 Linux 内核代码中,还有一个函数叫做sched_setaffinity. 它是从被调用的sys_sched_setaffinity函数中调用的system_call。从表面上看,这是我想要使用的功能。不过,它与系统调用同名的事实让我有点不安。

但众所周知,最好的办法就是尝试一下。所以我做了,我的模块编译了。但是,当我尝试加载模块时,它抱怨名称sched_setaffinity未定义。

0 投票
5 回答
84061 浏览

multithreading - 如何设置特定 pthread 的 CPU 亲和性?

我想指定特定 pthread 的 cpu 亲和性。到目前为止,我发现的所有参考资料都涉及设置进程 (pid_t) 而不是线程 (pthread_t) 的 cpu 亲和性。我尝试了一些通过 pthread_t 的实验,但正如预期的那样,它们失败了。我在尝试做一些不可能的事情吗?如果没有,您可以发送一个指针吗?太感谢了。