当前位置: 首页 > 面试题库 >

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

乐正宜人
2023-03-14
问题内容

我在尝试着:

  • 与处理器固定同时运行16个副本(每个内核2个副本)

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

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

一些朋友建议使用sched_getaffinity和sched_setaffinity,但我认为找不到任何好的示例。


问题答案:

要使用sched_setaffinity使当前进程在核心7上运行,请执行以下操作:

cpu_set_t my_set;        /* Define your cpu_set bit mask. */
CPU_ZERO(&my_set);       /* Initialize it all to 0, i.e. no CPUs selected. */
CPU_SET(7, &my_set);     /* set the bit that represents core 7. */
sched_setaffinity(0, sizeof(cpu_set_t), &my_set); /* Set affinity of tihs process to */
                                                  /* the defined mask, i.e. only 7. */

有关更多信息,请参见http://linux.die.net/man/2/sched_setaffinity和http://www.gnu.org/software/libc/manual/html_node/CPU-
Affinity.html



 类似资料:
  • 问题内容: 我想使用系统蜂鸣器(并且只有在没有蜂鸣器/无法访问蜂鸣器时才使用扬声器)生成具有特定频率和长度(针对不同的声音信号)的蜂鸣声。我知道可以通过使用ioctl来做到这一点,但这需要root访问权限,而这是我所不希望的。 我知道我可以只使用“ beep”命令,但这将是一个依赖关系,如果可能的话,不应使用它(根本没有外部依赖关系,只有基本的linux库和C)。 我目前拥有的是以下代码(但这需要

  • 问题内容: 我需要一个跨平台的解决方案来清除用C ++编写的Linux和Windows中的控制台。这样做有什么功能吗?另请注意,我不希望最终用户程序员必须更改程序中的任何代码以使其在Windows vs Linux中清晰可见(例如,如果必须在两个函数之间进行选择,则必须做出决定)在运行时或在编译时自主)。 问题答案: 简短的答案:您不能。 更长的答案:使用curses库(在Unix 上为ncurs

  • 问题内容: 我正在尝试获取%的总CPU使用率。首先,我首先要说“ top”根本不会做,因为cpu转储之间会有延迟,它需要2个转储和几秒钟的时间,这使我的程序挂起(我不想给它自己的线程) 我尝试的下一件事情是“ ps”,它是即时的,但总的总数总是很高(超过20),当我实际上让我的cpu做某事时,它保持在20左右… 还有其他方法可以获取总的CPU使用率吗?超过一秒还是更长的时间都没有关系……但是更长的

  • 问题内容: 通过使用strace和ifconfig,我发现可以通过以下方式设置IP地址: 但是我对这种解决方案不是很满意: 这样做的“正确”方法是什么? 问题答案: 没有魔术+2的IPv4的“正确”方式: 要使用IPv6,请将其强制转换为

  • 问题内容: 如何在Linux中从C执行Shell脚本? 问题答案: 这取决于您要对脚本(或要运行的任何其他程序)执行的操作。 如果只想运行脚本,这是最容易的事情,但是它也做其他一些事情,包括运行shell并让其运行命令(在大多数* nix下是/ bin / sh)。 如果您要通过标准输入来输入shell脚本或使用其标准输出,则可以使用(和)设置管道。这也使用外壳程序(大多数* nix下是/ bin

  • 问题内容: 我想构建一个 使用用户名作为参数 的 程序,并创建用户及其主文件夹 (具有一些诸如文件夹之类的硬编码规范,以及诸如用户名之类的安全检查不能是root或现有用户)。 我的应用程序需要创建用户才能授予SSH访问权限。 该程序将使用 sudo 执行。我读过它应该用C或C ++而不是脚本编写,因为脚本很容易被利用。 您能给我 一些建议或好的做法 吗? 我应该使用一些 Pam 库吗?有没有例子?