Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma...

34
Chamada Remota de Procedimentos

Transcript of Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma...

Page 1: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Chamada Remota de Procedimentos

Page 2: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Remote Procedure Call

• O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer a programação de duas trocas explícitas de mensagens em dois canais diferentes de comunicação

• Cada cliente precisa de um canal de comunicação que leva a um grande número de canais

• RPC serve especialmente para programar interações cliente/servidor

• Combina aspectos de monitores e passagem de mensagem síncrona

Page 3: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Remote Procedure Call

• Como em monitores, um processo ou módulo exporta operações que são invocadas através da instrução call

• Como em um processo síncrono de envio de mensagens, a execução do call atrasa o invocador da chamada

• Uma operação é um canal de comunicação dupla do chamador para o processo que serve a chamada e de volta para o chamador

• O chamador espera até que a operação invocada seja executada e os resultados sejam retornados

• Um procedimento é declarado para cada operação e um processo novo é criado para tratar cada chamada

Page 4: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Remote Procedure Call

• Um procedimento é declarado para cada operação e um processo novo é criado para tratar cada chamada

• O chamador e o corpo do procedimento podem estar em máquinas diferentes

• Um módulo contém processos e procedimentos• Módulos podem residir em espaços de endereçamento

diferentes• Processos dentro do módulo podem compartilhar

variáveis e chamar procedimentos declarados dentro do módulo

Page 5: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Modelo de um módulo

• Um processo em um módulo só pode se comunicar com processos em outro módulo através da chamada de procedimentos exportados por esse módulo

• Forma de um módulomódulo mnome

indicações das operações exportadascorpo

declarações de variáveisinicialização do códigoprocedimentos das operações exportadasprocedimentos locais e processos

fim mnome

Page 6: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Modelo de um módulo

• Declaração de uma operação exportada– op opnome(formais) [returns resultado]

• Operação implementada por uma proc– proc opnome(identificadores formais) returns identificador do resultado

declarações de variáveis locaisinstruções

fim

• Um processo chama um procedimento em outro módulo executando call mnome.opnome(argumentos)

Page 7: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Implementação da chamada entre módulos

CallProcesso chamador(chama procedimento

opnome)Processo servidor ( executa

procedimento opnome)

Page 8: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Sincronização dentro dos módulos

• Sincronização entre chamador e servidor implícita• Processos dentro de um módulo, incluindo servidores e

processos locais, necessitam ser sincronizados entre eles e obter acesso mutuamente exclusivo a variáveis compartilhadas

• Duas abordagens utilizadas:– processos executam com exclusão mútua, ou seja, um de cada vez está

ativo– processos executam concorrentemente e mecanismos de exclusão mútua

tem que ser utilizados

Page 9: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Um servidor de tempo

• Implementação de um módulo que provê serviços de tempo para clientes em outros módulos

• Duas operações visíveis:– get_time, para um cliente obter a hora do dia– delay, para bloquear o processo do cliente por interval unidades de

tempo

• O servidor possui um processo interno que inicia continuamente um timer de hardware, que incrementa a hora do dia quando ocorre uma interrupção

Page 10: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Um servidor de tempo

Module TimeServerop get_time() returns int;op delay (int interval);

bodyint tod=0; # hora do diasem m =1; # semáforo para exclusão mútuasem d[n]=([n] 0); # semáforos privados para delayqueue of (int waketime, int process_id) napQ;## quando m==1, tod < waketime para os processos atrasados

proc get_time() returns time {time = tod;

}proc delay (interval) { # assume interval > 0 int waketime = tod + interval;

P(m);insere (waketime, myid) no lugar apropriado em napQ;V(m);P(d[myid]); # espera para ser acordado

}

Page 11: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Um servidor de tempoprocess Clock {

inicia o timer de hardware; while (true) {

espera por interrupção, então reinicia timer;tod = tod + 1;P(m);while (tod >= menor waketime em napQ) { remove (waketime, id) de napQ;

V(d[id]); # acorda processo id}V(m);

}}fim TimeServer

Page 12: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Java RMI (Remote Method Invocation)

• Suporte de Java a RPC• Operações em objetos Java são chamados métodos, daí

o nome RMI• Três componentes:

– uma interface que declara os headers para os métodos remotos– uma classe servidora que implementa a interface– um ou mais clientes que chamam os métodos remotos

Page 13: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Programação emRMI

• Escreva uma interface Java que estende Remote com métodos que declaram o lance de exceções remotas

• Escreva uma classe servidora que estende UnicastRemoteObject e implementa os métodos da interface

• Escreva código que cria uma instância do servidor e registre seu nome em um servidor de nomes denominado registry service

• Escreva uma classe cliente que interage com o servidor– O cliente deve criar um gerenciador de segurança para não carregar código errado

pela rede e deve obter um objeto servidor do registry service. Após esse procedimento, o cliente pode chamar os métodos remotos do servidor.

Page 14: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Mecanismo de funcionamento

• O programa do cliente invoca os métodos do servidor como se fossem locais

• Quando os métodos são remotos, a interação entre cliente e servidor é gerenciada por um stub e skeleton

• Após a compilação do programa, o stub e skeleton são criados pelo comando rmic

Page 15: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Mecanismo de funcionamento

• Quando um cliente invoca um método remoto, ele, na verdade, invoca um método no stub

• O stub organiza os argumentos da chamada remota e os envia em uma única mensagem para o skeleton

• O skeleton recebe a mensagem com os argumentos, gera uma invocação local do método para o servidor, espera o resultado e o retorna para o stub

• O stub retorna o resultado para o código do cliente

Page 16: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Detalhes para execução

• Cliente e servidor são programas separados que executam em hosts separados

• Necessita-se de utilizar um identificador o servidor que deve ser único, pois podem existir mais de um servidor executando ao mesmo tempo

• Formato dos nomes de servidores– rmi://hostname:port/pathname, onde hostname é o nome do host na

Internet, port é uma porta escolhida pelo usuário e pathname é um nome do diretório escolhido pelo usuário no servidor

• O registry service é um programa que mantém uma lista de nomes registrados de servidores em um host

Page 17: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Detalhes para execução

• O registry service é um programa que mantém uma lista de nomes registrados de servidores em um host

• Inicia-se o programa em background na máquina servidora através do comando “rmiregistry port &”

• A interface para esse serviço é fornecida por um objeto Naming com dois métodos: bind, para registrador um nome e lookup para obter o nome de um servidor

• Os programas cliente e servidor são iniciados através do interpretador java– O servidor deve ser iniciado em uma máquina e os clientes em máquinas

conectadas as servidor

Page 18: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

import java.rmi.*;import java.rmi.server.*;

public interface RemoteDatabase extends Remote { public int read() throws RemoteException; public void write(int value) throws RemoteException;}

class Client { public static void main(String[] args) { try { System.setSecurityManager(new RMISecurityManager()); String name ="rmi://neuman:9999/database"; RemoteDatabase db = (RemoteDatabase) Naming.lookup(name); int value, rounds = Integer.parseInt(args[0]); for (int i = 0; i , rounds; i==) { value = db.read(); System.out.println("read: "+ value); db.write(value+1); } } catch (Exception e) { System.err.println(e); } }}

Page 19: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

class RemoteDatabaseServer extends UnicastRemoteObject implements RemoteDatabase { protected int data = 0;

public int read() throws RemoteException { return data; }

public void write (int value) throws RemoteException { data = value; System.out.println(”new value is : “ + data); }

public RemoteDatabaseServer() throws RemoteException { super (); } public static void main(String[] args) { try { RemoteDatabaseServer server = new RemoteDatabaseServer(); String name ="rmi://neuman:9999/database"; Naming.bind(name, server); System.out.println(name + “is running”); } catch (Exception e ) { System.err.println(e); } }}

Page 20: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Ferramentas para Análise de Desempenho

Page 21: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Ferramentas para análise de desempenho

• Existem poucos padrões para ferramentas utilizadas para recolher e analisar dados relativos a desempenho de programas paralelos

• Utilizam abordagens, formatos de arquivos e visualizações diferentes

• Mas existem princípios básicos que podem ser identificados em várias ferramentas existentes

Page 22: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Processos de análise de desempenho

• Coleta de dados:– obtenção de dados sobre o desempenho de um programa que está sendo

executado

• Transformação de dados:– transformam dados coletados objetivando reduzir o volume total de dados

• Visualização de dados:– oferecem meios de visualizar os dados obtidos de uma maneira mais

amigável ao usuário

Page 23: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados

• Três técnicas básicas:– profiles: registram o tempo gasto em partes diferentes do programa.

Geralmente são obtidos automaticamente

– contadores: registram frequência de eventos ou tempo acumulativo. Requerem intervenção do programador

– trace de eventos: registram cada ocorrência de eventos específicos. São gerados automaticamente ou com intervenção do programador

Page 24: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Transformação de dados

• Determinação de valores médios• Outras estatísticas (desvio padrão)• Extrair dados de arquivos de trace• Transformações podem ser codificadas pelo

programador

Page 25: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Visualização de dados

• Dados são multidimensionais:– tempos de execução– custos de comunicação– vários componentes do programa– processadores diferentes– tamanhos de problemas diferentes

• Técnicas de visualização gráfica são utilizadas

Page 26: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Requisitos das ferramentas

• Precisão– dados obtidos por amostragem são menos precisos que dados obtidos por contadores e

temporizadores

• Simplicidade– coleta de dados automática sem intervenção do programador

• Flexibilidade– possibilidade de estender a ferramenta para coletar dados adicionais e prover diferentes

visualizações dos mesmos dados

• Nível de intrusão– overhead introduzido pela ferramenta

• Abstração– dados devem poder ser examinados de acordo com o nível de abstração apropriado

para o modelo de programação utilizado no programa paralelo

Page 27: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados- Profiles

• Um profile mostra a quantidade de tempo gasto em diferentes componentes do programa

• O valor do contador de programa é obtido em intervalos fixos de tempo e utilizado para construir um histograma de frequências de execução

• Essas frequências são combinadas com informações da tabela de símbolos do compilador para estimar o tempo gasto em partes diferentes do programa

• Dados podem ser coletados para cada processador e podem identificar tempo de execução, comunicação e idle

Page 28: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados- Profiles

• Podem ser obtidos automaticamente, a baixo custo• Disponibilizam uma visão em alto nível do

comportamento do programa• Permitem a identificação de partes do programa que

estão ocupando muito tempo• Permitem identificação de escalabilidade do programa

em relação ao número de processadores e tamanho do programa

• Não registram aspectos temporais da execução do programa

Page 29: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados- Contadores• Consiste de um local da memória que é incrementado cada vez

que ocorre um evento específico• Eventos podem ser:

– número de chamadas de procedimento– número total de mensagens– número de mensagens enviadas entre dois processadores

• Os dados podem ser gerados por código gerado pelo compilador, por código incorporado de bibliotecas de comunicação ou por inserção pelo usuário de chamadas a rotinas de contador

• Combinação de informações geradas pelos contadores e profiles:– contadores geram informação de número total de mensagens que podem ser

combinadas com informação de tempo total de comunicação gerada pelos profiles para determinar eficiência de operações de comunicação

Page 30: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados - Traces

• Abordagem que provê maior detalhamento dos dados• Geram arquivos de log que contêm registros de eventos com a

hora marcada representando ocorrências significativas na execução do programa, como chamada de procedimento e envio de mensagens

• Podem ser utilizados para examinar relações entre comunicações, localizar fontes de causadores de paradas dos processadores e identificar gargalos

• Geram uma quantidade muito grande de dados– muda característica do programa– pós processamento difícil– programador tem que ajustar o processo de coleta de dados para registrar somente eventos

relevantes

Page 31: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Coleta de dados - Dicas

• Faça uma análise de desempenho previsto do seu programa• Utilize informações de profiles e contadores necessárias para

a análise de desempenho• Meça o tempo de execução para um número variado de

processadores e tamanhos de problemas• Se os valores observados são muito diferentes dos modelados,

utilize informação de profiles e counters para verificar se as suposições básicas feitas no modelo ocorrem na realidade

• Caso existam aspectos ainda inexplicados do desempenho do seu programa, incorpore ferramentas simples para trace de dados

Page 32: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Transformação e visualização de dados

• Profile e counts:– histogramas que mostram tempo de execução, número de mensagens,

volume de dados (Kbytes/s), tamanho médio de mensagem por processador

– Matriz bi-dimensional que mostra comunicação entre processadores e cores indicam estado do processador (comunicação, execução, idle)

• Traces:– dados são reduzidos para uma, duas ou três dimensões e são visualizados

com histogramas– volume de comunicação versus tempo– vistas de dependências temporais

Page 33: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Ferramentas disponíveis

• Paragraph– desenvolvida pelo Oak Ridge National Lab para programas que utilizam

passagem de mensagens– gera arquivos de trace que podem ser mostrados como utilização do

processador (comunicação, execução, idle), comunicação entre processadores e outros

• Upshot– desenvolvida pelo Argonne National Lab para programas que utilizam

passagem de mensagens– coleta dados em forma de trace e os mostra em forma de histogramas – mostra o estado (início e fim de um evento) de cada processo em função

do tempo

Page 34: Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.

Ferramentas disponíveis• Pablo

– desenvolvida pela Universidade de Illinois– provê uma variedade de mecanismos para coleta, transformação e visualização de dados e

pode ser estensível para que novos formatos de dados, mecanismos de coleta de dados, transformações e visualizações sejam incorporados

– pode ser utilizada por programas que utilizam passagem de mensagens e paralelismo de dados

– instrumentação pode ser feita interativamente pelo usuário e chamadas aso sistema podem ser incorporadas a bibliotecas e compiladores

• IBM Parallel Environment– desenvolvida pela IBM para o sistema SP– coleta dados através em profiles utilizando comandos prof e gprof – ferramenta VT coleta dados em forma de traces e mostra sua visualização: registro de

comunicação, registro de utilização de CPU, disco, memória e partes marcadas pelo programador