Trapaças de referência atacam de volta: como o OnePlus e outros foram pegos em flagrante e o que fizeram sobre isso

Alguns anos atrás, houve um alvoroço considerável, quando vários grandes fabricantes foram pegos traindo benchmarks. OEMs de todos os tamanhos (incluindo Samsung, HTC, Sony e LG) participaram dessa corrida armamentista para tentar enganar os usuários sem serem pegos, mas, felizmente, eles finalmente pararam de trapacear após algumas discussões francas com especialistas do setor e jornalistas.

Em 2013, descobriu-se que a Samsung estava aumentando artificialmente a velocidade do clock da GPU em certas aplicações, desencadeando uma série de investigações sobre fraudes de benchmark em toda a gama de fabricantes. Na época, a investigação constatou que quase todos os fabricantes, exceto o Google / Motorola, estavam envolvidos em trapaças de benchmark. Eles estavam investindo tempo e dinheiro em tentativas de obter um desempenho extra extra de seus telefones em benchmarks, de maneiras que não teriam nenhum efeito positivo no uso diário, na tentativa de enganar os usuários a pensar que seus telefones eram mais rápidos. do que eles realmente eram. Esses esforços de desenvolvimento percorreram toda a gama, desde o ajuste de pisos de velocidade do relógio, forçando as velocidades do relógio até as configurações máximas, até a criação de estados de energia mais altos e velocidades especiais do relógio que só estavam disponíveis quando comparados, com esses esforços geralmente resultando em apenas uma alguns pontos percentuais de aumento no benchmark.

Houve uma indignação substancial quando foi descoberta, pois essas tentativas de trapaça nos benchmarks eram contrárias ao próprio ponto dos próprios benchmarks. A maioria dos benchmarks não existe para informar o desempenho máximo teórico de um telefone em condições de laboratório que não são reproduzíveis no uso diário, mas serve para fornecer um ponto de referência para comparações do mundo real entre telefones. Depois de um pouco de uma repreensão pública (e algumas conversas privadas) de publicações de tecnologia, líderes do setor e público em geral, a maioria dos fabricantes recebeu a mensagem de que a trapaça de benchmark simplesmente não era aceitável e parou como resultado. A maioria dos poucos que não pararam nesse ponto parou logo depois, pois houve mudanças substanciais no número de benchmarks executados, na tentativa de desencorajar a trapaça nos benchmarks (reduzindo o benefício). Muitos benchmarks foram feitos por mais tempo, para que a aceleração térmica da maximização da velocidade do relógio se tornasse imediatamente aparente.

Quando entrevistamos John Poole, o criador do Geekbench, o tópico de trapaça nos benchmarks e o que empresas como a Primate Labs podem fazer para impedir que isso apareça. A Primate Labs, em particular, tornou o Geekbench 4 um pouco mais longo que o Geekbench 3, em parte para reduzir os efeitos de trapaça nos benchmarks. Reduzir os benefícios para garantir que os custos de desenvolvimento da trapaça de referência não valham a pena.

“O problema é que, quando tivermos esses grandes tempos de execução, se você começar a jogar, aumentando a velocidade do relógio ou desativando os governadores ou algo assim, começará a colocar um perigo real no telefone. ... Se você vai jogar ... você não vai tirar muito proveito disso. Você ainda pode obter alguns por cento, mas vale mesmo a pena? ”- John Poole


O que aconteceu

Infelizmente, devemos relatar que alguns OEMs começaram a trapacear novamente, o que significa que devemos estar atentos mais uma vez. Felizmente, os fabricantes tornaram-se cada vez mais responsivos a problemas como esse e, com a devida atenção, isso pode ser corrigido rapidamente. É um pouco chocante ver os fabricantes implementando trapaças de benchmark, considerando o quão ruim a reação foi na última vez em que foi tentada (com alguns benchmarks excluindo completamente os dispositivos de trapaças de suas listas de desempenho). Com essa reação contrária à quantidade mínima de ganhos de desempenho das trapaças de benchmark (normalmente, com a maioria das tentativas resultando em um aumento de menos de 5% na pontuação da última vez), esperávamos realmente que tudo isso estivesse para trás.

O momento dessa tentativa é especialmente inoportuno, já que, há alguns meses, a trapaça nos benchmarks deixou o mundo como uma preocupação puramente entusiasta e entrou na esfera pública quando a Volkswagen e a Fiat Chrysler foram flagradas trapaceando em seus benchmarks de emissões. Ambas as empresas implementaram um software para detectar quando seus carros a diesel estavam sendo submetidos a testes de emissões e fizeram com que passassem para um modo de baixas emissões que reduzisse a economia de combustível, numa tentativa de competir com carros a gasolina em eficiência de combustível, mantendo-se dentro dos limites regulamentares. para testes de emissões. Até agora, o escândalo resultou em bilhões de multas, dezenas de bilhões de custos de recall e cobranças - certamente não é o tipo de retribuição que os OEMs receberiam por aumentar suas pontuações de benchmark, que são apenas para comparação de usuários e não são usadas para medir quaisquer requisitos regulatórios.

Enquanto investigamos como a Qualcomm alcança velocidades mais rápidas de abertura de aplicativos no então novo Qualcomm Snapdragon 821, notamos algo estranho no OnePlus 3T que não conseguimos reproduzir no Xiaomi Mi Note 2 ou no Google Pixel XL, entre outros dispositivos Snapdragon 821. Nosso editor-chefe, Mario Serrafero, estava usando o Qualcomm Trepn e o Snapdragon Performance Visualizer para monitorar como a Qualcomm “aumenta” a velocidade do clock da CPU ao abrir aplicativos, e notou que certos aplicativos no OnePlus 3T não estavam voltando ao seu velocidades normais de marcha lenta sem carga após a abertura. Como regra geral, evitamos testar benchmarks com as ferramentas de monitoramento de desempenho abertas sempre que possível, devido à sobrecarga de desempenho adicional que elas trazem (principalmente em dispositivos que não são do Snapdragon, onde não existem ferramentas oficiais de área de trabalho); no entanto, nesse incidente, elas nos ajudaram observe algum comportamento estranho que provavelmente não teríamos percebido.

Ao entrar em certos aplicativos de benchmarking, os núcleos do OnePlus 3T permaneceriam acima de 0, 98 GHz para os pequenos núcleos e 1, 29 GHz para os grandes núcleos, mesmo quando a carga da CPU caía para 0%. Isso é muito estranho, pois normalmente os dois conjuntos de núcleos caem para 0, 31 GHz no OnePlus 3T quando não há carga. Ao ver isso pela primeira vez, ficamos preocupados com o fato de o dimensionamento da CPU do OnePlus ter simplesmente sido um pouco estranho, no entanto, após testes adicionais, chegamos à conclusão de que o OnePlus deve ter como alvo aplicativos específicos. Nossa hipótese era que o OnePlus estava mirando esses benchmarks pelo nome e entrando em um modo alternativo de escalabilidade da CPU para aumentar suas pontuações nos benchmarks. Uma de nossas principais preocupações era que o OnePlus estava possivelmente definindo restrições térmicas mais frouxas nesse modo, a fim de evitar os problemas que eles tinham com o OnePlus One, OnePlus X e OnePlus 2, onde os telefones estavam lidando com os núcleos adicionais disponíveis on-line para o multi- seção central do Geekbench mal e, ocasionalmente, diminuindo substancialmente como resultado (até o ponto em que o OnePlus X às vezes pontuava mais baixo na seção multicore do que na seção single core). Você pode encontrar muita otimização em nossa análise do OnePlus 2, onde descobrimos que o dispositivo pode eliminar até 50% de sua pontuação de vários núcleos no Geekbench 3. Mais tarde, quando começamos a comparar a otimização e as térmicas entre os dispositivos, o OnePlus 2 se tornou um exemplo de manual do que os OEMs devem evitar.

Entramos em contato com a equipe da Primate Labs (os criadores do Geekbench), que foram fundamentais para expor a primeira onda de trapaça nos benchmarks e nos associamos a eles para testes adicionais. Trouxemos um OnePlus 3T ao escritório da Primate Labs em Toronto para algumas análises iniciais. O teste inicial incluiu um despejo de ROM que descobriu que o OnePlus 3T estava procurando diretamente por alguns aplicativos por nome. Mais notavelmente, o OnePlus 3T estava procurando Geekbench, AnTuTu, Androbench, Quadant, Vellamo e GFXBench. Como a essa altura tínhamos evidências bastante claras de que o OnePlus estava engajado em fraudes de benchmark, a Primate Labs construiu para nós uma versão "Bob's Mini Golf Putt" do Geekbench 4. Graças às mudanças substanciais entre o Geekbench 3 e 4, a versão “Mini Golf” teve que ser reconstruída do zero, especificamente para este teste. Esta versão do Geekbench 4 foi projetada para evitar qualquer detecção de benchmark, a fim de permitir que o Geekbench seja executado como um aplicativo normal em telefones que estão trapaceando (indo além do renomeamento do pacote que engana a maioria das tentativas de trapacear nos benchmarks).


Um Exemplo Surpreendente

Imediatamente após a abertura do aplicativo, a diferença ficou clara. O OnePlus 3T estava ocioso em 0, 31 GHz, da mesma forma que na maioria dos aplicativos, em vez de 1, 29 GHz para os grandes núcleos e 0, 98 GHz para os pequenos núcleos, como no aplicativo Geekbench comum. O OnePlus tornou o controlador de CPU mais agressivo, resultando em um prático piso de velocidade de relógio artificial no Geekbench que não estava presente na construção oculta do Geekbench. Não se baseava na carga de trabalho da CPU, mas no nome do pacote do aplicativo, que a compilação oculta poderia enganar. Embora a diferença entre as corridas individuais seja mínima, os relaxamentos da regulagem térmica brilham em nosso teste de desempenho sustentado, mostrado abaixo.

De nossos testes, parece que esse é um "recurso" do Hydrogen OS há um bom tempo e não foi adicionado ao Oxygen OS até que a comunidade construísse o lançamento do Nougat (após a fusão das duas ROMs). É um pouco decepcionante ver, especialmente à luz dos problemas de software que o OnePlus teve este mês após a fusão das ROMs, desde as vulnerabilidades do gerenciador de inicialização até os problemas de conformidade com a GPL. Esperamos que, à medida que a poeira se acalme após a fusão das duas equipes, o OnePlus retorne à forma e continue a se posicionar como uma opção favorável ao desenvolvedor.

Com a versão “Mini Golf” do Geekbench em mãos, saímos e começamos a testar outros telefones para trapacear também. Felizmente, nossos testes não mostram trapaças pelas empresas envolvidas no escândalo há meia década. HTC, Xiaomi, Huawei, Honor, Google, Sony e outros parecem ter pontuações consistentes entre a versão normal do Geekbench e a versão "Mini Golf" em nossos dispositivos de teste.

Infelizmente, encontramos evidências possíveis de trapaça nos benchmarks que ainda não conseguimos confirmar em algumas outras empresas, que iremos investigar mais adiante. O pior exemplo disso foi no Meizu Pro 6 Plus, equipado com o Exynos 8890, que levou a trapaça do benchmark a outro extremo.


Um Exemplo Terrível

A Meizu historicamente definiu sua escala de CPU de maneira extremamente conservadora. Notavelmente, eles geralmente configuram seus telefones para que os grandes núcleos raramente fiquem online, mesmo quando estão em seu "modo de desempenho", fazendo com que os principais processadores (como o excelente Exynos 8890) que eles colocam em seus principais telefones funcionem como processadores intermediários. Isso ocorreu no ano passado, quando a Anandtech chamou a Meizu por seu baixo desempenho nos benchmarks JavaScript da Anandtech no Meizu Pro 6 baseado no Mediatek Helio X25, e observou que os grandes núcleos permaneceram off-line durante a maior parte do teste (quando o teste deveria ter sido rodando quase exclusivamente nos grandes núcleos). Anandtech notou na semana passada que uma atualização de software havia sido enviada para o Meizu Pro 6, que finalmente permitia que o Meizu usasse esses núcleos ao máximo. O editor sênior de smartphones da Anandtech, Matt Humrick, observou que “Depois de atualizar para o Flyme OS 5.2.5.0G, o PRO 6 tem um desempenho substancialmente melhor. As pontuações de Kraken, WebXPRT 2015 e JetStream melhoram em cerca de 2x-2, 5x. Aparentemente, a Meizu ajustou o valor do limite de carga, permitindo que os segmentos migrassem para os núcleos A72 com mais frequência para obter melhor desempenho. ”

Infelizmente, parece que, em vez de melhorar o dimensionamento da CPU de seus novos dispositivos para obter melhores pontuações de benchmark, eles parecem ter configurado o telefone para usar os grandes núcleos quando determinados aplicativos estão em execução.

Ao abrir um aplicativo de benchmarking, nosso Meizu Pro 6 Plus recomenda que você mude para o "Modo Performance" (que por si só é suficiente para confirmar que eles estão procurando nomes de pacotes específicos) e parece fazer uma diferença substancial. Quando no “Modo Equilíbrio” padrão, o telefone tem pontuações consistentes em torno de 604 e 2220 nas seções de núcleo único e multinúcleo do Geekbench, mas no “Modo de Desempenho” ele pontua 1473 e 3906, em grande parte graças aos grandes núcleos que ficam parados para a maioria do teste no “Modo Equilíbrio” e ativando no “Modo Desempenho”. Meizu parece travar os pequenos núcleos na velocidade máxima de 1, 48 GHz e definir um piso rígido para dois de seus grandes núcleos de 1, 46 GHz ao executar o Geekbench enquanto estiver no "Modo de desempenho" (com os outros dois grandes núcleos escalando livremente), e de forma bastante agressiva), que não vemos ao executar a compilação "Mini-golfe" .

Embora seja capaz de escolher entre um modo de alta potência e um modo de baixa potência, pode ser um recurso interessante, nesse caso, parece ser nada mais que um truque de salão. O Meizu Pro 6 Plus vê pontuações decentes no "Modo de desempenho" para o aplicativo Geekbench normal, mas ao usar a versão "Mini Golf" do Geekbench, ele volta ao mesmo nível de desempenho que o quando está definido como "Modo Equilíbrio". O estado de desempenho mais alto do Meizu Pro 6 Plus é apenas para avaliação comparativa, não para o uso cotidiano real.

Uma coisa a ser observada é que, quando testamos o Meizu Pro 6 Plus no “Performance Mode” com a construção secreta do Geekbench, os grandes núcleos ficaram online se estivéssemos gravando a velocidade do relógio com o Qualcomm Trepn. Ainda não determinamos se o Meizu está reconhecendo que o Trepn está executando e ativando os grandes núcleos em parte por causa disso, ou se simplesmente está ativando os grandes núcleos devido à carga extra de CPU que ele cria. Embora possa parecer contra-intuitivo que uma carga adicional em segundo plano (como quando mantivemos os gráficos de desempenho ativados durante o teste) aumentaria os resultados de uma referência, a escala conservadora do Meizu poderia significar que a sobrecarga extra era suficiente para empurrá-la a borda e coloque os grandes núcleos em ação, melhorando o desempenho de todas as tarefas.


Quando OEMs receptivos tratam de feedback…

Após nossos testes, contatamos o OnePlus sobre os problemas que encontramos. Em resposta, o OnePlus prometeu rapidamente parar de segmentar aplicativos de benchmarking com suas trapaças de benchmark, mas ainda pretende mantê-lo para jogos (que também são avaliados). Em uma versão futura do OxygenOS, esse mecanismo não será acionado por benchmarks . O OnePlus também recebeu nossa sugestão de adicionar uma alternância, para que os usuários saibam o que está acontecendo sob o capô e, no mínimo, a vantagem injusta e enganosa nos benchmarks deve ser corrigida. No entanto, devido ao feriado do Ano Novo Chinês e à sua lista de pendências de recursos, pode demorar um pouco até vermos as opções de personalização voltadas para o usuário para esse recurso de desempenho. Embora corrigir o comportamento sozinho seja uma melhoria, ainda é um pouco decepcionante ver em aplicativos regulares (como jogos), pois é uma muleta direcionar aplicativos específicos, em vez de melhorar a escala real de desempenho. Ao aumentar artificialmente a agressividade do processador e, portanto, o relógio acelera para aplicativos específicos, em vez de melhorar a capacidade de seus telefones de identificar quando ele realmente precisa de velocidades mais altas, o OnePlus cria um desempenho inconsistente para seus telefones, que só se tornará mais aparente quando o telefone fica mais velho e mais jogos que o OnePlus não tem como alvo são lançados. No entanto, atualmente a implementação permite que os jogos tenham um desempenho melhor. O OnePlus também forneceu uma declaração para este artigo, que você pode ler abaixo:

'Para oferecer aos usuários uma melhor experiência do usuário em aplicativos e jogos com muitos recursos, especialmente gráficos, implementamos certos mecanismos na comunidade e o Nougat constrói para fazer com que o processador seja executado de forma mais agressiva. O processo de acionamento para aplicativos de benchmarking não estará presente nas próximas versões do OxygenOS no OnePlus 3 e OnePlus 3T. '

Temos o prazer de ouvir que o OnePlus removerá a trapaça de referência de seus telefones. No futuro, continuaremos a tentar pressionar os OEMs para que sejam mais amigáveis ​​ao consumidor sempre que possível e estaremos atentos a futuras fraudes nos benchmarks.

Infelizmente, a única resposta real para esse tipo de engano é a vigilância constante . Como comunidade de entusiastas de smartphones, precisamos ficar de olho nas tentativas de enganar usuários como esse. Não estamos interessados ​​nas pontuações de benchmark, mas no que dizem os benchmarks sobre o desempenho do telefone. Embora a trapaça de benchmark ainda não estivesse ativa no OnePlus 3 quando a revisamos, uma simples atualização de software foi suficiente para adicionar esse "recurso" enganoso e ilustra claramente que a verificação dos dispositivos para trapaça de benchmark no primeiro lançamento não é suficiente. Problemas como esse podem ser adicionados dias, semanas, meses ou até anos após o lançamento do dispositivo, inflando artificialmente as médias globais coletadas pelos benchmarks meses abaixo, influenciando o resultado final do banco de dados. Deve-se notar que, mesmo com esses ajustes que os fabricantes tiveram que investir tempo e dinheiro para desenvolver, normalmente vemos apenas um aumento de alguns pontos percentuais nas pontuações de benchmark (excluindo alguns casos adicionais como o Meizu, onde a trapaça está encobrindo muito maior problemas). Alguns pontos percentuais, muito menores do que a diferença entre os dispositivos com melhor e pior desempenho. Argumentamos, no entanto, que, com os dispositivos executando hardware cada vez mais semelhante, esses pontos percentuais extras podem ser o fator decisivo nos gráficos de classificação que os usuários procuram. Melhor otimização do driver e dimensionamento mais inteligente da CPU podem ter um efeito absolutamente maciço no desempenho do dispositivo, com a diferença entre a pontuação do dispositivo baseado no Qualcomm Snapdragon 820 de melhor desempenho e o pior (de um grande OEM) com desempenho superior a 20% no Geekbench. Vinte por cento da otimização do driver, em vez de alguns pontos percentuais de gastar tempo e dinheiro para enganar seus usuários. E isso é apenas o esforço de desenvolvimento que pode afetar as pontuações de referência. Muitos dos maiores benefícios de investir na melhoria do software de um dispositivo nem sempre aparecem em benchmarks, com o OnePlus oferecendo excelente desempenho no mundo real em seus dispositivos. Realmente deve ficar claro onde os esforços de desenvolvimento de uma empresa devem se concentrar neste caso. Estamos alcançando mais empresas que trapaceiam nos benchmarks conforme os encontramos e esperamos que eles sejam tão receptivos quanto o OnePlus.


Gostaríamos de agradecer à equipe do Primate Labs mais uma vez por trabalhar conosco para descobrir esse problema. Teria sido substancialmente mais difícil testar adequadamente o Benchmark Cheating sem a edição “Mini Golf” do Geekbench.