标签: parallelism

多核处理器上的 top 命令

我正在使用飞思卡尔 IMX6 四核处理器。我想知道该top命令是否列出了所有 4 个内核或单个内核的 CPU 使用率。我看到应用程序的 CPU 使用率与 4 核和单核相同。我猜测应用程序的 CPU 使用率会在单核上增加而在 4 核上减少,但它没有改变。

linux top parallelism cpu-usage

62
推荐指数
3
解决办法
22万
查看次数

如何确定传递给 make -j 选项的最大数量?

我想尽可能快地编译。去搞清楚。并想自动选择-j选项后面的数字。如何以编程方式选择该值,例如在 shell 脚本中?

输出是否nproc等于我可用于编译的线程数?

make -j1 make -j16

linux cpu make multiprocessor parallelism

58
推荐指数
3
解决办法
6万
查看次数

在许多服务器上通过 SSH 自动运行命令

.txt 文件中有一个 IP 地址列表,例如:

1.1.1.1
2.2.2.2
3.3.3.3
Run Code Online (Sandbox Code Playgroud)

每个 IP 地址后面都有一个服务器,并且在每个服务器上都有一个在端口 22 上运行的 sshd。并非每个服务器都在known_hosts列表中(在我的 PC 上,Ubuntu 10.04 LTS/bash)。

如何在这些服务器上运行命令并收集输出?

理想情况下,我想在所有服务器上并行运行这些命令。

我将在所有服务器上使用公钥身份验证。

以下是一些潜在的陷阱:

  • ssh 提示我将给定的服务器 ssh 密钥放入我的known_hosts文件中。
  • 给定的命令可能返回非零退出代码,表明输出可能无效。我需要认识到这一点。
  • 与给定服务器的连接可能无法建立,例如由于网络错误。
  • 应该有一个超时,以防命令运行的时间比预期的要长,或者服务器在运行命令时出现故障。

服务器是 AIX/ksh(但我认为这并不重要。

scripting ssh parallelism

55
推荐指数
5
解决办法
22万
查看次数

如何同时在多个选项卡/shell 中运行相同的 linux 命令?

Linux 中是否有任何工具/命令可用于同时在多个选项卡中运行命令?我想运行相同的命令:./myprog argument1 argument2同时在多个 shell 中检查互斥锁是否在线程程序中正常工作。我希望能够增加这个程序的实例数量,以便以后让我的代码承受压力。

我正在寻找类似 wall 的东西。我可以考虑使用 tty,但是如果我必须将其扩展到更多 shell,那似乎很痛苦。

shell terminal parallelism

50
推荐指数
7
解决办法
9万
查看次数

如何在终端中启动多线程grep?

我有一个文件夹,其中包含 250 多个文件,每个文件大小为 2 GB。我需要在这些文件中搜索字符串/模式并将结果输出到output文件中。我知道我可以运行以下命令,但是太慢了!!

grep mypattern * > output
Run Code Online (Sandbox Code Playgroud)

我想加快速度。作为一名 Java 程序员,我知道多线程可用于加快进程。我被困在如何以grep“多线程模式”启动并将输出写入单个output文件。

grep parallelism

46
推荐指数
2
解决办法
4万
查看次数

如何在多台计算机上分发大型下载?

我需要下载一个大文件(1GB)。我也可以访问多台运行 Linux 的计算机,但每台计算机的下载速度都受到管理员策略的限制,下载速度为 50kB/s。

如何在多台计算机上分发下载此文件并在下载所有段后合并它们,以便我可以更快地接收它?

download cluster parallelism

39
推荐指数
1
解决办法
2947
查看次数

同时计算多个摘要(md5,sha256)?

假设磁盘 I/O 和可用 RAM 是瓶颈(而 CPU 时间不是限制),是否存在可以一次计算多个消息摘要的工具?

我对计算大文件(以千兆字节为单位)的 MD-5 和 SHA-256 摘要特别感兴趣,最好是并行计算。我试过openssl dgst -sha256 -md5,但它只使用一种算法计算散列。

预期行为的伪代码:

for each block:
    for each algorithm:
        hash_state[algorithm].update(block)
for each algorithm:
    print algorithm, hash_state[algorithm].final_hash()
Run Code Online (Sandbox Code Playgroud)

shell-script hashsum parallelism

27
推荐指数
4
解决办法
1万
查看次数

四个并行的任务......我该怎么做?

我在一个目录中有一堆 PNG 图像。我有一个名为 pngout 的应用程序,我运行它来压缩这些图像。这个应用程序是由我做的脚本调用的。问题是这个脚本一次执行一个,如下所示:

FILES=(./*.png)
for f in  "${FILES[@]}"
do
        echo "Processing $f file..."
        # take action on each file. $f store current file name
        ./pngout -s0 $f R${f/\.\//}
done
Run Code Online (Sandbox Code Playgroud)

一次只处理一个文件,需要很多时间。运行此应用程序后,我看到 CPU 仅为 10%。所以我发现我可以将这些文件分成 4 个批次,将每个批次放在一个目录中并从四个终端窗口、四个进程中触发 4 个,所以我有四个脚本实例,同时处理这些图像和工作需要 1/4 的时间。

第二个问题是我浪费了时间分割图像和批处理并将脚本复制到四个目录,打开4个终端窗口,bla bla ...

如何用一个脚本做到这一点,而不必分割任何东西?

我的意思是两件事:首先,我如何从 bash 脚本启动一个进程到后台?(只是在最后加&?) 第二:如何在发送第四个任务后停止向后台发送任务并让脚本等待任务结束?我的意思是,只是在一个任务结束时向后台发送一个新任务,始终保持 4 个任务并行?如果我不这样做,循环将向后台发送无数个任务,CPU 将阻塞。

shell background-process parallelism

25
推荐指数
4
解决办法
2万
查看次数

如何阻止 xargs 错误地合并多个进程的输出?

我正在使用xargs选项--max-args=0(或者-P 0)。

然而,进程的输出被合并到stdout流中而不考虑适当的行分离。所以我经常会以这样的行结束:

<start-of-line-1><line-2><end-of-line-1>
Run Code Online (Sandbox Code Playgroud)

当我在整个输出的模式中使用egrepwith 时^xargs这弄乱了我的结果。

有没有办法强制xargs按顺序写入进程输出(任何顺序,只要一个进程的输出是连续的)?

或者其他一些解决方案?

编辑:有关用例的更多详细信息:

我想从不同的主机下载和解析网页。由于每个页面都需要大约一秒钟的时间来加载,并且有几十个页面我想并行化请求。

我的命令具有以下形式:

echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Run Code Online (Sandbox Code Playgroud)

我使用 bash 而不是 Perl 之类的东西,因为主机 IP($IPs 变量)和其他一些数据来自包含的 bash 文件。

process io xargs parallelism

22
推荐指数
2
解决办法
7100
查看次数

调用多个 bash 脚本并并行运行它们,而不是按顺序运行

假设我有三个(或更多)的bash脚本:script1.shscript2.sh,和script3.sh。我想调用所有这三个脚本并并行运行它们。一种方法是执行以下命令:

nohup bash script1.sh &
nohup bash script2.sh &
nohup bash script3.sh &
Run Code Online (Sandbox Code Playgroud)

(通常,脚本可能需要几个小时或几天才能完成,所以我想使用nohup它们以便即使我的控制台关闭它们也能继续运行。)

但是,有没有办法通过一次调用并行执行这三个命令?

我在想像

nohup bash script{1..3}.sh &
Run Code Online (Sandbox Code Playgroud)

但这似乎是按顺序执行script1.shscript2.shscript3.sh不是并行执行。

bash shell-script background-process parallelism

22
推荐指数
4
解决办法
11万
查看次数