J'ai besoin de désactiver des cœurs de processeur afin d'effectuer des mesures d'énergie sur des ensembles de cœurs de processeur de manière isolée (c'est-à-dire que je veux exécuter une application sur un ensemble de cœurs de processeur et désactiver les cœurs de processeur qui ne font pas partie de l'ensemble). J'ai consulté la documentation sur le Android linux kernel source et il est écrit ce qui suit :
Q : Comment puis-je déconnecter logiquement un processeur ?
R : Faites ce qui suit.#echo 0 > /sys/devices/system/cpu/cpuX/online
Une fois que la mise hors ligne logique a réussi, vérifiez#cat /proc/interrupts
Vous ne devriez plus voir le CPU que vous avez retiré. De même, le fichier en ligne indique l'état 0 lorsqu'une unité centrale est hors ligne et 1 lorsqu'elle est en ligne.Pour afficher l'état actuel du processeur.
#cat /sys/devices/system/cpu/cpuX/online
Mais lorsque j'écris 0 dans le fichier en ligne, le CPU est toujours signalé comme étant en ligne, même avec les droits de superutilisateur et en marquant le fichier comme accessible en écriture ( chmod +w
).
J'imagine que le noyau réactive le processeur après que je l'ai désactivé. Je n'ai pas non plus essayé de désactiver le CPU 0 car dans la même documentation il est dit qu'il n'est pas amovible dans certaines architectures, ce comportement se produit sur d'autres CPU.
Dois-je reconstruire le noyau afin d'activer le hotplug du processeur ou est-ce un problème spécifique à l'architecture ? Peut-être que mon processeur ne supporte pas les hotplugs.
Ce que j'ai essayé jusqu'à présent
- Écrire à
/sys/devices/system/cpu/cpuN/online
avec un appareil enraciné. (echo "0" > ./sys/device/...../online
) - Changez le noyau pour un noyau personnalisé et essayez à nouveau l'étape ci-dessus. (Le noyau installé était Quantum Kernel)
- Utilisation de adiateur de noyau pour désactiver les CPU dans l'onglet CPU (cela désactive le CPU pendant un moment puis le réactive)
- Utilisation de su sur le shell adb pour changer les permissions de fichiers sur sysfs (
chmod 664 /sys/devices/...../online
) et ensuite essayer d'y écrire.
Informations sur le dispositif
Modèle : Samsung Galaxy A8 (SM-A530F)
Version Android : Android Pie (9)
Noyau : Noyau Quantum V4
Version du noyau : 4.4.111-Quantum_pie.V4.0-A530F
Processeur : Samsung Exynos Octa 7885
Architecture : aarch64
EDIT : J'ai oublié de mentionner que mon appareil est enraciné.