问题标签 [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 投票
4 回答
2718 浏览

c++ - 用于检测 APIC id 的代码为不同的逻辑处理器返回相同的 id

我在基于 Intel Core2 的 Win2k3 机器上运行我的 NT 服务,我需要遍历所有逻辑 CPU(进程关联中的所有位)。为此,我调用 GetProcessAffinityMask() 来检索系统关联掩码,然后将进程依次切换到每个处理器:

在每次迭代中,我从这里调用代码来检索当前处理器 APIC id。问题是对于不同的处理器,它有时会返回相同的 APIC id。根据文档,系统中的每个处理器都必须具有相同的 ID。

我试过调试这个 - 检查 Windows 是否真的改变了亲和力:

它准确地返回了我期望的关联掩码,但不同处理器的 APIC id 仍然可以相同。

这种奇怪的情况有解释吗?

0 投票
1 回答
170 浏览

windows - 设置亲和性是否确保只使用一个核心资源?

我只是想知道设置 cpu 亲和力是否确保应用程序仅在该核心上运行?

0 投票
2 回答
2684 浏览

bash - 在 Bash 中取反无符号数

我有一个数字(十六进制),我想要它的补码。例如,如果X = 20我想让 bash 执行否定并返回Y = ~X = DF。它不必在 bash 中,但它应该使用我可以包装到脚本中的常用命令行工具。另请注意,这些数字都应该是无符号的,我希望它们不会溢出可用的位(例如,20只有 8 位,所以输出应该是 8 位的反码)。

我使用 bash 和 bc 尝试了各种方法,但没有找到合适的组合。有任何想法吗?

(如果有人关心,目标是将 IRQ 关联设置到特定 CPU,然后将其他 IRQ 设置到所有其他处理器。)

0 投票
1 回答
797 浏览

multithreading - 立即使用 sched_setaffinity() 对 cpumask 进行更改

我正在编写一个 linux 内核模块,该模块需要将两个线程固定在两个不同的 cpu 上。我计划在将 sched_setaffinity() 导出到内核后使用它。是否还有其他相同的导出功能?

另外,如果我在 cpumask 中只设置了 1 个 CPU,线程会立即移动到该 cpu 吗?如果没有,我该如何执行?在 sched_setaffinity() 之后调用 schedule() 会有所帮助吗?

0 投票
2 回答
5733 浏览

linux-kernel - Linux内核模块的处理器关联设置?

在 Windows 中,我可以使用 KeSetSystemAffinityThread 设置驱动程序代码的处理器亲和性,并使用 KeGetCurrentProcessorNumber 检查我的代码在哪个处理器上运行。

我正在尝试在 Linux 内核模块中做类似的事情,但我能看到的唯一关联调用是针对用户态进程的。有没有办法做到这一点,以便我可以在特定处理器上运行汇编代码?(即新加坡元)

编辑:

我想我已经弄清楚如何获得当前的处理器了。smp_processor_id() 似乎应该可以工作。

0 投票
2 回答
8224 浏览

windows - 识别处理器(核心)被特定线程使用

我想知道是否可以通过特定的线程识别物理处理器(核心)thread-id

例如,我有一个多线程应用程序,它有两 (2) 个线程(例如thread-id = 10thread-id = 20)。我在具有双核处理器(核心 1 和核心 2)的系统上运行应用程序。那么,如何获取线程使用的核心数thread-id = 20

PS Windows 平台。

谢谢,

丹尼斯。

0 投票
1 回答
618 浏览

c# - 为什么 PerformanceCounter 的 NextValue 调用会更改线程关联掩码

我有一个 C# 项目,我必须在其中访问我的处理器的当前工作负载,并确保我在处理器的每个内核上运行一些特定的代码。我的问题是,访问我的处理器的工作负载似乎阻止我正确分配线程关联掩码。我这里有一些代码,可以说明问题:

运行此代码会产生以下输出:

因此,似乎 cpuUsage.NextValue 调用以某种方式更改了线程关联掩码,并且也使得无法将掩码更改为 1。确实有道理,Nextvalue 调用必须以某种方式与线程关联掩码交互,如果它正在汇总每个内核的性能计数,但我无法理解,为什么它会影响未来对线程关联掩码的更改。有人对此问题有解释或解决方法吗?

0 投票
1 回答
223 浏览

ruby-on-rails - How to build/mantain an affinity score between 2 users?

I mean analyzing 2 users profiles I get a score that it is reciprocal
a.affinity(b) == b.affinity(a)

I'd like to know in particular:

  • which schema would u use to implement the affinity table

  • which db mysql, redis,..

  • which technology would you use to update the affinity score in background?

Thanks

0 投票
2 回答
1146 浏览

c - 实现 include/sched.h 函数

我想研究如何将线程手动分配给多核机器上的特定内核。我发现 include/sched.h 定义了一些可以对此有所帮助的宏和函数(sched_setaffinity 等)。但是,这些函数是外部的,我找不到它们的定义。这些功能是否在任何地方实现?如果是,在哪里以及是否可以覆盖默认实现?如果没有,我该如何实施它们?

添加新的实现是否意味着我必须重新编译我的 Linux 内核?

0 投票
2 回答
5462 浏览

multicore - 是否可以防止子代继承父代的 CPU/核心亲和性?

关于 Java 程序,我对在 Linux 上执行此操作特别感兴趣。已经有一些问题表明您无法控制 Java,并且 Sun/Oracle 关闭了一些 RFE。

如果您可以访问源代码并使用低级语言,您当然可以进行相关的系统调用。然而,沙盒系统——可能没有源代码——提出了更多的挑战。我原以为设置此每个进程或内核参数的工具能够从父进程外部控制它。这真的是我所追求的。

我理解为什么这是默认设置的原因。看起来某些版本的 Windows可能允许对此进行一些控制,但大多数都不允许。我期待 Linux 允许控制它,但似乎它不是一个选项