Multithreading e Escalabilidade MAGIC – Conceitos

O que é multithreading?

Uma ‘thread’ é uma entidade eficiente, que pode executar uma tarefa em um contexto individual. ‘Threads’ obtêm recursos do sistema individualmente (como tempo de CPU e memória), enquanto que partilham o ambiente do processo pai (como o espaço de endereço virtual).

A operação de criar e encerrar uma ‘thread’ no sistema operacional consome muito menos recursos do que criar e encerrar os processos.

Multithreading é usado sempre que um programa tem que executar a mesma função (tarefa) muitas vezes, em contextos de usuários diferentes.

O programa é iniciado em um ambiente de processo e suas funções podem ser implementadas como ‘threads’.

 

Quais são os produtos Magic com suporte Multithreading? 

eDeveloper 9x: o Magic Enterprise Server e o Magic Partitioning  Server no modo ‘segundo plano’ apenas.

iBOLT: O iBOLT Server.

Magic xpi : O Magic xpi Server

eDeveloper 10: eDeveloper Studio 10 e o Enterprise Server.

UniPaaS: UniPaaS Studio e o Enterprise Server.

Magic xpa: Magic xpa Studio e Magic xpa Enterprise Server

 

Enterprise Server License 

A licença de servidor Enterprise indica o número máximo de ‘threads’ concorrentes, que estão autorizadas a ser executado.

Esse número não limita o número de usuários, que são capazes de acessar o aplicativo.

Este número pode ter um impacto sobre o tempo de resposta, se o número de usuários tentando executar tarefas do aplicativo aumentar.

É recomendado o aumento das ‘threads’ (filas)  da licença junto com o aumento número de usuários simultâneos.

 

Magic xpi/iBOLT Server License

A licença indica o número máximo de ‘threads’ simultâneas, que estão autorizadas a ser executadas. Isso define quantos fluxos podem ser executados ao mesmo tempo no servidor iBOLT, já que cada fluxo consome no mínimo uma ‘thread’ enquanto estiver ativo.

 

Estimativa da licença requerida 

Para estimar a quantidade de ‘threads’ (filas) necessárias para os projetos, temos que ter alguns valores. Temos também de indicar qual é o maior tempo de resposta aceito pelo usuário final.

Você pode utilizar a seguinte fórmula, que foi sugerido pelo vice-presidente de P & D da Magic Software Enterprises Ltd.:

Assumindo que:

1. Tempo médio de duração de uma tarefa realizada pelo MAGIC Server. (ATT)

Este é o tempo que leva para realizar uma operação, a partir da criação de uma thread até seu término. Você pode considerar o tempo do pior caso (transação mais demorada) em vez da média, a fim de calcular o pior valor. 

2. Número de usuários/requisições simultâneos (acessando para o serviço ao mesmo tempo) (UCN)

Este é o número de solicitações simultâneas durante o tempo de vida da transação. 

3. Número de ‘Threads’ (NT)

Este é o total máximo de ‘threads’ simultâneas permitidas pela licença

4. Tempo de espera (TP)

A fórmula sugerida para cálculo do tempo médio das transações (requisições) é:

WT = ABS ((UCN * ATT) / NT)

ATT pode também ser substituída pelo maior tempo de transação (pior cenário) (LTT)

WT = ABS ((UCN * LTT) / NT)

Nesta situação, o tempo de espera vai mostrar o pior caso.

Se não for possível ter estes dados para efetuar o cálculo, pode-se adotar a regra genérica de 1 fila (thread) atendendo até 10 requisições simultâneas (não intensivas)

 

Benchmark 

A melhor maneira de indicar qual seria o melhor número de ‘threads’ é executar um benchmark. Ainda assim – este pode ser um projeto (de benchmarking) caro, de modo que às vezes é mais barato comprar algumas filas a mais e ter uma reserva.

Se o aplicativo é aberto ao público – pode ser difícil antecipar o número de usuários simultâneos antes da efetiva entrada em produção. Neste caso uma estimativa do pior caso deverá ser feita, e a fórmula pode ser usada para apurar o tempo de espera no pior cenário.

 

Browser Client / Rich Client e Multithreading 

Ao usar multithreading em uma requisição Magic Browser Client / Rich Client, o Enterprise Server suporta o gerenciamento de contextos, que permite um comportamento on-line da web / tarefas Rich Client.

O número de contextos é limitado apenas pelos recursos da máquina, mas não pela licença. Isso significa que o número de usuários que podem ser executados simultaneamente e possuem contextos ativos pode ser maior do que o
número de usuários limitado pela licença.

Um ajuste deve ser realizado no ‘timeout’ de contextos, no MAGIC.INI, para indicar qual o tempo máximo que um contexto pode ser mantido, inativo, na memória do Enterprise Server.

(NOTA: tradução do documento oficial da MSE sobre dimensionamento de filas).