|
1 | | -# Repository Sample |
| 1 | +# Docker Offload Performance Tests - Testes Justos |
2 | 2 |
|
3 | | -Este é um repositório de exemplo criado para demonstrar o uso do GitHub. |
| 3 | +Este projeto implementa uma metodologia justa para comparar a performance entre Docker Local e Docker Offload (Build Cloud), eliminando interferências de cache e garantindo condições equivalentes. |
4 | 4 |
|
5 | | -## Uso |
| 5 | +## 🎯 Objetivo |
6 | 6 |
|
7 | | -Ao acessar o repositório, no canto superior direito clique em `Use this template` para começar. |
| 7 | +Realizar uma comparação **verdadeiramente justa** entre: |
| 8 | +- **Docker Local**: Execução em hardware local sem offload |
| 9 | +- **Docker Offload**: Execução na nuvem usando Docker Build Cloud |
8 | 10 |
|
9 | | -## Contato |
| 11 | +## 🚀 Execução dos Testes Justos |
10 | 12 |
|
11 | | -Para mais informações, entre em contato através do [GitHub Sponsors](https://github.com/sponsors/Tech-Preta). |
| 13 | +Para executar os testes com metodologia corrigida: |
| 14 | + |
| 15 | +```bash |
| 16 | +./run_fair_tests.sh |
| 17 | +``` |
| 18 | + |
| 19 | +O script irá: |
| 20 | +1. ✅ Limpar todo cache antes dos testes |
| 21 | +2. 🏠 Executar teste local (contexto `default`) |
| 22 | +3. 🧹 Limpar ambiente entre testes |
| 23 | +4. ☁️ Executar teste cloud (contexto `docker-cloud`) |
| 24 | +5. 📊 Gerar relatório comparativo |
| 25 | + |
| 26 | +## 📁 Arquivos do Projeto |
| 27 | + |
| 28 | +### **Arquivos Principais** |
| 29 | +- **`run_fair_tests.sh`**: Script de testes justos (PRINCIPAL) |
| 30 | +- **`heavy_task.py`**: Tarefa computacional intensiva para teste |
| 31 | +- **`Dockerfile`**: Container determinístico sem cache |
| 32 | +- **`docker-compose.yaml`**: Configuração com builds forçados |
| 33 | + |
| 34 | +### **Documentação** |
| 35 | +- **`README.md`**: Este arquivo (instruções principais) |
| 36 | +- **`METODOLOGIA_CORRIGIDA.md`**: Explicação da metodologia justa |
| 37 | + |
| 38 | +## 🔧 Garantias de Teste Justo |
| 39 | + |
| 40 | +### ✅ **Cache Eliminado** |
| 41 | +- Limpeza completa antes e entre testes |
| 42 | +- `no_cache: true` no docker-compose |
| 43 | +- `docker builder prune -f` forçado |
| 44 | + |
| 45 | +### ✅ **Builds Idênticos** |
| 46 | +- Mesmo Dockerfile para ambos cenários |
| 47 | +- Mesmo docker-compose.yaml |
| 48 | +- Flags `--build --force-recreate --no-deps` |
| 49 | + |
| 50 | +### ✅ **Contextos Controlados** |
| 51 | +- Alternância explícita: `default` ↔ `docker-cloud` |
| 52 | +- Verificação de contexto ativo |
| 53 | +- Reset entre testes |
| 54 | + |
| 55 | +### ✅ **Medição Precisa** |
| 56 | +- Tempo total: build + execução |
| 57 | +- Resultados salvos em CSV |
| 58 | +## 🧪 Tarefa de Teste |
| 59 | + |
| 60 | +O projeto usa uma tarefa computacional intensiva em Python que executa: |
| 61 | +- Operações matemáticas (sin, cos, sqrt) |
| 62 | +- Loop de 100 milhões de iterações (configurável) |
| 63 | +- Medição precisa de tempo de execução |
| 64 | + |
| 65 | +### Configurar Intensidade |
| 66 | +```bash |
| 67 | +# No docker-compose.yaml |
| 68 | +environment: |
| 69 | + ITERATIONS: "200000000" # Para teste mais pesado |
| 70 | +``` |
| 71 | + |
| 72 | +## 🔧 Pré-requisitos |
| 73 | + |
| 74 | +1. **Docker Desktop** com Docker Offload habilitado |
| 75 | +2. **Docker Build Cloud** configurado |
| 76 | +3. **Python 3** (para verificação local) |
| 77 | +4. **bc** para cálculos (já disponível no sistema) |
| 78 | + |
| 79 | +### Verificar Configuração |
| 80 | +```bash |
| 81 | +# Verificar contextos Docker |
| 82 | +docker context ls |
| 83 | + |
| 84 | +# Verificar contexto ativo |
| 85 | +docker context show |
| 86 | + |
| 87 | +# Verificar Build Cloud |
| 88 | +docker buildx ls |
| 89 | +``` |
| 90 | + |
| 91 | +## 📊 Resultados Esperados |
| 92 | + |
| 93 | +Com a metodologia justa, esperamos medir: |
| 94 | + |
| 95 | +### **Diferenças Reais** |
| 96 | +- 🖥️ Hardware: CPU/RAM cloud vs local |
| 97 | +- 🌐 Overhead: Rede e transferência de dados |
| 98 | +- ⚡ Otimizações: Runtime Docker otimizado na nuvem |
| 99 | +- 🏗️ Build: Performance sem cache para ambos |
| 100 | + |
| 101 | +### **Formato dos Resultados** |
| 102 | +- **CSV**: `test_results.csv` com dados brutos |
| 103 | +- **Terminal**: Relatório em tempo real com percentuais |
| 104 | +- **Comparação**: Diferença percentual automática |
| 105 | + |
| 106 | +## 🎯 Cenários de Uso Ideais |
| 107 | + |
| 108 | +Docker Offload é especialmente vantajoso para: |
| 109 | + |
| 110 | +1. **CPU Intensivo**: Como demonstrado nos testes |
| 111 | +2. **Builds Pesados**: Projetos com muitas dependências |
| 112 | +3. **Hardware Limitado**: Laptops, VMs, ambientes restritos |
| 113 | +4. **Equipes**: Cache compartilhado entre desenvolvedores |
| 114 | +5. **CI/CD**: Builds paralelos e escaláveis |
| 115 | + |
| 116 | +## 🚀 Executar Testes Agora |
| 117 | + |
| 118 | +```bash |
| 119 | +# Executa testes justos imediatamente |
| 120 | +./run_fair_tests.sh |
| 121 | + |
| 122 | +# Monitora resultados em tempo real |
| 123 | +# Arquivos gerados: |
| 124 | +# - test_results.csv (dados) |
| 125 | +# - Output detalhado no terminal |
| 126 | +``` |
| 127 | + |
| 128 | +--- |
| 129 | + |
| 130 | +**✅ Projeto padronizado para testes justos e reproduzíveis!** |
| 131 | +3. Experimente com workloads reais do seu projeto |
| 132 | +4. Compare os resultados com diferentes tipos de hardware local |
| 133 | +5. Teste cenários específicos da sua aplicação (builds, ML training, etc.) |
12 | 134 |
|
13 | 135 | --- |
14 | 136 |
|
15 | | -Feito com ❤️ por [Natália Granato](https://github.com/nataliagranato). |
| 137 | +Para mais informações sobre Docker Offload, consulte o documento principal `docker-offload.md`. |
0 commit comments