GoGPT Best VPN GoSearch

OnWorks 网站图标

paexec - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 paexec

这是 paexec 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


paexec - 并行执行器,通过网络或 CPU 分配任务

概要


执行 [选项]

执行 -C [选项] 命令 [参数...]

商品描述


假设您有一长串需要完成的 AUTONOMOUS 任务,例如,您
想要将数千个 .wav 音频文件转换为 .ogg 格式。 还假设多个
CPU 可用,例如多 CPU SMP 系统(或现代多内核 CPU)或集群
由连接到网络或互联网的个人计算机组成。 执行 能够
有效地完成这项工作,即 执行 有效地将不同的任务分配给
不同的处理器(或计算机),接收来自它们的处理结果并
将这些结果发送到标准输出。

有几个概念需要定义: 任务, 命令, 运输, 节点.

任务 被阅读 执行 来自标准输入并表示为一行文本,即一个
输入行 - 一项任务。

节点 标识符 - 远程计算机或 CPU 标识符,例如 CPU 序号或
计算机的 DNS 名称,如 node12.cluster.company.com。

命令 - 从标准输入读取单行任务并将多行结果发送到的用户程序
标准输出,其中空行表示 JOB_IS_DONE__I_AM_READY_FOR_THE_NEXT_ONE。 发送后
到标准输出的空行,标准输出必须被刷新。 请记住,空行不得
出现在一般结果行中。 除此以外 执行 可能会因为死锁而挂起。

Transport / 运输 - 有助于运行的特殊程序 命令节点。 它需要 节点
标识符作为它的第一个参数和 命令 与它的论点一样。 例如,
是'/usr/bin/ssh'。 两个都 运输命令 可以用它们的参数指定,即
'/usr/bin/ssh -x' 允许作为 运输 程序。

算法。 命令 运行在每个 节点 在帮助下 运输 程序。 然后, 任务 旨在
从 stdin 逐行读取(每行一个任务)并发送到 free 节点 (正好一个
一次每个节点的任务)。 同时读取结果行 命令的 标准输出和
输出到 paexec的 标准输出。 当得到一个空行时 节点 (这意味着
节点 完成了它的工作)它被标记为空闲并准备好进行下一个工作。 这些
重复步骤直到到达标准输入的末尾并且所有 节点 完成他们的工作。

更正式的(为了更好地理解 paexec 是如何工作的):

在每个节点上运行命令
将所有节点标记为空闲
而不是(end_of_stdin)或不是(all_nodes_are_free)
而 there_is_free_node/i 而不是(end_of_stdin)
任务 = read_task_from_stdin
发送任务到节点(任务,我)
标记节点为忙(i)
end
而 result_line_from_node_is_available/i
结果 = read_result_line_from_node(i)
send_line_to_stdout(结果)
如果 is_empty_line(result)
# 工作结束
标记节点为空闲(i)
end
end
end
close_command_on_each_node

需要注意的是 命令 你的实际任务运行一次(每个节点),它不会重新启动
对于每项任务。

另请注意,输出包含结果行(从不同的 节点) 在混合
命令。 也就是说,输出的第一行可能包含从
第一 节点, 第二行输出——从第二行 节点, 但第三个输出行
可能包含第一行的结果行 节点 再次。 也不保证
第一行输出将来自第一个 节点 或者从一开始 任务. 所有结果行
被读取后立即输出 执行,即一旦它们准备好输出。
执行 出于效率原因,以这种方式工作。 你可以玩 -l, -r-p 选项
看看会发生什么。

配置


-h 显示帮助信息。

-V 显示版本信息。

-c 命令
命令及其参数。

-C 命令及其参数在选项之后指定。

-t 运输
运输指挥部

-n +号码
多个命令并行运行。

-n 节点
由空格字符分隔的节点列表。 第一个字符必须是
字母数字、“_”或“/”。 所有其他字符都保留用于将来的扩展。

-n :文档名称
包含节点列表的文件名,每行一个。

-x 运行指定的命令 -c 对于每个任务。 它的标准输出被传递给 执行。 如果两者都
指定了“-x”和“-g”,如果命令的退出状态为,则认为任务失败
非零。

-X 暗示 -x 并忽略计算器的标准输出。

-r 在输出中包含节点标识符或节点编号(从 0 开始),即 id/number of
生成此特定输出行的节点。 出现此标识符或编号
在行号之前如果 -l 也适用。 空格字符用作分隔符。

-l 在输出中包含一个从 0 开始的任务号(输入行号),即行号
这个特殊的输出线是从它产生的。 它出现在 pid 之前,如果 -p is
也适用。 空格字符用作分隔符。

-p 包括与 paexec 通信的子进程的 pid 节点+命令 以及
输出。 Pid 在实际结果行之前。 空格字符用作分隔符。

-e 当从节点获得任务结束标记时,一个空行被打印到标准输出。
此选项可能与 -l-r.

-E 意味着 -e 并刷新标准输出。

-d 打开调试模式(仅用于调试目的)

-i 将输入行(即任务)复制到标准输出。

-I 意味着 -i 并刷新标准输出。

-s|-g 从标准输入读取任务的 Orgraph(部分有序集)。

从标准输入读取任务图而不是自主任务。 在这种模式下
每个任务都可能失败或成功。 一如既往的空行输出 命令
手段 end of 任务. 它之前的行显示了任务的退出状态。 这个单词
“failure”表示失败,“success”——成功,“fatal”表示当前任务
被重新分配给另一个节点(当然,并重新启动)(请参阅选项 -z)。 看
示例的 examples/1_div_x/cmd。 输入行(paexec 的标准输入)应该包含
内部没有空格的单个任务或由单个空格分隔的两个任务
字符,例如 task1 任务2。 任务1 task2 行表示必须完成 task1
在 task2 之前,它是强制性的,即如果 task1 失败 所有依赖任务
(包括 task2)也递归失败。 具有依赖关系的任务是
只有在所有依赖项都成功后才启动。 当任务成功时 paexec
在 end_of_task 标记之前输出“成功”字(参见 -e 或 -E),否则
输出“失败”字样,后跟因此而失败的任务列表。

示例:

任务(examples/make_package/tasks 文件)

文本程序/字典
开发/autoconf wip/libmaa
开发/gmake wip/libmaa
wip/libmaa wip/字典服务器
wip/libmaa wip/dict-客户端
开发/m4 wip/dict-server
开发/byacc wip/dict-server
开发/byacc wip/dict-client
开发/flex wip/dict-server
开发/flex wip/dict-client
开发/glib2
开发/libjudy

命令(示例/make_package/cmd__flex)

#!/usr/bin/awk -f
{
打印 $0
if ($0 == "devel/flex")
打印“失败”
其他
打印“成功”

print "" # 任务结束标记
刷新()
}

"paexec -s -l -c cmd__flex -n +10 \ 的输出
<任务”

3 开发/自动配置
3 成功
4 开发/gmake
4 成功
7 开发/平方米
7 成功
8 开发/byacc
8 成功
9 开发/弹性
9 故障
9 开发/flex wip/dict-server wip/dict-client
10 开发/glib2
10 成功
11 开发/libjudy
11 成功
1 textproc/dict
1 成功
2 个在制品/libmaa
2 成功

-z 如果应用,请阅读/(2) 从/到节点的操作变得不重要。 如果
paexec 已失去与节点的连接,它将重新分配失败的任务到另一个节点
并且,如果 -s 应用,将输出“致命”字符串到标准输出(“成功”+“失败”+
“致命的”)。 这使得 paexec 能够抵抗 I/O 错误,因此您可以创建
paexec 集群甚至通过由不可靠主机(互联网?)组成的网络。 失败的
主机被标记为这样,不会在当前运行 paexec 期间使用。

-Z 超时
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 -z 应用,如果 命令 失败,适当的节点被标记为已损坏并且是
排除在以下任务分布之外。 但是如果 -Z 应用,每 超时
秒尝试在故障节点上重新运行命令。 -Z 暗示 -z。 这
选项可以在不可靠的网络/硬件上组织集群。

-w If -Z 选项已应用, 执行 如果出现错误则退出 全部 节点失败。 和 -w it
不会退出并等待恢复节点。

-m s=共赢
-m f=失败
-m F=致命
-m t=ot
-m d=定界符
为 'success'、'failure'、'fatal'、''(任务结束)和 ' ' 设置替代字符串
(任务分隔符)。 'fatal' 的空字符串意味着它不会被输出
到标准输出,以防出现致命错误。

-W NUM
当使用多台机器或 CPU 进行任务处理时,
尽快开始“更重”的任务,以尽量减少总计算量
时间。 如果 -W 指定,特殊权重分配给每个使用的任务
用于重新排序任务。 如果 NUM 为 0,权重本身用于重新排序
任务。 权重越大,任务的优先级越高。 如果 NUM 是1,
任务的总权重是其自身权重(在输入中指定)和
所有直接或间接依赖于它的任务。 如果 NUM 是 2,总重量
任务是任务自身权重的最大值和所有任务的权重取决于
它直接或间接。 权重是在“权重:”关键字的帮助下指定的。
如果不指定权重,则默认为1。以下是示例
带权重的任务输入图。

重量:gtk2 30
重量:glib2 20
gtk2 火狐
重量:火狐200
能说会道2 gtk2
重量:qt4 200
重量:kcachegrind 2
qt4 kcachegrind
qt4 DJView4
tiff djview4
djview4.png
重量:twm 1
重量:gqview 4

-y 如果应用,魔术字符串将用作任务结束标记而不是空行。
这条线不太可能出现在计算器的输出上。 这个选项有
优先级高于 PAEXEC_EOT 环境变量。

示例


1.
paexec -t '/usr/bin/ssh -x' -n 'host1 host2 host3' \
-le -g -c calculate-me < tasks.txt |
paexec_reorder -Mf -Sl

2.
ls -1 *.wav | paexec -x -n +4 -c 'oggenc -Q'

3.
ls -1 *.wav | ls -4 *.wav | paexec -xCil -n+XNUMX flac -f --silent

4.
{ unname -s; unname -r; unname -m; } |
paexec -x -lp -n+2 -c 横幅 |
paexec_重新排序-l

有关更多示例,请参阅分发中的 paexec.pdf 和 examples/ 子目录。

附注


选择(2) 系统调用和非阻塞 (2) 用于从中读取结果行 节点.

此刻阻拦 (2) 用于发送 任务 以及 节点. 这可能会减慢
整个处理如果 任务 太大了。 所以,建议使用较短的 任务,为
例如,文件名或 URI(大小为几十个字节)而不是多兆字节
内容。 虽然这可能会在未来修复。

原始 paexec tarball 包含许多在presentation/paexec.pdf 中的使用示例
文件。 安装后你可以在 share/doc/paexec/paexec.pdf 下找到这个文件或
附近。

环境


PAEXEC_BUFSIZE
覆盖编译时间 初始 用于存储任务的内部缓冲区的大小和
结果行。 的版本 执行 在 0.9.0 之前使用这个值作为 最多
缓冲区大小。 现在内部缓冲区会自动调整大小。 如果不确定,请不要设置
PAEXEC_BUFSIZE 变量。 请参阅 Makefile 中的默认值。

PAEXEC_ENV
传递给计算器的变量列表。

PAEXEC_EOT
此变量设置任务结束标记,默认情况下为空行。 还,
通过这个变量,一个任务结束标记被传递给所有的计算器。

PAEXEC_NODES
除非选项 -n 已应用,此变量指定节点。

PAEXEC_TRANSPORT
除非选项 -t 已应用,此变量指定传输。

使用 onworks.net 服务在线使用 paexec


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。