问题标签 [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.
c# - 为什么要为线程设置 ProcessorAffinity?
我一直无法找到一个很好的解释来解释为什么多线程可执行文件要为每个线程设置 ProcessorAffinity。对我来说,这似乎是在试图覆盖 CLR/操作系统;我认为我不够聪明去做的事情。
为什么我要参与为多核系统上的线程设置 ProcessorAffinity?
linux - linux:在汇编语言(NASM)中设置进程核心亲和性
我有一个问题,我想知道是否可以使用汇编程序设置 linux 进程的处理器核心亲和力。我正在使用 nasm 进行组装。创建进程时存在中断,但我不知道如何设置核心亲和力。提前谢谢。
linux - 将所有操作系统进程绑定到一个 CPU
有没有办法限制类 linux 操作系统的物理 CPU 的使用?我一般不想限制 CPU 数量我只想将所有系统进程绑定到一个 CPU 并在其他 CPU 上运行其他软件。
c++ - C++ 多线程和亲和性
我正在为我的应用程序编写一个简单的线程池,我在双核处理器上进行了测试。通常它运行良好,但我注意到当其他进程使用超过 50% 的处理器时,我的应用程序几乎停止。这让我很好奇,所以我决定重现这种情况并创建辅助应用程序,它只是运行无限循环(没有多线程),占用 50% 的处理器。当辅助程序运行时,多线程应用程序几乎像以前一样停止(处理速度从每秒 300-400 个任务下降到每秒 5-10 个任务)。但是,当我将多线程程序的进程亲和性更改为仅使用一个内核(辅助仍然使用两者)时,它开始工作,当然最多使用剩余 50% 的处理器。当我在我的应用程序中禁用多线程(仍在处理相同的任务,但没有线程池)时,它就像魅力一样工作,没有任何辅助设备减速,它仍在运行(这就是两个应用程序在两个内核上运行时应该表现的方式)。但是当我启用多线程时,问题又回来了。
我制作了特殊的代码来测试这个特定的线程池:
标题
和.cpp
它是如何测试的:
我已经在 Win7 64 上使用 mingw 和 gcc 4.8.1(从这里)和 Visual Studio 2012 (VC11) 构建了这段代码,都在调试配置上。
使用上述编译器构建的两个程序的行为完全不同。
a) 使用 mingw 构建的程序比在 VS 上构建的程序运行得快得多,因为它可以占用整个处理器(系统显示此过程几乎 100% 的 CPU 使用率,所以我不认为 mingw 偷偷将亲和力设置为一个核心)。但是当我运行辅助程序(使用 50% 的 CPU)时,它会大大减慢(大约几十倍)。在这种情况下,主程序和辅助程序的 CPU 使用率约为 50%-50%。
b) 使用 VS 2012 构建的程序,当使用整个 CPU 时,甚至比 a) 速度慢(当我设置 task_size = 1 时,它们的速度相似)。但是当辅助程序运行时,主程序甚至占用了大部分 CPU(使用率约为 66% 主程序 - 33% 辅助程序),因此导致的减速几乎不明显。
当设置为仅使用一个核心时,两个程序都明显加快了速度(大约 1.5 - 2 倍),并且 mingw 一个不再容易受到竞争的影响。
嗯,现在我不知道该怎么办。我的程序在由两个不同的工具集构建时表现不同。这是我的代码中的一个缺陷(假设是真的),还是与 c++11 有问题的编译器有关?
windows - 使用 Windows 脚本更改进程的亲和性
在 Windows 中,使用
我可以设置 app.exe 的亲和力(app.exe 使用的核心数)。
使用 windows 脚本,如何更改正在运行的进程的亲和力?
windows - 在powershell中,在启动过程中设置亲和力
在powershell中,我可以启动一个进程
我尝试设置亲和力
....没有工作。
在 windows powershell 中,当我启动一个进程时,我如何设置亲和力?
linux-kernel - 可以使用 MSI-X 设备设置 IRQ 关联(Linux)吗?
我过去在 Linux 上通过设置 proc 文件的值来设置 IRQ 关联。[1] 但是,我注意到,当我在将 MSI-X 用于我想为 NIC 设置亲和性的设备 (PCIe) 的系统上执行此操作时,/proc/interrupt 计数器会为 IRQ 的每个核心递增,并且不适用于我为其设置的单核。在非 MSI-X 系统中,指定内核响应中断的位置。
我正在使用 Linux 内核 3.11。
简短:可以为使用 MSI-X 中断的设备设置 IRQ 关联吗?
[1] https://www.kernel.org/doc/Documentation/IRQ-affinity.txt
android - 做或不做:修改线程亲和性以提高性能
我在这里有一个数学密集型的 Android 应用程序,它可以实时生成音频。它生成声音数据,如果不是不可能修改这个过程来支持多线程,这个过程是很困难的。
测试系统是基于 ARM 的四核 CPU(Nexus 4、Nexus 7)和一个具有超线程的双核 x86 Atom(Asus Memo Pad FHD 10)。
我面临的问题是android调度程序不断在多个内核上移动我的线程,我每次都会丢失所有缓存,性能可能会好得多。当我将线程的亲和性设置为单核时,我得到了巨大的性能提升。
您会建议在移动设备上这样做还是“不行”?
java - Java 进程与线程关联的线程
我最近编写了一些代码[1][2],尝试使用 JNA 进行调用,sched_setaffinity
以尝试将进程的亲和性设置为特定的核心。函数的第一个参数sched_setaffinity
是进程 ID。
使用 pid 为 0(指进程本身)调用函数可以正常工作。但是,我希望能够基于线程 id 而不是进程来设置亲和力。有什么办法可以做到吗?
c++ - Why do I get such huge jitter in time measurement?
I'm trying to measure a function's performance by measuring the time for each iteration. During the process, I found even if I do nothing, the results still vary quite a bit.
e.g.
In measure.end(), I measure the time difference and keep an unordered_map to keep track of the time-count. I've used clock_gettime as well as rdtsc, but there's always about 1% of the data points lie far away from mean, in a 1000 factor.
Here's what the above loop generates:
So whether it's ticks or ns, the worst case 22800 is about 1000 times bigger than mean.
I did isolcpus in grub and was running this with taskset. The simple loop almost does nothing, the hash table to do time-count statistics is outside of the time measurements.
What am I missing?
I'm running this on a laptop with ubuntu installed, CPU is Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz