我想指定特定pthread的cpu-affinity.到目前为止,我发现的所有引用都涉及设置进程的cpu-affinity(pid_t)而不是线程(pthread_t).我尝试了一些传递pthread_t的实验,正如预期的那样,它们会失败.我想做一些不可能的事吗?如果没有,你能发一个指针吗?太感谢了.
是否有一种编程方法可以为Linux操作系统在c/c ++中为进程设置CPU亲和性.
可能重复:
如何设置特定pthread的CPU亲和性?
Linux中是否有一种方法可以为除一个进程之外的所有进程禁用一个核心?我想只保留一个核心,仅用于我的流程.
预期的行为如下:
有没有办法以编程方式设置"任务亲和力"?我的意思是喜欢一些Intent旗帜或某事?我没有在Android文档中找到任何关于这一点的内容.
使用"android:taskAffinity"在AndroidManifest.xml中以静态方式设置关联不符合我的需要.
我正在尝试在Linux上设置线程的CPU亲和性.我想知道推荐以下哪种方法:
使用pthread_self()获取线程ID
通过将线程id作为参数传递,使用pthread_setaffinity_np(....)设置CPU关联
使用gettid()调用获取线程ID
通过在进程id的位置传递线程id,使用sched_setaffinity(....)设置CPU关联
PS:设置CPU亲和性后,我打算增加线程的调度优先级.
我正在使用该start /AFFINITY [n] [.exe]命令以指定的亲缘关系启动可执行文件.我有一个带8个处理器的系统(1,2,3,4,5,6,7,8).我想设置进程使用所有奇数处理器(1,3,5,7).我无法弄清楚如何做到这一点,并想知道是否可以使用start命令.如果没有,是否有另一种命令行方式呢?
start命令的帮助不是特别有用:
AFFINITY Specifies the processor affinity mask as a hexadecimal number.
The process is restricted to running on these processors.
The affinity mask is interpreted differently when /AFFINITY and
/NODE are combined. Specify the affinity mask as if the NUMA
node's processor mask is right shifted to begin at bit zero.
The process is restricted to running on those processors in
common between the specified affinity mask and the NUMA node.
If …Run Code Online (Sandbox Code Playgroud) 我正在研究一种工具,让学生自我评估他们的编程作业的表现.特别是,他们编写的程序是多线程的,我没有直接的方法来影响创建的线程数.我想在给定不同数量的内核的情况下比较其程序的性能(理想情况下,它们的程序应该大致成比例地加速它允许使用的内核数量).
我们可以将一个位掩码传递给Process.SetAffinity来控制程序使用的核心.
这在使用超线程并将每个物理核心分成两个逻辑核心的i5和i7机器上存在问题.我希望程序在两个/四个不同的物理内核上运行.在我的i7机器上,亲和力设置为3(核心0和1)的进程将大致与单个核心上的程序一样快(表示这些逻辑核心共享相同的物理核心),但亲和力设置为5(核心0和3)它运行得更快(表明这些内核使用不同的物理内核).但是,我没有找到一种可靠的方法(除了反复试验)来确定这一点.
我如何(没有实验)确定哪些逻辑核共享相同的物理核心?
(/ proc/cpuinfo具有我需要的信息,但在Windows机器上不可用.)
我在尝试着:
使用处理器固定同时运行16个副本(每个核心2个副本)
在处理器固定(每个核心2个副本)的同时运行8个副本,并在某个功能说功能1完成后将处理器核心翻转到最远的核心.
我面临的问题是如何选择最远的处理器.
有些朋友建议使用sched_getaffinity和sched_setaffinity,但我认为没有找到任何好的例子.
有没有办法强制进行具有特定PID的进程,只能在服务器的一个cpu上执行和运行?我知道有这样的命令
taskset -cp <Cpu_Number> <Pid>
Run Code Online (Sandbox Code Playgroud)
但上面的命令在我的系统上不起作用.如果还有其他命令,请告诉我.
在Windows中,用
START /node 1 /affinity ff cmd /C "app.exe"
Run Code Online (Sandbox Code Playgroud)
我可以设置app.exe的亲和力(app.exe使用的核心数).
使用Windows脚本,如何更改正在运行的进程的亲和力?