Instrução: Analise estes exemplos de sistemas com trade-offs e aplique a lógica ao problema final.
Exemplo 1:
Problema: Processar 120GB de dados. A Opção A processa 10GB/min após 5min de setup. A Opção B processa 8GB/min após 2min de setup. Qual é a escolha mais rápida?
Raciocínio: A: 5 + (120/10) = 17min. B: 2 + (120/8) = 17min. Ambas são equivalentes.
Exemplo 2:
Problema: Compilar dois apps. App1 (30k LOC) depende da LibX v2. App2 (20k LOC) depende da LibX v3 (incompatível). Máquina 1: 1k LOC/min, 10min setup. Máquina 2: 1.2k LOC/min, 15min setup. Minimizar tempo total.
Raciocínio: Atribuir o app de maior LOC (App1) à máquina mais rápida (Máquina 2) e o outro à máquina restante, pois o tempo de setup é custo fixo. Máquina 2: 15 + 30/1.2 = 40min. Máquina 1: 10 + 20/1 = 30min. Tempo total: 40min (o maior dos dois).
Tarefa Real:
Problema: Migrar dois bancos de dados. DB1: 500GB, requer 10min de pré-processamento. DB2: 300GB, requer 15min de pré-processamento. O canal X transmite a 50GB/min após o pré-processamento. O canal Y transmite a 40GB/min, mas não requer pré-processamento. Qual atribuição minimiza o tempo total de migração?
Resposta (Mostre a cadeia de pensamento):
Interpretação
Há dois canais que podem operar em paralelo.
Se um banco vai pelo canal X, há pré-processamento específico do banco antes da transmissão.
Se um banco vai pelo canal Y, não há pré-processamento.
Cálculos por atribuição
DB1 → X, DB2 → Y
DB1 em X: 10 + 500/50 = 10 + 10 = 20 min
DB2 em Y: 300/40 = 7,5 min
Makespan (tempo total): max(20, 7,5) = 20 min
DB1 → Y, DB2 → X
DB1 em Y: 500/40 = 12,5 min
DB2 em X: 15 + 300/50 = 15 + 6 = 21 min
Makespan (tempo total): max(12,5, 21) = 21 min
Resposta
A atribuição que minimiza o tempo total de migração é:
DB1 no canal X
DB2 no canal Y
Tempo total: 20 minutos.
Intuição rápida
Mesmo que individualmente o DB1 seja mais rápido no Y (12,5 min versus 20 min no X), colocar o DB2 no X penaliza o conjunto (21 min), pois o pré-processamento de 15 min do DB2 + taxa de 50 GB/min torna essa perna a mais lenta. O melhor balanceamento de carga é colocar o banco maior (DB1) no canal que fica mais “caro” quando há pré-processamento (X) e o menor (DB2) no canal sem pré-processamento (Y), reduzindo o gargalo final.