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

windows - 如何为 apache 服务设置处理器亲和性?

我有几个 apache 实例在 windows 机器上运行,为了避免 Python 的 GIL 造成的 IO 瓶颈,我需要设置 apache 的工作进程的亲和力。

Apache 会写入其主要看门狗进程的 PID,但从未写入包含嵌入式 WSGI (modwsgi) 的进程的 PID。

除了一次重新启动一项服务来查找新的 WSGI PID 并设置其亲和性之外,是否有更好的方法来记录 WSGI 进程的 PID,或者以某种方式标记 apache 服务以使用预定义的亲和性?

0 投票
1 回答
1505 浏览

linux - 如何确保进程在特定的物理 CPU 内核和线程中运行?

这个问题询问有关确保两个进程在同一个 CPU 上运行的问题。使用sched_setaffinityI 可以将进程限制为多个逻辑 CPU,但是如何确保将这些映射到特定的物理 CPU 和线程?

我希望映射是:

0 - CPU 0 线程 0
1 - CPU 0 线程 1
2 - CPU 1 线程 0
3 - CPU 1 线程 1
等等...

其中左边的数字是 中使用的相关 CPU sched_setaffinity

但是,当我尝试对此进行测试时,似乎情况并非如此。

为了测试这一点,我使用了以下CPUID指令,该指令返回当前内核的初始 APIC ID EBX

然后我循环遍历 cpu 掩码中的位并一次设置一个,以便操作系统将进程依次迁移到每个逻辑 CPU,然后我打印出当前的 CPU。

这就是我得到的:

假设 CPU 根据我上面列出的方案分配初始 APIC ID,看起来 cpu 掩码实际上并不对应于物理内核和线程。

如何找到掩码中位sched_setaffinity到物理内核的正确映射?

0 投票
3 回答
555 浏览

process - 为什么您需要特别了解每个处理器?

我很想知道 Windows 8 任务管理器似乎关注的每个虚拟处理器的细粒度细节背后的动机是什么。

这是一个屏幕截图(来自这里):

                Windows 8 任务管理器

我知道这种设置只能存在于非标准、昂贵、重要的服务器环境(1TB RAM!)中,但是热图有什么用呢?或者,设置处理器亲和性:

        处理器亲和性

我要问的是,在什么情况下开发人员会关心特定处理器 X 的使用量是否超过处理器 Y(而不是仅仅知道单个非多线程进程正在最大化一个内核,这将更好地显示为进程热图,而不是处理器热图),或者关心进程是否会使用这个或那个处理器(我不能指望人类比自动平衡算法更好地猜测)?

0 投票
3 回答
1402 浏览

c++ - 为 MATLAB 引擎设置处理器关联 (Windows 7)

我正在用 C++ 开发一个应用程序。该应用程序的组件之一使用 Matlab(通过 Matlab 引擎)进行数据处理。同时,数据采集系统正在将数据流式传输到磁盘。有时,在密集的 Matlab 处理期间,采集系统会崩溃。通过将 Matlab 的处理器亲和性设置为可用处理器的子集,这个问题得到了解决。然而,由于应用程序每天启动几次,并且在多台机器上,每次手动设置亲和度并不方便。通过快捷方式的命令行设置处理器关联的技巧不起作用,因为引擎是从我的应用程序中启动的,而不是通过快捷方式启动的。我一直在寻找一种以编程方式设置亲和力的方法,但收效甚微。

我考虑了以下选项(按优先顺序排列):

  1. 当引擎启动时,从应用程序中指定 matlab 引擎的处理器亲和性。
  2. 为 matlab 引擎指定一个默认的处理器关联,与完整的 Matlab 应用程序本身分开。
  3. 作为最后的手段,为 Matlab 设置默认亲和力(引擎和非引擎使用)。这是最不可取的,因为 Matlab 在部署机器上用于其他目的,最好不要将其限制为其他用途。

是否可以从我的应用程序中设置处理器亲和性,如果可以,如何设置?如果没有,解决这个问题的正确方法是什么?欢迎对这些选项或其他建议/解决方案提出任何建议。

0 投票
0 回答
511 浏览

matlab - 从 matlab 获取处理器亲和性

是否可以在运行时从 Matlab 环境中获得处理器亲和性?如果有怎么办?

0 投票
1 回答
1483 浏览

linux - 如何更改 Linux 中的默认处理器关联?

我想在运行 Linux 的多核系统上运行许多基准测试。我想为我的基准测试保留一个核心。我知道我可以sched_setaffinity用来将我的基准测试限制在该核心。我怎样才能让所有其他流程远离我的核心?换句话说,如何将所有进程的默认亲和性设置为不包括我的核心?

0 投票
1 回答
1461 浏览

process - 在 1 个 cpu 上绑定 1 个单个进程并在其他 CPU 上移动所有 IRQ、deamins、rpci

我有一台 16 核的 Linux 机器。

我想安排进程亲和性,以便 1 个 CPU 完全专用于 1 个进程。

当我说完全专用时,我的意思是我真的想将任何其他正在运行的守护进程IRQ-nnnn, rpciod/nn等绑定到所有可用的 CPU,除了我的进程感兴趣的那个。(在我的操作系统上,我可以数出大约 500 个进程)。

  1. 这样做是安全的还是我应该关心让它们中的一些在它们当前运行的 CPU 上?
  2. 如果我至少绑定 IRQ,性能会更好吗?

由于这些连接到经常触发的中断,因此它们会导致频繁的进程上下文切换,因为内核必须调用它们。

我期待以下好处:

  1. 因为会有一个进程运行一个 CPU,所以根本不会有进程上下文切换。
  2. 在该 CPU 上分配给我的进程的时间片将增加,因此它会在进程上下文切换(如果有)之前运行更长时间。

亲切的问候 AFG

0 投票
1 回答
1022 浏览

.net - 在进程与作业对象上设置优先级类和处理器亲和性

在 .NET 中,所有线程和子进程的处理器关联和优先级类都可以使用Process.ProcessorAffinityProcess.PriorityClass属性进行设置。使用作业对象似乎可以使用JOB_OBJECT_LIMIT_AFFINITYJOB_OBJECT_LIMIT_PRIORITY_CLASS标志设置相同的对象。

那么,在作业对象和流程上设置上述某些限制有什么区别?

编辑:一旦我将作业对象的限制设置为较低的值,低权限进程仍然可以覆盖它们。这是否意味着工作对象限制没有得到加强?如何限制低权限帐户/进程覆盖它们?

设置什么:

低权限进程如何覆盖它:

0 投票
3 回答
29232 浏览

c - 如何在 Linux 中从 C 中使用 sched_getaffinity 和 sched_setaffinity?

我在尝试着:

  • 在处理器固定的情况下同时运行 16 个副本(每个内核 2 个副本)

  • 在处理器固定(每个内核 2 个副本)的同时运行 8 个副本,并在某些功能(例如功能 1)完成后将处理器内核翻转到最远的内核。

我面临的问题是如何选择最远的处理器。

一些朋友建议使用 sched_getaffinity 和 sched_setaffinity 但我算没有找到任何好的例子。

0 投票
2 回答
293 浏览

c - Linux cpu_affinity 保证单次使用

可以在 linux 中为每个线程在每个内核上运行的多线程程序设置 cpu 亲和性,从而有效地阻止任何其他进程被该内核上的操作系统调度。实际上,我想保证在我的进程中使用一个核心,并将所有其他非关键程序绑定到最少数量的核心。

或者我是否缺少 linux 调度程序的某些内容,或者我需要自己的调度程序。