Articles of 亲和力

所有系统进程的Linux CPU亲和力

有没有办法将除我自己的进程的线程以外的所有系统进程设置为他们自己的CPU,而无需手动设置每个PID。 我在Fedora上使用C,并且想在程序启动之前设置它。

无法避免subprocessinheritance父进程的cpu关联

我想将父进程关联到一个特定的核心。 在下面的代码中,variablescore是用户提供的参数。 接下来,我想创buildNUM_CHILDREN进程,并且每个进程都以循环方式关联到其中一个内核。 subprocess打破了循环,并做了一些更多的工作(未在代码中显示)。 int child_core = 0; CPU_ZERO(&mask); CPU_SET(core,&mask); if (sched_setaffinity(0, len, &mask) < 0) { perror("sched_setaffinity"); } for(int i = 0 i < NUM_CHILDREN; i++) { pID = fork(); if (pID == 0) { /* child */ CPU_ZERO(&mask); CPU_SET(child_core,&mask); len = sizeof(mask); if (sched_setaffinity(0, len, &mask) < 0) { perror("sched_setaffinity"); } break; } […]

在Linux上获取进程和线程关联掩码

在Windows上,存在GetProcessAffinityMask API调用,并且还存在一种查找线程关联掩码的迂回方式,如下所示: 查询线程(而不是进程)处理器亲和力? 有什么方法可以在Linux中获取这些信息吗? 对sched_getcpu()的调用只返回线程当前正在运行的cpu,而不是其亲和性掩码。

在Mono(Linux)上为当前线程设置处理器关联

我正在编写一个自定义的任务调度程序,我想知道是否有任何方式来设置当前在Mono(在Linux上运行)线程的处理器亲和力。 对于在Windows上运行的.NET运行时,我设法通过在选定的处理器内核文章上遵循Lenard Gunda的运行.NET线程来工作; 然而,他的方法在Mono(和Linux)上失败,因为: 它需要对Kernel32.dll库中的GetCurrentThreadId进行P / Invoke调用。 当前Process.Threads属性返回Mono上的一个空集合。 有没有人请为此有一个解决方法?

taskset和sched_setaffinity之间的交互

谁能告诉我,如果我跑了会发生什么 taskset -c 7 ./fred.x 但是然后在fred.x里面fred.x一个线程正在调用sched_setaffinity来绑定到core 6? 那个线程是否会得到任何CPU时间,还是会无限期地闲置?

sched_getcpu()在Linux上可靠吗?

我试图debuggingLinux上的pthreads的一些性能问题,我认为sched_getcpu()可能是骗我。 它会为每个线程报告一个固定的CPU,而分析实验似乎表明这些线程实际上正在从一个核心迁移到另一个核心。 我不知道是否sched_cpu()只报告线程开始运行的第一个CPU,并且不知道线程迁移? 有没有其他人注意到这一点,或看到任何证据sched_getcpu()的返回值可能会改变? 如果它不可靠,有没有其他方法来跟踪当前的CPU(使用CPUID也许?)?

在PHP中设置CPU亲和力?

非常简单的问题 – 有没有办法通过PHP设置CPU亲和力? 以下任何一项都可以做到: 通过PHP调用设置当前进程的亲和力。 通过PHP调用设置特定PID的亲和力。 作为最后的手段,通过命令行工具设置特定PID的关联性。 到目前为止,我发现的唯一select是最后一个,使用一个名为schedutils的工具,似乎它只能在更新的内核上受支持。 Schedutils

Linux – 确保核心专门保存为关键任务

我有一个在基于Linux的机器上正确启动的进程。 假设我的过程是系统中唯一的过程(我将忽略其他过程甚至系统的过程)。 我的过程分为两部分: 关键性能代码 低优先级的代码 另外我们假设我的主进程是在Core 0上启动的,我想专门保留Core 1来获得关键性能代码。 我想把问题分成两部分: 我怎样才能确保我的过程中的每个线程(包括第三方库,我已经链接我的代码可能会调用pthread_create等)将始终打开新的线程在核心0? 我如何编写一个能够validationCore 1除了性能关键path之外什么都不做的testing呢? 我熟悉API,例如: pthread_setaffinity_np 可以设置一个特定的线程亲和力,但我想知道是否有更低层次的方法来确保第三方库创build(从进程内)的线程也将被固定到核心0。 也许我可以设置进程的默认亲和力为核心0和特定线程 – 将其固定到核心1?

未绑定的workqueue的kthreads CPU亲和力

有没有办法为未绑定的工作队列的k线程(那些名为kthread / uXX:y)设置CPU亲和力? 像普通工作队列的cpu掩码。 使用taskset为每个kthread设置它是个好主意吗?

CPU亲和力的优点和缺点

假设我有一个运行在多处理器系统(比如8个内核)上的multithreading应用程序(比如〜40个线程),而Linux作为操作系统,其中不同的线程本质上是由内核调度的LWP(轻量级进程)。 使用CPU亲和力有什么好处/缺点? CPU亲和力是否将通过将线程本地化到核心子集从而最大限度地减lesscaching共享/漏洞来提供帮助?