Les repères et les mesures de performance sont un élément essentiel de l’évaluation des appareils et font partie intégrante du processus d’examen pour de nombreuses personnes, y compris les consommateurs réels ainsi que les publications ou les analystes comme nous-mêmes. Dans le passé, lorsque cette relation entre les benchmarks et les applications du monde réel était rompue, nous avons toujours essayé d’exposer un tel comportement afin que les fournisseurs corrigent leurs erreurs, ce qui a conduit à de nombreux articles au fil des ans :

De temps en temps, ces sujets refont toujours surface alors que les fournisseurs tentent de « différencier » leurs appareils parmi la foule – c’est un processus répété qui, malheureusement, ne nous surprend plus vraiment quand cela se produit.

L’article d’aujourd’hui s’inscrit dans cette catégorie d’articles et couvre plus spécifiquement le dernier téléphone phare de OnePlus, OnePlus 9 Pro, et comment son comportement en termes de performances parvient en effet à être extrêmement unique dans le paysage mobile actuel. C’est quelque chose de si inhabituel et déroutant, car cela brouille vraiment la frontière entre l’optimisation de la batterie, la tricherie des performances et la fausse représentation générale des spécifications de l’appareil.

Nous avons détecté que OnePlus met sur liste noire les applications populaires loin de ses cœurs les plus rapides, ce qui ralentit les charges de travail typiques telles que la navigation Web. Nous avons confirmé que (a) les benchmarks ou (b) les applications inconnues obtiennent des performances optimales ; la plupart des applications non de référence les plus populaires obtiennent des performances considérablement réduites. C’est peut-être pour améliorer la durée de vie de la batterie au détriment des performances, mais cela signifie que les résultats de référence réguliers sont quelque peu inutiles pour l’expérience utilisateur.

Commencer avec des chiffres de référence étranges

Comme toujours avec ces histoires, tout commence lorsque l’on découvre une étrange bizarrerie lors du passage en revue du processus d’examen habituel. Le OnePlus 9 Pro est sorti début avril, mais en raison d’autres travaux en cours, nous n’avons jamais pu revoir complètement le téléphone jusqu’à présent – ​​eh bien, c’est aussi un peu retardé en raison de l’article d’aujourd’hui.

Lors des tests, j’avais rencontré quelque chose qui m’a vraiment rendu perplexe, et a attiré mon attention; des chiffres de référence du navigateur lents apparemment inexplicables qui ne correspondaient à aucun autre appareil Snapdragon 888 du marché, n’obtenant qu’une fraction des scores et des performances des autres appareils.

OnePlus 9 Pro – Performances Chrome et Vivaldi

En particulier, Chrome semblait souffrir d’un comportement extrêmement étrange qui se terminait au pire par le navigateur ne pouvant utiliser que les petits cœurs Cortex-A55 du SoC.

Dans la première/gauche vidéo – je démarre Chrome frais et j’exécute le benchmark Speedometer 2.0 basé sur un navigateur. Lors de la première exécution, le téléphone gère un score de 61,5 – un score bas qui est très anormal pour un Snapdragon 888. La surveillance du comportement du processeur pendant l’exécution indique que le système ne charge jamais le noyau Cortex-X1 du Snapdragon 888, et exécute plutôt la référence sur les cœurs Cortex-A78. De plus, ceux-ci ne fonctionnent qu’à 2 GHz au lieu de leur maximum de 2,41 GHz. Ce qui est plus déroutant, c’est que lors de la réexécution immédiate du test en séquence, la charge de travail est maintenant complètement isolée des petits cœurs Cortex-A55, avec un score horrible de 16,8.

Nous reviendrons un peu plus en détail sur les navigateurs un peu plus tard, mais la seule façon dont j’ai réussi à atteindre les performances maximales du Snapdragon 888 et à charger les cœurs X1 dans le benchmark était Vivaldi, ce qui a donné un score de 107, ce qui est conforme aux autres téléphones Snapdragon 888. Ce qui est tout à fait déroutant cependant, c’est que même si ce score était reproductible dos à dos, il n’était jamais réalisable que sur une nouvelle installation du navigateur. La fermeture de l’application et son redémarrage l’ont amenée à ne plus fonctionner sur les cœurs Cortex-X1 et à ne fonctionner que sur les cœurs Cortex-A78 – cette fois-ci à la fréquence maximale de 2,41 GHz.

Dans aucun autre conteneur WebView intégré à aucune application, je n’ai jamais pu faire fonctionner le contenu Web sur les cœurs X1, ou si cela fonctionnait, il agissait comme Vivaldi en ce sens qu’il fonctionnait une fois puis plus jamais.

Compteur de vitesse 2.0 - OS WebView (64b) JetStream 2 - Vue Web du système d'exploitation (64b)

Cela a abouti à des chiffres de référence vraiment étranges qui décrivent le OnePlus 9 Pro comme un appareil économique du début de 2010, avec des performances horribles.

Le fait est que ces chiffres ne correspondaient à aucun autre score de référence de l’appareil. Tous nos benchmarks internes ainsi que les benchmarks tiers ont présenté des performances normales avec ce que vous attendez d’un téléphone Snapdragon 888, ne montrant rien de particulièrement différent.

Plonger plus loin : Traces de détection, code noyau de OnePlus

Naturellement, ce comportement déroutant a piqué mon intérêt alors que j’essayais de comprendre ce qui se passait et ce qui ne va pas. En examinant les journaux du système d’exploitation de l’appareil, j’ai réussi à détecter un comportement reproductible entre les applications qui se comportaient de manière extrêmement étrange et celles qui ne le faisaient pas.

En particulier, il existe des entrées concernant une sorte de service OnePlus Performance qui s’exécute sur le téléphone et gère les demandes de qualité de service. Généralement, ces types de mécanismes ne sont pas particulièrement intéressants car de nombreux fournisseurs ont des mécanismes côté framework OS pour permettre de meilleures expériences de performances, comme par exemple lors du lancement ou du basculement entre les applications. Ce qui était étrange à propos de OnePlus ici, c’est qu’il ne traitait pas toutes les applications de la même manière :

I/OPPerf: perfAcquire # perflock change #: SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: perfAcquire # SCHEDTUNE change # : SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: mayPerfRelease # : SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: mayPerfRelease # reset SCHEDTUNE # : SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: perfAcquire # SPerfInfo{com.android.chrome 160 cpu_bouncing_02 0}

I/OPPerf: perfAcquire # set SCHEDTUNE #: SPerfInfo{com.android.chrome 160 cpu_bouncing_02 0}

Dans cet extrait de journal, nous voyons que le service acquiert un verrou de performance schedtune (essentiellement un certain niveau de QoS) lorsqu’il entre dans le lanceur par défaut, et lorsqu’il s’en éloigne, il libère ce verrou. Lors du passage à Chrome, il acquiert également un manque avec un paramètre appelé « cpu_bouncing_02 » – un peu plus de détails plus tard.

I/OPPerf: perfAcquire # SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: perfAcquire # set SCHEDTUNE #: SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: mayPerfRelease # : SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

I/OPPerf: mayPerfRelease # reset SCHEDTUNE # : SPerfInfo{net.oneplus.launcher 160 cpu_bouncing_01 0}

Ce qui est étrange, c’est que lors du passage à un navigateur tiers tel que Vivaldi, le verrou n’apparaît pas et le service de performance ne fait jamais rien lorsqu’il quitte le lanceur.

J’étais curieux de savoir ce que cpu_bouncing est censé être et bien sûr, il y a un module OnePlus dans les modifications du noyau de l’entreprise qui semble être lié aux politiques et configurations personnalisées du régulateur de fréquence du processeur.

Au-delà de cela, il semble également que OnePlus ait apporté quelques modifications au planificateur en ajoutant ce qu’il appelle un mécanisme de décision de placement de threads ou TPD qui permet des masques d’affinité CPU personnalisés, limitant les placements de threads et de tâches sur la base d’une classification qui va au-delà de l’affinité CPU générique habituelle du système, ou même des cpusets d’applications de framework par défaut Android. Cela me semble être le mécanisme qui limite les charges de travail à être placées sur les cœurs Cortex-X1 – ou même les cœurs A78 à certains endroits.

Une liste noire au lieu d’une liste blanche – Spoofing d’applications populaires

Jusqu’à présent, ce que nous avons trouvé, c’est qu’il semble que le système d’exploitation de OnePlus détecte l’application en cours d’exécution et impose différents comportements de CPU DVFS et de planificateur en fonction de ce que vous exécutez. En raison du comportement observé précédemment mentionné dans les journaux du système d’exploitation lors du passage à Chrome ou à d’autres applications (j’utilise l’application Twitter officielle ici à titre d’exemple), un moyen de confirmer l’écart de performances consiste simplement à usurper une application personnalisée pour identifier lui-même comme l’une de ces applications détectées, ce que j’ai fait avec notre application de jeu d’outils personnalisée :

Dans notre test de suivi personnalisé de la mise à l’échelle de la fréquence du processeur, qui fonctionne sur des échelles de temps absolues avec des granularités de la microseconde, nous voyons immédiatement qu’il y a une grande différence entre exécuter le test comme une charge de travail quelconque et l’exécuter comme les applications Chrome ou Twitter. En tant que test anonyme, le comportement du processeur est généralement conforme à ce que nous verrions dans l’appareil Qualcomm, bien qu’un peu plus agressif en raison de OnePlus utilisant une fenêtre de suivi de charge de 8 ms. Le processeur atteint rapidement les cœurs X1 à 2,84 GHz comme on pouvait s’y attendre.

Les variantes falsifiées Chrome et Twitter du même test se comportent de manière très différente et la mise à l’échelle est beaucoup plus lente, atteignant des états de performances maximales 3 à 4 fois plus lents. C’est généralement toujours bien, mais ce qui est vraiment préoccupant ici, c’est encore une fois que les charges de travail n’atteignent jamais les cœurs X1, ou seulement à des fréquences très réduites bien en deçà de l’état de 2,84 GHz.

Scores estimés SPECint2006 - OnePlus 9 Pro

Nous avons confirmé que la mise à l’échelle est différente, mais quelles sont exactement les performances qui en résultent ? En exécutant la suite SPEC déguisée à la fois en Chrome et en Twitter, nous pouvons constater des différences considérables dans les performances résultantes, par rapport à l’exécution de la charge de travail en tant qu’application non détectée.

Dans la variante falsifiée chromée, il semble que la charge de travail soit autorisée à évoluer jusqu’aux cœurs Cortex-X1 du Snapdragon 888, mais ceux-ci sont limités à 2,26 GHz au lieu de 2,84 GHz. Cette réduction de 20 % de la fréquence s’accompagne d’une réduction correspondante de 20 % de la performance au test.

Dans la variante usurpée de Twitter, la charge de travail n’atteint jamais les cœurs X1 et tombe à la place à un état stable de 2 GHz sur les cœurs Cortex-A78. Les performances ici sont en conséquence assez maigres, affichant seulement 64% de ce que le Snapdragon 888 est censé réaliser. Ce chiffre ici correspond également aux chiffres de référence du navigateur plus tôt lorsqu’ils sont programmés sur les cœurs A78.

GeekBench 5 - OnePlus 9 Pro

Nous avons également contacté John Poole de Primate Labs pour reproduire le comportement dans une référence populaire telle que GeekBench. Spoofing GeekBench 5 en tant que Chrome ou Twitter entraîne également des chiffres de référence nettement inférieurs, 20 % inférieurs aux performances de pointe du Snapdragon 888. Les cœurs X1 semblent ici aller à 2380 MHz, ce qui correspond à la limitation trouvée dans les sources du noyau OnePlus. , et les cœurs A78 ne dépassent jamais les 2 GHz dans les tests multithreads.

Je ne sais pas trop pourquoi nous constatons ici un écart de comportement à un seul thread entre SPEC et GB5, et pourquoi ma boîte à outils de test s’est dégradée beaucoup moins en termes de performances, mais cela semble être lié aux politiques de placement de thread extrêmement alambiquées de OnePlus.

Quelles applications sont concernées et le vrai éléphant dans la pièce

Nous avons principalement parlé de Chrome et Twitter jusqu’à présent, mais la grande question ici est de savoir quelles autres applications sont affectées et détectées par le mécanisme de limitation des performances de OnePlus. Bien que je n’aie pas découvert les goûts d’une arme fumante en termes de liste noire réelle utilisée pour la détection d’applications – probablement enfouie profondément dans les cadres du système d’exploitation, la meilleure chose à faire serait de simplement tester diverses applications populaires et de confirmer qu’ils soient détectés ou non :

02

us.zoom.videomeetings

com.whatsapp

com.facebook.katana

com.zhiliaoapp.musically (TikTok)

com.instagram.android

com.snapchat.android

com.google.android.youtube

com.chrome.beta

com.android.chrome

01

com.android.settings

net.oneplus.launcher

net.oneplus.forums

net.oneplus.weather

com.oneplus.backuprestore

com.oneplus.filemanager

com.oneplus.note

com.oneplus.gallery

com.oneplus.camera

com.reddit.frontpage

com.twitter.android

com.amazon.mShop.android.shopping

com.android.vending

com.dropbox.android

org.mozilla.firefox

com.google.android.dialer

com.google.android.gm

com.google.android.documentsui

com.google.android.apps.docs.editors.docs

com.google.android.apps.photos

com.google.android.apps.meetings

com.google.android.apps.messaging

com.linkedin.android

com.discord

com.netflix.mediaclient

com.king.candycrushsaga

com.adobe.lrmobile

com.adobe.reader

tv.twitch.android.app

com.microsoft.emmx

com.brave.browser

com.nianticlabs.pokemongo

com.microsoft.teams

com.adobe.scan.android

org.videolan.vlc

com.strava

com.amazon.avod.thirdpartyclient

com.airbnb.android

com.ubercab

com.ubercab.eats

com.microsoft.office.outlook

com.microsoft.office.excel

com.microsoft.office.powerpoint

com.microsoft.office.officehubrow

com.microsoft.office.word

Cette liste n’est en aucun cas exhaustive, mais représente simplement les applications que j’ai testées avant de la juger suffisante pour faire passer le message.

Ce qui est évident ici, c’est qu’il ne s’agit pas d’un mécanisme s’appliquant uniquement à une poignée d’applications, mais s’applique à à peu près tout ce qui a n’importe quel niveau de popularité dans le Play Store, y compris l’ensemble de la suite d’applications de Google, toutes les applications Office de Microsoft, toutes les applications de médias sociaux populaires et tout navigateur populaire tel que Firefox, Samsung Internet ou Microsoft Edge. Vivaldi était l’un des navigateurs qui n’a pas été détecté et par la suite l’un des seuls dont j’ai réussi à obtenir des performances raisonnables.

Les seules applications qui étaient notoirement absentes de la détection étaient certains des jeux populaires, tandis que les jeux comme Candy Crush étaient limités en performances, Genshin Impact ne l’était pas. Bien sûr, en plus des jeux, aucune application de référence n’a été détectée. D’autres applications qui n’ont pas non plus été détectées étaient des alternatives moins populaires – alors que par exemple Uber et Uber Eats sont détectés, Lyft et Grubhub ne l’étaient pas.

Au-delà de toutes les applications populaires, ce qui se démarque également, c’est que toutes les applications propriétaires de OnePlus sont incluses dans cette liste, même en ce qui concerne les paramètres système du système d’exploitation, et c’est là que les choses deviennent problématiques.

Comment quantifier la performance dans un tel scénario ?

À ce stade, il y a évidemment un grand décalage entre les performances des applications les plus populaires et les expériences que les utilisateurs vivront dans les applications les plus populaires du marché, et même dans les propres applications OnePlus.

La seule question ouverte qui reste est de savoir comment exactement tout ce mécanisme affecte l’expérience utilisateur subjective. Après tout, le téléphone est sorti depuis quelques mois maintenant et pratiquement personne n’a rien remarqué sur les performances générales du téléphone. La raison ici est que même si les pics de performances sont évidemment limités, il reste un téléphone réactif, et il existe des mécanismes en jeu qui luttent contre les limitations, tels que les boosters de framework OS et les boosters tactiles. Par exemple, alors que vous trouverez le contenu Web à peu près limité aux petits cœurs Cortex-A55 la plupart du temps, cela ne s’applique pas lorsque vous interagissez avec le téléphone, car le booster tactile temporaire migrera les choses vers les cœurs A78 du milieu.

Je ne blâmerais personne s’ils n’avaient pas nécessairement remarqué l’écart de performance – je ne l’avais pas immédiatement remarqué moi-même au-delà du réglage de vitesse de défilement extrêmement lent des appareils. Cependant, en l’ayant côte à côte avec un Samsung Galaxy S21 Ultra, ou un Xiaomi Mi11 (Ultra) et en faisant attention, je remarque très bien que le OnePlus 9 Pro est moins réactif.

Le problème avec les allégations telles que « moins réactif » est que nous ne pouvons pas le quantifier correctement. Bien qu’il existe des examinateurs légitimes qui sont satisfaits par écrit des évaluations de performances subjectives – notre pedigree ici chez AnandTech consiste à être en mesure de justifier ces affirmations avec des mesures objectives. Dans ce cas, OnePlus nous laisse avec des options très limitées. Nous avons contacté UL afin d’essayer d’obtenir une variante PCMark falsifiée, mais nous n’avons pas été en mesure d’organiser quelque chose à court terme pour cette pièce.

Optimisation ou fausse représentation de ce que vous vendez ?

Une autre question est de savoir pourquoi exactement OnePlus a créé un tel mécanisme en premier lieu ? Quel est exactement l’objectif que les équipes logicielles de l’entreprise essayaient d’atteindre ? Généralement, dans le passé, les mécanismes de détection d’applications étaient inclus comme tentatives pour peindre les appareils sous un meilleur éclairage en ce qui concerne leurs performances. Dans ce cas, c’est toujours le cas – c’est juste qu’au lieu d’augmenter les performances de référence, l’entreprise réduit les performances des applications réelles en dessous de celles des capacités matérielles théoriques.

La seule justification raisonnable d’une telle décision est d’améliorer l’efficacité énergétique et la durée de vie de la batterie d’un appareil. Le OnePlus 9 Pro, même s’il se présente comme utilisant la dernière technologie LTPO OLED comme le Galaxy S21 Ultra de Samsung par exemple, souffre toujours de caractéristiques de puissance et d’une efficacité énergétique nettement inférieures. Dans notre test de durée de vie de la batterie de navigation sur le Web, même avec ce mécanisme paralysant des performances en place, avec les deux appareils à 120 Hz dans les mêmes conditions de test, le OnePlus 9 Pro atteint 11,75 heures d’autonomie, contre 13,98 heures pour le S21 Ultra, ce dernier qui fonctionne au plein potentiel de performance du SoC. Je vais exécuter le même test dans un navigateur non détecté tel que Vivaldi pour voir à quoi cela aboutit – mais je soupçonne que ce sera encore pire pour l’OP9Pro.

Bien que le comportement et les performances des applications varient au cas par cas, le seul aspect qui reste vrai dans presque tous les scénarios est que le OnePlus 9 Pro ne fournit pas toutes les caractéristiques du Snapdragon 888. Dans les applications sur liste noire/détectées, quand et si le X1 les noyaux sont utilisés du tout, les fréquences au-delà de 2,38 GHz sont inaccessibles, sauf pour de brefs moments de rappel. La grande majorité des applications reposent sur des cœurs Cortex-A78 à 2 GHz. Tout cela est un peu ironique car la raison pour laquelle les cœurs de la série X plus grands et plus performants ont été créés en premier lieu était de servir des charges de travail à hautes performances de réponse transitoire, ce qu’ils ne sont pas autorisés à faire ici.

Le seul argument que j’ai pour interpréter ce mécanisme comme une fausse représentation des performances de l’appareil plutôt que comme une optimisation globale de l’efficacité énergétique est le fait même qu’il ne s’applique pas de la même manière à toutes les applications. Si vous utilisez une application plus obscure, vous obtiendrez de meilleures performances par rapport à une application plus populaire. Les applications de référence ne représentent bien sûr pas non plus les performances « prévues » de l’appareil – et je prétends ici qu’il s’agit des performances prévues de l’appareil, car c’est ainsi que OnePlus configure son propre système d’exploitation et ses applications propriétaires. Hors de la boîte, presque toutes les applications préinstallées se comportent de cette manière limitée en termes de performances.

La situation dans son ensemble est plutôt déconcertante et représente certainement le premier cas d’un fournisseur mettant en œuvre une détection d’application et de référence de cette manière, avec des différences de performances différentes à un tel degré. Je ne sais pas trop quoi en penser, à part simplement l’exposer et laisser les utilisateurs tirer leur propre conclusion.

Note de la rédaction : l’article d’aujourd’hui se concentre uniquement sur le OnePlus 9 Pro, testé sur le firmware 11.2.6.6. En raison de l’absence d’appareils frères ou anciens, nous n’avons pas pu confirmer si ce mécanisme est présent sur d’autres téléphones OnePlus.