Na semana passada, publiquei meus benchmarks iniciais para o impacto do Linux na mitigação do Retbleed como a mais nova vulnerabilidade de execução especulativa da CPU. Conforme observado nos artigos anteriores do Retbleed, no lado da AMD, são os processadores Zen 1/1+/2 afetados, bem como CPUs Bulldozer mais antigas. Esse artigo anterior incluiu benchmarks do Zen 2, enquanto neste artigo são os testes do Zen 1, pois sua situação é um pouco diferente.
Com o Zen 1 e CPUs sem STIBP (Single Threaded Indirect Branch Predictors) para as mitigações do Retbleed, está habilitando o abordagem de mitigação de conversão de retorno não treinada, mas tecnicamente o SMT também precisa ser desabilitado para mitigação completa. Obviamente, desabilitar o SMT significa perder metade dos threads desses processadores Ryzen e EPYC originais. Por padrão, o Linux não está desabilitando o SMT, mas pode ser feito usando a opção de kernel”retbleed=auto,nosmt”(ou”mitigations=auto,nosmt”mais amplamente).
Para ver o impacto da mitigação no Zen 1, tirei a poeira de um AMD Ryzen 7 1700 e testei-o nas seguintes configurações no Linux 5.19 Git:
Padrão atual do Linux-O estado mitigado pronto para uso no Linux 5.19 como está atualmente. Isso atualmente significa em termos de mitigações de CPU, incluindo rebleed: Mitigação de conversão de retorno não treinada; SMT vulnerável + spec_store_bypass: Mitigação de SSB desabilitada via prctl + spectre_v1: Mitigação de barreiras usercopy/swapgs e sanitização de ponteiro __user + spectre_v2: Mitigação de Retpolines IBPB: STIBP condicional: preenchimento de RSB desabilitado. O AMD Zen 1 não é afetado por itlb_multihit, L1TF, MDS, Meltdown, MMIO Stale Data, SRBDS ou TSX Async Abort (TAA).
mitigations=off-Inicializando o Linux 5.19 Git com o sinalizador”mitigations=off”que desativa todas as opções relevantes de mitigação de segurança de CPU selecionáveis em tempo de execução para AMD Zen 1.
retbleed=off-Desativando o recém-introduzido Retbleed mitigações (retornos não treinados para Zen 1), mas deixando as outras mitigações de CPU em vigor para outras vulnerabilidades afetadas.
mitigations=auto,nosmt-A mitigação”completa”de também desabilitar Suporte SMT tão limitado a apenas oito núcleos físicos com um thread por núcleo.
A partir daí, dezenas de benchmarks foram executados para ver o impacto dessas diferentes opções no AMD Ryzen 7 1700.
As cargas de trabalho de E/S continuam sendo uma das áreas mais impactadas nas CPUs Zen pelo Retbleed e outras mitigações relevantes. Indo de retbleed=off, que é efetivamente o padrão anterior para Linux até a semana passada, para o novo padrão atual do Linux, houve um impacto de 13% no desempenho agora no caso de teste PostMark. Isso deixa o Ryzen 7 1700 com cerca de 81% do desempenho neste caso de teste como mitigations=off/pré-2018, quando essas mitigações ainda não foram descobertas/divulgadas.
Para os casos de teste simples que enfatizam a operação operações primitivas do sistema, há uma clara diferença em relação ao Retbleed e outras mitigações acumuladas no Zen 1.
Para redes Linux, o impacto da mitigação do Retbleed também é bastante claro, semelhante aos resultados de E/S. Com o Sockperf, desabilitar o SMT gera uma boa melhoria devido ao fato de sempre ser apoiado por um núcleo de CPU físico.
O desempenho do OpenJDK Java é afetado por essas mitigações, mas ao desabilitar o SMT é outro caso em que o desempenho pode sair à frente devido a não ter dois threads compartilhando um núcleo.
As cargas de trabalho de compilação de código foram minimamente impactadas pelo Retbleed e outras mitigações de segurança da CPU que afetam os processadores AMD Zen 1. Bem, para o estado padrão. Se optar por proteção total e desabilitar o SMT, essa é uma das áreas em que o desempenho certamente prejudica ao compilar grandes bases de código e usar trabalhos paralelos.
A mitigação do Retbleed no Zen 1 gerou um impacto menor no os testes de criptografia cryptsetup com o kernel Linux.
SQLite é outro exemplo real de um impacto de desempenho de E/S do Retbleed.
O programa de manipulação de imagem GIMP ao lidar com abertura e salvar arquivos de imagem grandes também pode ter um desempenho mais lento devido ao Retbleed se realizar modificações com script ou muitos carregamentos/salvamentos, mas para fluxos de trabalho de imagem normais, os artistas no Zen 1 provavelmente não notariam a diferença.
O mesmo vale para outras tarefas envolvidas de E/S, como OCRMyPDF para converter PDFs digitalizados em texto ou RawTherapee para lidar com imagens RAW grandes.
Desativar o SMT pode prejudicar muito as cargas de trabalho de banco de dados como RocksDB.
Pelo menos o desempenho do navegador da Web no AMD Zen 1 com mitigações não foi afetado, pois tanto quanto CPUs Intel mais antigas.
Aqueles que desejam ver ainda mais desses benchmarks de mitigação de CPU AMD Zen 1 Linux podem encontrar todos os meus dados brutos de benchmark via esta página de resultados do OpenBenchmarking.org. Especialmente com o Zen 4 ao virar da esquina, se ainda estiver no AMD Zen 1, talvez seja hora de considerar a atualização em breve, se o objetivo for desempenho máximo e eficiência de energia muito melhor em comparação com essas CPUs mais antigas.