paexec - Online na nuvem

Este é o comando paexec que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


paexec - executor paralelo, distribui tarefas pela rede ou CPUs

SINOPSE


paexec [opções]

paexec -C [opções] comando [args ...]

DESCRIÇÃO


Suponha que você tenha uma longa lista de tarefas AUTÔNOMAS que precisam ser feitas, por exemplo, você
deseja converter milhares de arquivos de áudio .wav para o formato .ogg. Suponha também que vários
CPUs estão disponíveis, por exemplo, sistema SMP multi-CPU (ou CPU multikernel moderna) ou um cluster
consistindo em computadores individuais conectados à rede ou internet. paexec pode
fazer este trabalho de forma eficiente, isto é paexec distribui com eficiência diferentes tarefas para
diferentes processadores (ou computadores), recebe os resultados do processamento deles e
envia esses resultados para stdout.

Existem várias noções que devem ser definidas: tarefa, comando, transporte, .

tarefas são lidos por paexec de stdin e são representados como uma linha de texto, ou seja, um
linha de entrada - uma tarefa.

identificador - computador remoto ou identificador de CPU, por exemplo, número ordinal de CPU ou
o nome DNS do computador, como node12.cluster.company.com.

Command - programa do usuário que lê a tarefa de uma linha de stdin e envia o resultado de várias linhas para
stdout onde uma linha vazia significa JOB_IS_DONE__I_AM_READY_FOR_THE_NEXT_ONE. Depois de enviar
a linha vazia para stdout, stdout DEVE SER FLUSHED. Lembre-se de que a linha vazia NÃO DEVE
aparece nas linhas de resultados gerais. De outra forma paexec pode travar devido a um impasse.

Transporte - programa especial que ajuda a funcionar comando na . Leva o
identificador como seu primeiro argumento e comando com seus argumentos como o resto. Por exemplo,
é '/ usr / bin / ssh'. Ambos transporte e comando pode ser especificado com seus argumentos, ou seja,
'/ usr / bin / ssh -x 'é permitido como um transporte .

Algoritmo. comandos são executados em cada com a ajuda de transporte programa. Então, tarefas e guarante que os mesmos estão
lidos de stdin linha por linha (uma tarefa por linha) e são enviados gratuitamente (exatamente um
tarefa por nó por vez). Ao mesmo tempo, as linhas de resultado são lidas de comando stdout e
são produzidos para paexec's stdout. Quando uma linha vazia é obtida do (isso significa
que. terminar seu trabalho) é marcado como livre e fica pronto para o próximo trabalho. Esses
etapas repetidas até que o final de stdin seja alcançado e todos nós terminar seu trabalho.

Mais formalmente (para entender melhor como funciona o paexec):

run_command_on_each_node
mark_all_nodes_as_free
enquanto não (end_of_stdin) ou não (all_nodes_are_free)
enquanto there_is_free_node / i e não (end_of_stdin)
tarefa = read_task_from_stdin
send_task_to_node (tarefa, i)
mark_node_as_busy (i)
final
enquanto result_line_from_node_is_available / i
resultado = read_result_line_from_node (i)
send_line_to_stdout (resultado)
if is_empty_line (resultado)
# fim do trabalho
mark_node_as_free (i)
final
final
final
close_command_on_each_node

Observe que comando que faz sua tarefa real é executada uma vez (por nó), não é reiniciado
para cada tarefa.

Observe também que a saída contém linhas de resultado (obtidas de diferentes nós) no misto
pedido. Ou seja, a primeira linha da saída pode conter uma linha de resultado obtida a partir do
primeiro , a segunda linha de saída - a partir da segunda , mas a terceira linha de saída
pode conter linha de resultado do primeiro novamente. Também não é garantido que o
a primeira linha de saída será a partir da primeira ou desde o primeiro tarefa. Todas as linhas de resultado
são produzidos assim que são lidos por paexec, ou seja, assim que estiverem prontos para serem produzidos.
paexec funciona desta forma por razões de eficiência. Você pode brincar com -l, -r e -p opções
para ver o que acontece.

OPÇÕES


-h Exibir informações de ajuda.

-V Exibir informações da versão.

-c comando
Comando com seus argumentos.

-C O comando com seus argumentos são especificados após as opções.

-t transporte
Comando de transporte

-n + numero
Vários comandos para serem executados em paralelo.

-n nós
Lista de nós separados por caracteres de espaço. O primeiro personagem deve ser
alfanumérico, `_ 'ou` /'. Todos os outros caracteres são reservados para futuras extensões.

-n :nome do arquivo
Nome do arquivo que contém a lista de nós, um por linha.

-x Executar o comando especificado por -c para cada tarefa. Seu stdout é passado para paexec. Se ambos
"-x" e "-g" são especificados, a tarefa é considerada com falha se o status de saída do comando for
diferente de zero.

-X Implica -x e ignorar o stdout da calculadora.

-r Incluir identificador de nó ou número de nó (baseado em 0) na saída, ou seja, id / número de
nó que produz esta linha de saída específica. Este identificador ou número aparece
antes do número da linha se -l também é aplicado. O caractere de espaço é usado como separador.

-l Inclui um número de tarefa baseado em 0 (número de linha de entrada) para a saída, ou seja, número de linha
a partir do qual esta linha de saída específica foi produzida. Aparece antes de pid se -p is
também se aplica. O caractere de espaço é usado como separador.

-p Inclui pid do subprocesso do paexec que se comunica com nó + comando ao
saída. Pid precede a linha de resultado real. O caractere de espaço é usado como separador.

-e Quando o marcador de fim de tarefa é obtido do nó, uma linha vazia é impressa no stdout.
Esta opção pode ser útil junto com -l e / ou -r.

-E Implicar -e e libera o stdout.

-d Ative o modo de depuração (apenas para fins de depuração)

-i Copie as linhas de entrada (isto é, tarefas) para stdout.

-I Implicar -i e libera o stdout.

-s|-g Órgrafo de tarefas (conjunto parcialmente ordenado) é lido de stdin.

Em vez de tarefas autônomas, o gráfico das tarefas é lido do stdin. Neste modo
cada tarefa pode FALHAR ou TER SUCESSO. Como sempre, uma saída de linha vazia por comando
significa final of tarefa. A linha anterior mostra um STATUS DE SAÍDA da tarefa. A palavra
"falha" significa falha, "sucesso" - sucesso e "fatal" significa que a tarefa atual
é reatribuído a outro nó (e reiniciado, é claro) (consulte a opção -z). Ver
exemplos / 1_div_x / cmd para a amostra. Uma linha de entrada (stdin do paexec) deve conter
uma única tarefa sem espaços dentro ou duas tarefas separadas por um único espaço
personagem, por exemplo, tarefa1 tarefa2. tarefa1 linha task2 significa que task1 deve ser feito
antes da tarefa2 e é obrigatório, ou seja, se a tarefa1 falhar todas as tarefas dependentes
(incluindo task2) também falham recursivamente. Tarefas com dependências são
iniciado somente depois que todas as dependências forem bem-sucedidas. Quando uma tarefa é bem-sucedida paexec
produz a palavra de "sucesso" logo antes do marcador end_of_task (ver -e ou -E), caso contrário
A palavra "falha" é produzida seguida por uma lista de tarefas que falharam por causa disso.

amostras:

tarefas (exemplos / make_package / arquivo de tarefas)

textproc / dictem
devel / autoconf wip / libmaa
devel / gmake wip / libmaa
wip / libmaa wip / dict-server
wip / libmaa wip / dict-client
devel / m4 wip / dict-server
devel / byacc wip / dict-server
devel / byacc wip / dict-client
devel / flex wip / dict-server
devel / flex wip / dict-client
devel / glib2
devel / libjudy

comando (exemplos / make_package / cmd__flex)

#!/ usr / bin / awk -f
{
imprimir $ 0
if ($ 0 == "devel / flex")
imprimir "falha"
outro
imprimir "sucesso"

imprimir "" # final do marcador de tarefa
fflush ()
}

saída de "paexec -s -l -c cmd__flex -n +10
<tarefas "

3 devel / autoconf
Sucesso em 3
4 devel / gmake
Sucesso em 4
7 devel / m4
Sucesso em 7
8 devel / byacc
Sucesso em 8
9 devel / flex
Falha 9
9 devel / flex wip / dict-server wip / dict-client
10 devel / glib2
Sucesso em 10
11 devel / libjudy
Sucesso em 11
1 textproc / dictem
Sucesso em 1
2 wip / libmaa
Sucesso em 2

-z Se aplicado, leia /escrever(2) as operações de / para os nós tornam-se não críticas. Em caso
paexec perdeu a conexão com o nó, ele reatribuirá a tarefa com falha a outro nó
e, se -s aplicado, irá gerar uma string "fatal" para stdout ("sucesso" + "falha" +
"fatal"). Isso torna o paexec resistente a erros de E / S, como resultado, você pode criar
clusters paexec mesmo em uma rede que consiste em hosts não confiáveis ​​(Internet?). Fracassado
os hosts são marcados como tal e não serão usados ​​durante a execução atual do paexec.

-Z tempo limite
Quando -z aplicado, se um comando falha, o nó apropriado é marcado como quebrado e está
excluídos da seguinte distribuição de tarefas. Mas se -Z aplicado, todo tempo limite
segundos, uma tentativa de reexecutar um comando em um nó com falha é feita. -Z implica -z. Este
opção torna possível organizar clusters em redes / hardware não confiáveis.

-w If -Z opção foram aplicadas, paexec sai com erro se TODAS nós falharam. Com -w it
não sairá e aguardará a restauração dos nós.

-m s=sucesso
-m f=falha
-m F=fatal
-m t=et
-m d=delimitador
Defina uma string alternativa para 'sucesso', 'falha', 'fatal', '' (fim da tarefa) e ''
(caractere delimitador de tarefa). Uma string vazia para 'fatal' significa que não será emitida
para stdout em caso de erro fatal.

-W Números
Quando várias máquinas ou CPUs são usadas para o processamento de tarefas, faz sentido
iniciar tarefas "mais pesadas" o mais rápido possível, a fim de minimizar o cálculo total
Tempo. Se -W é especificado, um peso especial é atribuído a cada tarefa que é usada
para reordenar tarefas. Se Números é 0, os próprios pesos são usados ​​para reordenar
tarefas. Quanto maior o peso, mais prioridade é a tarefa. Se Números é 1, o
peso total da tarefa é a soma de seu próprio peso (especificado na entrada) e pesos de
todas as tarefas que dependem dele direta ou indiretamente. Se Números é 2, o peso total de
tarefa é um valor máximo do próprio peso da tarefa e pesos de todas as tarefas, dependendo de
direta ou indiretamente. Os pesos são especificados com a ajuda da palavra-chave "peso:".
Se o peso não for especificado, o padrão é 1. O seguinte é o exemplo para
gráfico de entrada de tarefas com pesos.

peso: gtk2 30
peso: glib2 20
firefox gtk2
peso: firefox 200
glib2 gtk2
peso: qt4 200
peso: kcachegrind 2
qt4 kcachegrind
qt4 djview4
tiff djview4
png djview4
peso: twm 1
peso: gqview 4

-y Se aplicada, a string mágica é usada como um marcador de fim de tarefa em vez de uma linha vazia.
É improvável que esta linha apareça na saída da calculadora. Esta opção tem
prioridade mais alta do que a variável de ambiente PAEXEC_EOT.

EXEMPLOS


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

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

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

4.
{uname -s; uname -r; uname -m; } |
paexec -x -lp -n + 2 -c banner |
paexec_reorder -l

Para obter mais exemplos, consulte paexec.pdf e examples / subdirectory na distribuição.

NOTAS


selecionar(2) chamada de sistema e sem bloqueio ler(2) são usados ​​para ler as linhas de resultado de nós.

No momento bloqueando escrever(2) é usado para enviar tarefa ao . Isso pode desacelerar um
todo o processamento se tarefas são muito grandes. Portanto, é recomendado usar mais curtos tarefas, Por
exemplo, nome de arquivo ou URI (várias dezenas de bytes de tamanho) em vez de multi-megabyte
contente. Embora isso possa ser corrigido no futuro.

O tarball do paexec original contém uma série de exemplos de uso em presentation / paexec.pdf
Arquivo. Após a instalação, você pode encontrar este arquivo em share / doc / paexec / paexec.pdf ou
nas proximidades.

MEIO AMBIENTE


PAEXEC_BUFSIZE
Substitui o tempo de compilação do estado inicial, tamanho para buffers internos usados ​​para armazenar tarefas e
as linhas de resultado. Versões de paexec antes de 0.9.0 usava este valor como um máximo
tamanho do buffer. Agora os buffers internos são redimensionados automaticamente. Se não tiver certeza, não defina
Variável PAEXEC_BUFSIZE. Veja o valor padrão no Makefile.

PAEXEC_ENV
Uma lista de variáveis ​​passada para a calculadora.

PAEXEC_EOT
Esta variável define o marcador de fim de tarefa, que é uma linha vazia por padrão. Também,
por meio dessa variável, um marcador de fim de tarefa é passado para todas as calculadoras.

PAEXEC_NODES
A menos que opção -n foi aplicada, esta variável especifica os nós.

PAEXEC_TRANSPORT
A menos que opção -t foi aplicado, esta variável especifica o transporte.

Use paexec online usando serviços onworks.net



Programas online mais recentes para Linux e Windows