Capítulo 8 — Arquitetura de computadores
Mapa da aula
Aula 08 publicada. Mapa, exemplo, EX022.
flowchart TD
N0["8.1 A hierarquia"]
N1["8.2 Limitado por quê"]
N2["8.3 Cache de enriquecimento"]
N3["8.4 Raízes de confiança em hardware"]
N4["8.5 Dimensionamento de memória"]
N5["Nota de prática — Disciplina de profiling"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX022"]
Desenho lógico
flowchart LR
N0["8.1 A hierarquia"]
N1["8.2 Limitado por quê"]
N2["8.3 Cache de enriquecimento"]
N3["8.4 Raízes de confiança em hardware"]
N4["8.5 Dimensionamento de memória"]
N5["Nota de prática — Disciplina de profiling"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX022"]
[8.1 A hierarquia]
|
v
[8.2 Limitado por quê]
|
v
[8.3 Cache de enriquecimento]
|
v
[8.4 Raízes de confiança em hardware]
|
v
[8.5 Dimensionamento de memória]
|
v
[Nota de prática — Disciplina de profiling]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX022]
Objetivos de aprendizagem
Você vai (1) relacionar a hierarquia de CPU, memória e armazenamento ao processamento de inteligência; (2) estimar se uma carga de trabalho é limitada por CPU, por memória ou por E/S; (3) explicar o cache para consultas de enriquecimento; (4) reconhecer âncoras de confiança em hardware nos sistemas de coleta.
8.1 A hierarquia
Registradores e caches são rápidos e pequenos; a memória principal é maior e mais lenta; o armazenamento em estado sólido é mais lento ainda; o armazenamento em rede é o mais lento. O conjunto quente do Lantern — os indicadores comparados com o tráfego ao vivo — precisa caber na memória, ou cada comparação espera pelo disco. Kofi verificou isso com um teste simples. Comparar um lote com um conjunto em memória levou alguns milissegundos; as mesmas consultas a um índice em disco levaram dezenas de milissegundos, a maior parte esperando leituras. O arquivo frio pode ficar em armazenamento mais lento, porque os analistas o consultam de vez em quando e podem esperar um segundo por uma resposta.
8.2 Limitado por quê
Interpretar objetos STIX em JSON consome muita CPU. Juntar indicadores com avistamentos consome muita memória. Carregar arquivos consome muita E/S. O profiling identifica o recurso limitante; comprar o hardware errado é comum e caro. Kofi aprendeu isso quando chegou um pedido de discos mais rápidos para resolver um parsing lento. O profiling mostrou que o parser usava um núcleo de processador inteiro enquanto os discos ficavam ociosos. Discos mais rápidos não teriam mudado nada. Um segundo processo worker, que não custou nada além de configuração, praticamente dobrou a vazão. Cada perfil é salvo junto com o hardware em que rodou, para que as comparações posteriores sejam justas.
8.3 Cache de enriquecimento
O enriquecimento — acrescentar dados de registro no estilo WHOIS, DNS passivo ou contexto interno de ativos — muitas vezes repete consultas. Um cache indexado pelo indicador, com tempo de vida (TTL), evita consultas repetidas e respeita os limites de taxa e os termos de terceiros. Dados em cache precisam expirar, tanto pela exatidão quanto porque os termos de alguns provedores limitam a retenção. Kofi define o tempo de vida por provedor, usando o menor entre o que a exatidão exige e o que os termos do provedor permitem. O cache registra quando cada entrada foi obtida, para que um analista saiba se os dados estão frescos.
8.4 Raízes de confiança em hardware
Servidores de coleta que assinam os dados exportados dependem de chaves. Um módulo de segurança de hardware (HSM) ou um TPM mantém as chaves de assinatura fora da memória comum, melhorando a integridade do que o Lantern compartilha. Sem esse módulo, a chave fica em um arquivo que qualquer pessoa com acesso de administrador ao servidor poderia copiar, e uma chave copiada permite a um atacante assinar indicadores falsos em que os parceiros confiariam. Com ele, a assinatura continua funcionando, mas a chave não pode ser exportada. O desenho de Kofi lista quais servidores guardam chaves de assinatura e quem pode usá-las, e os logs do módulo mostram cada operação de assinatura para revisão posterior.
8.5 Dimensionamento de memória
Um milhão de indicadores com média de 200 bytes em um conjunto em memória precisam de cerca de 200 MB mais a sobrecarga; objetos Python podem triplicar isso. Meça. Kofi montou um conjunto de um milhão de strings de teste e o mediu, em vez de confiar na aritmética. O resultado foi várias vezes o tamanho dos dados brutos, porque cada objeto string carrega sua própria sobrecarga. Ele então dimensionou a memória do comparador com espaço para um ano de crescimento e uma margem, e registrou o método de medição para que possa ser repetido quando os volumes mudarem. Uma representação compacta, como armazenar hashes dos valores, poderia reduzir o consumo se a memória ficasse apertada.
Nota de prática — Disciplina de profiling
Kofi faz profiling antes e depois de toda mudança de desempenho e guarda os relatórios. Mudanças que não movem o gargalo medido são revertidas, mesmo que "devessem" ajudar. Esse hábito impede a equipe de acumular otimizações engenhosas que acrescentam complexidade, mas não velocidade.
Exemplo resolvido
O profiling mostra que o comparador do Lantern passa 70% do tempo esperando pelo disco. Kofi move o conjunto ativo de indicadores (cerca de 400.000 entradas) para a memória, reduzindo a latência de comparação de 40 ms para 3 ms por lote, e acrescenta um cache com TTL de 24 horas para as consultas de enriquecimento, a fim de ficar dentro da cota diária de consultas de um provedor.
Caso sintético. Os perfis e os tempos são inventados.
Erros e limites
Caches podem servir dados obsoletos; o TTL é uma escolha de correção, e não apenas de desempenho. Respeite os termos dos provedores sobre retenção.
Exercícios
- EX022 — Recurso limitante. A CPU de um job fica em 15% enquanto a espera por disco é alta. O que o limita? Rubrica: 3 = E/S; mover os dados quentes para a memória ou para armazenamento mais rápido; 2 = só E/S; 1 = CPU; 0 = nenhuma.
- EX023 — Motivos do TTL. Dê dois motivos pelos quais um cache de enriquecimento precisa de TTL. Rubrica: 3 = frescor + termos de retenção/limites de taxa do provedor; 2 = um; 1 = não precisa; 0 = nenhuma.
- EX024 — Estimativa de memória. Estime a memória bruta para 400.000 indicadores × 200 bytes. Rubrica: 3 = 80 MB (com a sobrecarga mencionada); 2 = só o número; 1 = erro de fator 1000; 0 = nenhuma.
Síntese
Saiba qual recurso limita, mantenha o conjunto quente na memória, use cache com expiração e ancore as chaves de assinatura em hardware.
Continue estudando — capítulo 08 de 50
← Capítulo 07 (rascunho) · Índice de capítulos do curso · Capítulo 09 (rascunho) →