Julio Rossi
Julio Rossi19/12/2020 23:14
Compartilhe

Teoria das Filas - O Custo da Eficiência

  • #Controle de gastos
  • #Arquitetura de Sistemas

A Teoria das Filas parte de uma premissa de que é quase impossível ter uma decisão ótima que zere a fila, porém, é possível ter uma decisão satisfatória que consiga maximizar a eficiência e eficácia da fila.


Uma fila pode ser resumida como um conjunto de demandas a espera de atendimento e processamento. Por exemplo, esse seria o caso dos Threads ( que pode ser considerado como a menor unidade de processamento de um processo).

Um modelo simples de uma fila pode ser representado por:

·        Fonte das Demandas (Input) – Considera-se como fonte as demandas potenciais, por exemplo, grupo de clientes na base.

·        Comportamento de Chegada – As demandas podem solicitar atendimento de forma isolada, de forma grupal, pode sofrer efeitos sazonais, pendulares e etc. Por exemplo, o pico de acessos num site numa Black Friday.

·        Critério de Seleção – Representa o critério que irá orientar a priorização de atendimento, por exemplo, poderíamos pensar em "ordem de chegada".

·        Comportamento de Processamento – O comportamento de processamento, depende de dois grandes componentes: Canal e o Tipo de Atendimento. Ambos podem ser classificados como únicos ou múltiplos. Além disso, o processamento também pode gerar outputs individuais ou em grupos.


O intuito de entender uma fila não é zerar totalmente ela, afinal, tudo tem um custo. Existe um custo de atender a demanda e também o custo de não atender ( que seria o custo da fila).


Digamos que você tem um site instalado no servidor X, devido a todo o seu backend e número de acessos, existe uma demora de 24s para carregar a informação de uma página para outra. Você possui a opção de mudar o site para o servidor Y, que é 50% mais caro, mas ele te permite melhorar o seu carregamento para 12s. Você aumentaria a sua capacidade de processamento e consequentemente o custo do atendimento?


Esse tipo de resposta não é fácil, pois, extrapola as questões tecnológicas, depende muito do negócio.


Felizmente existem alguns indicadores e metas que podem ser aplicados para a mensuração da dinâmica da fila, por exemplo:


·      Utilização do sistema e ociosidade – Razão entre taxas de chegadas e atendimento

·        Número Médio de demandas na fila

·        Tempo médio de espera na fila

·        Tempo médio de atendimento

·        Capacidade de atendimento

·        Intervalo médio entre chegadas de novas demandas


Engana-se quem considerar que toda essa dinâmica das filas precisa de um contexto muito comercial para se aplicar, voltando para as Threads, existe um problema que advém com eles que é: "como devo executar o Thread"?


Lá no Código Fonte Tv, no youtube, tem um video bem bacana falando do assunto e deixo aqui transcrito um trecho bem didático deles:


. Duas grandes estratégias podem ser adotadas:

·        Concorrência com single-core: Essa estratégia envolve priorizar as demandas, as threads, e fazer um pouco de cada uma, just in time, entregando conforme forem terminando.

·        Paralelismo: Parte da mesma estratégia da concorrência, no quesito de priorizar, porém, adotando um atendimento múltiplo, representado pelo número de “cores” envolvidos, exemplo: duo-core, quad-core, hexa-core.


Um exemplo que pode ser citado é o de um malabarista, devido a habilidade dele de lidar com vários objetos ao mesmo tempo, parece que ele está fazendo várias coisas ao mesmo tempo, todavia, na verdade, ele está lidando com um objeto por vez, just in time, de acordo com a prioridade. Nesse cenário, a prioridade sempre irá considerar o objeto que está mais próximo de cair e precisa de um novo impulso.


Já um exemplo de Paralelismo seria, por exemplo, aumentar o número de malabaristas para lidar com o mesmo processo, cada um cuidaria de um objeto.

Roby Pike, criador da Linguagem Go, chegou a proferir a seguinte definição: “Concorrência é sobre LIDAR com várias coisas ao mesmo tempo, enquanto o Paralelismo é sobre FAZER várias coisas ao mesmo tempo.”



Compartilhe
Recomendado para você
  • Curso Unity 3D Game Developer
  • Curso Blockchain Specialist
  • Curso Swift & iOS Developer
Comentários (1)
Leonardo Black
Leonardo Black - 06/05/2021 11:49

Muito bom, obrigado

Praticamente um administrador formado, meu grande foco é me tornar uma peça chave entre a tecnologia e os negócios. Conseguir transitar entre os dois mundos de maneira profunda e agregar valor.
Recomendado para vocêCatalog