Pour trouver le nombre de cœurs disponibles dans Termux, vous exécutez:
grep Cpus_allowed /proc/self/status
Ce nombre de cœurs est limité de manière similaire à l'exécution de taskset
sur GNU/Linux.
J'essaie de pouvoir prédire ce que cela va retourner.
Selon l'application CPU-Z, mon téléphone (Huawei Smart P) a 1 HiSilicon Kirin 659 avec 8 cœurs. Selon l'application CPU Info, 4 cœurs fonctionnent à la même vitesse (480-1709Mhz) et 4 cœurs fonctionnent à la même vitesse (1402-2362Mhz).
Après avoir démarré le téléphone et attendu 5 minutes pour m'assurer que toutes les tâches de démarrage ont été lancées / terminées, j'ai démarré Termux, me suis connecté via ssh
et j'ai obtenu:
Cpus_allowed_list: 0-7
Ce à quoi je m'attends exactement.
Mais si j'appuie sur la touche d'accueil, j'obtiens:
Cpus_allowed_list: 2-3
J'ai pensé que cela pourrait être lié à la charge des cœurs, alors je suis retourné sur Termux, j'ai lancé 16 bzip2
. Cela ne change pas le nombre de cœurs que j'obtiens immédiatement. Mais après 30 secondes, j'obtiens 4 cœurs:
Cpus_allowed_list: 0-3
Et plus tard, je suis ramené à 2 cœurs:
Cpus_allowed_list: 2-3
Ce comportement se produit via ssh
que Termux soit au premier plan ou en arrière-plan.
L'effet de la touche d'accueil ne se produit que lors de l'exécution de Termux: si j'exécute CPU Info, puis j'appuie sur la touche d'accueil et ensuite démarre Termux, alors Termux a toujours 8 cœurs:
Cpus_allowed_list: 0-7
Seulement lorsque je change de Termux en utilisant la touche d'accueil, la touche de la liste des applications ou la touche de retour, le nombre de processeurs change.
La gestion logicielle big.LITTLE pourrait expliquer le passage de 8 à 4 cœurs si la limite n'était pas appliquée immédiatement après le démarrage, mais seulement activée par la suite. Comme la limite n'est pas activée 5 minutes après le démarrage, je pense qu'il est sûr de rejeter cela comme explication. Cela n'explique pas non plus la limitation à 2 cœurs parfois lors de l'exécution de 16 bzip2
.
Qu'est-ce qui empêche le téléphone de me permettre d'utiliser 8 cœurs? Comment puis-je dire au téléphone de ne pas le faire? Qu'est-ce qui fait que la limite passe entre 2 et 4 cœurs à des intervalles apparemment aléatoires?
(En plus de cela, je m'attendais à ce que les cœurs fonctionnent à 100% de leur vitesse ce qui n'arrive pas non plus).
La limitation ne se produit pas si ce n'est pas exécuté via ssh
ou si exécuté dans une session tmux
où la session tmux
est démarrée via le terminal sur le téléphone.
0 votes
Le CPU est un Octa core avec le concept BIG-little. Par conséquent, cette réponse s'applique également à votre CPU.
0 votes
@Robert SI c'était un processeur big.LITTLE, pourquoi j'obtiens 0-7 après le démarrage ? Cela reste ainsi si je ne presse pas sur accueil.
top
montre clairement 8 CPUS fonctionnant à 100%. De plus, cela n'expliquerait pas pourquoi je suis limité à seulement 2 cœurs parfois.0 votes
Je présume que l'appareil démarre sans affectations spécifiques de CPU. Cela permet également de démarrer le plus rapidement possible. Ensuite (peut-être au démarrage d'un service spécial), il applique la configuration d'alimentation pour limiter la consommation d'énergie. Les nouveaux processus démarrent avec 2 cœurs et après 30 secondes d'utilisation intensive du CPU, les 4 cœurs rapides sont autorisés. Gardez à l'esprit que les smartphones sont optimisés pour la réactivité de l'interface utilisateur, pas pour le débit maximal du CPU.
0 votes
@Robert J'ai mis à jour la question. L'explication big.LITTLE ne semble pas correspondre aux preuves.