Child pages
  • CSBase.ReestruturacaoSGA
Skip to end of metadata
Go to start of metadata

Reestruturação do SGA

Implementação da tarefa CSBASE-2954 - Getting issue details... STATUS .

Etapas da reestruturação:

Reavaliar as estruturas de definição de dados (Node, Grid e outras configurações)
Reavaliar e documentar a api das bibliotecas específicas por plataforma
Reavaliar a idl CORBA
Modularização (objetos e arquivos)
  • Permitir que o admin use "require" para carregar as bibliotecas default (sgad-lib.cnf). O padrão poderia ser fazer override das nossas.
  • uso de um diretório temporário a ser definido pelo administrador (disco local, sandbox, etc)
Migrar para a versão 6 do OiL
  • Atenção às chamadas remotas x corotinas
  • Rever aninhamento do verbose
Questão de segurança
  • Registro do SGA
  • Execução de comando

Avaliar o uso de chaves públicas/privadas.

IHC
  • Dar um feedback melhor para o usuário do porque não tem SGA para rodar um algoritmo

Reavaliar as estruturas de definição de dados

Modificar arquivo de configuração de SGAs.
  • Juntar Node e Grid num único construtor SGA.
  • A biblioteca que será carregada irá definir se o SGA é um cluster ou não.
  • O usuário não poderá mais definir quais são os nós de um cluster. Ao invés disso, a biblioteca deverá "descobrir" quais são os nós. (Remoção do atributo ids de Grid.)
  • Em um cluster, vamos assumir que todas as plataformas são iguais, assim como os atributos que definem paths (projetos, algoritmos, sandbox).
Remover da api dos serviços (SGAService e outros) a possibilidade de definir um nó para a execução.
Podemos retirar os campos:
  • file_separator
  • clock_speed
  • byte_order
  • deny_node_selection
Quais são as informações que uma biblioteca deve descobrir:
  • para cada nó (usaremos o valor definido no arquivo de configuração, caso a biblioteca não consiga obtê-lo):
    • número de processadores
    • ram total
    • swap total

Devemos usar alguma forma de sinalizar que o valor padrão está sendo usado (*) ?

  • para o SGA que é cluster (obrigatório):
    • nós
Além das informações extras que a biblioteca pode oferecer para um SGA, ela também poderia oferecer informações extras para cada um dos comandos. (Caso OurGrid)
  • OurGrid usa o collect_execution_data para anexar informações do SGA (ao invés dos comandos).
Incluir teste de compatibilidade de versões.
Rever o mecanismo dos benchmarks:
  • agrupar todos os atributos em uma tabela ( como foi feito com o csfs)
  • pensar em alguma coisa mais modular, mais fácil de habilitar / desabilitar e mais fácil do usuário implementar seu próprio benchmark.
Criação de um "requisito"/parâmetro dinâmico que será passado para as bibliotecas específicas de cada SGA (p.e., requisitos para o PBS).
Rever a questão de requisitos x propriedades x plataforma (Lua, Java, Excel, PBS, Linux26, etc)
  • ao invés de dividir os binários por plataformas, dividí-los por requisitos.
  • a plataforma vira um requisito.
  • hierarquia de requisitos (algoritmo, versão e binários)
  • os requisitos não precisam ser previamente cadastrados
  • persistir requisitos? Se formos persistir, precisaremos administrá-los. Será permitido adicionar alguma descrição para os requisitos?
Ainda necessita discussão
  • Mudar Library para Type (ou coisa melhor)
  • Requirements vira "offers" na declaração do SGA
  • Incluir outras opções de parâmetros na linha de comandos do SGA.
  • Testes de consistência ao registrar o SGA
    • Tem acesso aos diretórios de projetos e algoritmos do servidor?
    • O servidor consegue chamar um método do SGA?
  • Não gerar o binário do SGA. Usar o interpretador Lua e carregar o que for preciso dinamicamente.


mockup.xml

sgad-lib.lua
Library {
   id = "Linux32",
   file = "Unix.lua",
   parameters = { uname = "Linux26g4"},
}
Library {
   id = "Linux33",
   file = "Unix.lua",
   parameters = { uname = "Linux26g4_64"},
}
Library {
   id = "Windows",
   file = "Windows.lua",
}
Library {
   id = "PBS",
   file = "LinuxPBS.lua",
}

sgad-cnf.lua
Default {
 project_root_directory = "../../csgrid/project" ,
 algorithm_root_directory = "../../csgrid/algorithms",
 sandbox_root_directory = "/tmp/sandbox",
 disabled = NO,
 benchmarks = NO,
 net_benchmark = NO,
 cpu_capacity = NO_CAPACITY,
 reading_disk_capacity = NO_CAPACITY,
 writing_disk_capacity = NO_CAPACITY,
}

CSFS {
   id = "sga-host",
   launch_daemon = YES,
   parameters = { HOST="sga-host", ROOT_DIR="../root" }
}

Properties {
 id = "GridWS",
 library = "PBS",
 machine_time = 20,
 requirements = { "Java", "isCluster" },
 -- outros...
}

SGA {
 name = "sepetiba",
 library = "Linux33",
 requirements = { "Java", "Excel" },
}

SGA {
 name = "Grid",
 library = "PBS"
 machine_time_seconds = 40,
}

SGA {
 name = "bw7",
 properties = "GridWS",
}

SGA {
 name = "pero",
 library = "Windows",
 csfs = CSFS {
   launch_daemon = YES,
   parameters = { HOST="sga-host", ROOT_DIR="../root" }
 },
}

Por default, o identificador da biblioteca carregada é adicionado a lista de requisitos do SGA.

  • No labels