问题标签 [taskset]
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.
python - 如何限制每个通过 gnu 并行启动的 python 进程使用一个 CPU?
如果我运行这个脚本
<my_bash_script.sh>
然后包含在多个 cpu 而不是一个 cpu 上运行的每个 python 进程。python 函数同时使用 numpy 和 pytorch。因此,该选项taskset -c 0-4
强加了 CPU 的最大数量,但它不保证每个进程将被限制为一个 CPU。
我试过了
但它没有用
我还添加到 python 脚本中
但这没有帮助
docker - 可以使用 taskset 或 systemd CPUAffinity=0 将 dockerd 和 containerd 固定到核心 0
我正在尝试查看是否可以将 dockerd 和 containerd 固定到 Linux 服务器上的核心 0,而将所有其他核心留给容器(使用 cpuset)。所以我在我的 systemd 单元上使用了这个:
我注意到子进程也被固定到核心 0(tasket 手册解释这是预期的行为):
我的问题是:
- 可以只固定父进程,但子进程可以使用 cpuset 在他们想要的地方运行
- 有没有人在做这个?我担心的是我想让一些敏感的进程不间断地工作,通过将中断和其他进程绑定到核心 0
谢谢,
awk - ksh cmd one-liner 一次 grep 多个 PID
我有一堆需要检查 CPU 亲和力的进程,所以我得到了这个:
for i in `ps -Fae | grep proc_name| awk '{print $2}'`; do taskset -acp $i;done
但我有一个问题,taskset 也显示了所有子进程的 pid,所以我得到了大量的数字以及它们的 cpu 亲和力。
我想将上面的行通过管道传输到 an 中egrep 'pid1|pid2'
,以便过滤掉所有子进程。
我试过这个:
for i in `ps -Fae | grep proc_name| awk '{print $2}'`; do taskset -acp $i;done | xargs egrep 'ps -Fae | grep proc_name| awk '{print $2}''
但我的 ksh shell 根本不喜欢 awk 括号。
所以我有两个问题:
- 可以将taskset更改为仅显示父pid吗?
- 我如何写最后一位我只使用父 pid 的地方?
python - 对于运行代码的不同数量的 CPU,KPCA 的结果是不同的
我正在使用kernlab包的KPCA函数进行降维,我正在使用rpy2从python调用API。问题是每次在不同数量的 CPU 内核上运行我的 python 脚本时,我得到相同数据的不同输出。我正在使用 linux 命令“taskset”或“numactl”从终端运行我的脚本。例如,对于 2 次运行:
以上两次运行的输出将完全不同。虽然它们中的每一个本身都是可重现的,但就像我在第一个命令中一样使用 3 个核心运行 10 次......所有 10 次的输出将是相同的......对于具有 5 个核心的第二个命令也是如此。但是为什么它们的输出彼此不同呢?这成为一个问题,因为它影响了我的分类性能。
编辑:事实上,我在使用 scikit learn kpca 时也注意到了这种完全相同的行为。关于我缺少的 KPCA,这里有什么共同的和基本的吗?
请帮忙。
python - 将任务集分配给特定的 Python 进程(不使用 PID)
所以我有一个Python3进程需要分配给第4个CPU核心(CPU Affinity 3),目前在0-2中使用。我在启动时将 isolcpus=3 添加到 cmdline.txt 中,然后在终端中键入以下内容:
问题是,每当我关闭并启动 Python 脚本时,PID 都会发生变化,因此我必须手动找到该 Python 进程的 PID 并再次对其执行任务集。有没有更有效的方法让我使用 taskset -cp 3 命令自动启动 Python 进程?
谢谢!
multithreading - ubuntu shell:taskset - 不要等待任务
我正在使用任务集来为处理非常密集的工作指定 cpu 亲和性
我使用的命令如下所示:
sudo taskset -c 4,5,6,7,8,9,10,11 [start work command]
这适用于应该启动两个具有给定 cpu 亲和力的工作人员的服务。在 shell 脚本中,这将如下所示:
问题是start worker1 command
在同一个控制台窗口中运行。这意味着start worker2 command
永远不会到达和执行。
解决方法是拥有多个服务,每个服务都有一个任务集。worker
如果应该启动许多实例,那么服务可能会变得一团糟。
linux - 如何将处理器分配给执行进程
我可以通过像这样运行它来为进程分配一个 cpu 核心:
在这里, ./wait 是一个可执行文件,其代码如下所示,我正在尝试将 core=21 分配给该进程。
但是当我尝试从另一个进程(使用 execl)做同样的事情时,它不起作用。例如,以下代码执行进程(未报告错误),但未完成对该进程的核心分配:
这是等待程序的代码,它只是等待用户提供一些输入,以便我有时间从另一个终端检查 cpu 状态:
所以,我的问题是:如何在运行进程时使用 execl 分配 cpu-core?(顺便说一句,如果进程已经在运行并且我有它的 pid,那么在该 pid 上执行任务集将更改该进程的核心分配。只有按照此处所示的方式完成时,它才起作用。)
linux - 如何在 isolcpus 之后重新启用 CPU 内核
我在 Jetson NX 上运行一些进程,我试图隔离 3 个内核,以便我可以使用任务集并将它们专用于我的包含多处理的 python 脚本。为此,我遵循了一些教程并将我的/boot/extlinux/extlinux.conf
文件修改为:
这对我的需要很好,当我运行cat /sys/devices/system/cpu/isolated
它时输出3-5
。现在我正试图带回核心 3 和 4,所以我修改了 extlinux.conf 文件说:
我重新启动了我的 Jetson。但是它仍然说核心 3-5 是隔离的。我需要采取其他步骤来重新启用这些内核吗?
linux - 使用任务集时,为什么我只能将进程绑定到系统上的某些 CPU 内核?
在我的服务器上,我有 4 个 CPU,每个有 22 个内核。所以有176个逻辑核心。
但是在使用任务集时,我只能使用前 61 个内核:
为什么?谢谢
bash - 等待使用任务集创建的流程完成
我根据linux 手册页使用任务集,以便仅在特定内核上运行处理非常密集的任务。
任务集被封装在一个循环中。每次选择一个新的目标目录并且任务正在运行时。并行运行该过程多次可能会导致致命的结果。
伪代码如下:
如果任务集实际上等待进程完成,我在文档中没有发现任何内容。
如果它不等待,我如何在启动新实例之前等待任务完成processing_intense_task
?