Articles of 亲和力

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

这个问题询问确保两个进程在同一个CPU上运行。 使用sched_setaffinity我可以限制一个进程到多个逻辑CPU,但我怎样才能确保这些映射到特定的物理CPU和线程? 我期望的映射将是: 0 – CPU 0线程0 1 – CPU 0线程1 2 – CPU 1线程0 3 – CPU 1线程1 等等… 其中左侧的数字是sched_setaffinity使用的相关CPU。 但是,当我试图testing这个时,看起来并不一定如此。 为了testing这个,我使用了CPUID指令,它返回EBX当前核心的初始APIC ID: void print_cpu() { int cpuid_out; __asm__( "cpuid;" : "=b"(cpuid_out) : "a"(1) :); std::cout << "I am running on cpu " << std::hex << (cpuid_out >> 24) << std::dec << std::endl; } […]

是否有可能在OS X中设置pthread CPU亲和力?

在Linux中有一个在sched.h中定义的sched_setaffinity()函数,但是我似乎无法在Mac OS X 10.6 pthreads实现中find类似的东西…如果无法设置关联,那么默认策略是什么在OS X中 ?

设置linux内核的cpu亲和力,不进行处理

我很难find关于如何设置linux内核的cpu亲和力(所有加载的模块)的信息,而不是针对特定的进程。 这是因为我希望内核始终在CPU 0上运行来处理I / O内容,而不是在其他3个CPU上运行任何开关,因为它可能会污染L1和L2caching。 提前致谢。 Nulik

如何使用sched_getaffinity(2)和sched_setaffinity(2)。 请给代码示例在C程序中使用

我在尝试着 并行运行16个副本(处理器固定)(每个内核2个副本) 在处理器固定的情况下(每个内核2个拷贝)同时运行8个拷贝,并在某个函数表示函数1完成后,将处理器内核翻转到最远的内核。 我面临的问题是如何select最远的处理器。 有些朋友build议使用sched_getaffinity(2)和sched_setaffinity,但我没有find任何好的例子。 请帮忙。

Linux找出超线程的核心ID

我今天上午花在了解如何确定哪个处理器ID是超线程核心,但没有运气。 我希望find这些信息,并使用set_affinity()将进程绑定到超线程线程或非超线程线程来分析其性能。

一个专门为我的过程核心

可能重复: 如何设置特定pthread的CPU亲和力? 在Linux中有一种方法可以禁用除一个进程之外的所有进程的一个内核吗? 我想只有一个核心保留,只为我的过程。 预期行为如下: 在我的过程后会产生的进程,不应该看到这个核心,并使用其他的。 当我的进程产生时,所有正在使用此内核的进程都应该切换到其他内核。

pthread_self()和gettid()之间有什么区别? 我应该使用哪一个?

我试图在Linux上设置线程的CPU亲和力。 我想知道以下哪种方法是推荐的: 使用pthread_self()获取线程ID 使用pthread_setaffinity_np(….)通过将线程ID作为参数来设置CPU关联 使用gettid()调用获取线程ID 使用sched_setaffinity(….)通过将线程ID传递给进程ID的位置来设置CPU关联 PS:在设置CPU亲和力之后,我打算增加线程的调度优先级。

CPU亲和力

是否有一个progamatic方法来设置Linux操作系统的c / c + +中的进程的CPU亲和力。

为什么将multithreading应用程序限制到一个内核会使其运行速度更快?

我有一个用C ++编写的本地multithreadingWin32应用程序,它有大约3个相对繁忙的线程和4到6个线程,这些线程没有那么多。 当它运行在正常模式下时,总共CPU使用率在8核机器上增加了大约15%,应用程序在大约30秒内完成。 而当我通过将亲和性掩码设置为0x01将应用程序限制为仅一个核心时,它在23秒内完成得更快。 我猜测它与限制在一个物理内核和/或一些并发内存访问问题上的同步更便宜有关。 我正在运行Windows 7 x64,应用程序是32位。 CPU是Xeon X5570,具有4个核心并启用了HT。 任何人都可以详细解释这种行为吗? 为什么会发生这种情况,以及如何提前预测这种行为? 更新:我想我的问题不是很清楚。 我想知道为什么它在一个物理内核上变得更快,而不是为什么在多个内核上它不会达到15%以上。

如何使用Java Native Access为Java.exe以外的进程设置进程关联?

虽然手动操作相当容易,但是我试图在Windows 7中为各种虚拟机初始创build时间自动设置cpu亲和性。 该项目是在Java中,我试图避免直接包括C代码,所以我一直在使用Java Native Access,它掩盖像winapi的东西。 我是图书馆的新手,虽然有一些基本的快速Googlesearchfunction,但还是缺乏教程或示例。 使用下面的代码,我可以设置主要Java进程的亲和性(本地的ffffffffffffffff),但其他进程仍然完全不受影响,即使我有权限使用任务pipe理器手动设置亲和力。 我也重复了从0到10000的所有整数,而不是input我知道有效的ID。 主要课程: import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.WinNT.HANDLE; public class SetAffinity { public static void main(String[] args){ int pid = -1; AffinityKernel instance = (AffinityKernel)Native.loadLibrary("Kernel32",AffinityKernel.class)); System.out.println(instance.SetProcessAffinityMask(new HANDLE(new Pointer(pid)), 1)); } } 工具界面: import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.WinNT.HANDLE; public interface AffinityKernel extends Kernel32{ public boolean SetProcessAffinityMask(HANDLE hProcess, int dwProcessAffinityMask); } […]