首页 > 解决方案 > 如何启动超过 16 个 CPU 的 Android 模拟器

问题描述

我想在超过 16 个 CPU 的模拟器上启动 Android。

调试步骤:

  1. 我配置了Kernel Features-->Maximum number of CPUs to 128. 然后我也将 android qemu hw/arm/ranchu.c mc->max_cpus 更改为 128。

  2. 使用以下命令启动 Android:
    emulator -avd test_wzh -show-kernel -skip-adb-auth -no-snapshot -kernel /root/wangzhh/image/Image -no-window -writable-system -partition-size 65536 -verbose -gpu host -qemu -enable-kvm -m 16384 -realtime mlock=off -smp 32,sockets=32,cores=1,threads=1

  3. 检查客户机中的 cpu:
    adb -s emulator-5554 shell
    只有 16 个 cpu 在线,索引 16 之后的所有 cpu 显示相同的错误日志

  4. Printk 调试内核我跟踪内核代码,发现错误报告是按
    psci_to_linux_errno大小写 PSCI_RET_INVALID_ADDRESS

内核日志:

... 在 CPU15 CPU15
上检测到 VIPT I-cache
:找到重新分配器 f 区域 0:0x0000000008280000
CPU15 CPU15 的 sched_group_energy 无效
:更新 cpu_capacity 1024
CPU15:已启动辅助处理器 [481fd010]
psci:无法启动 CPU16 (-22)
CPU16:无法启动开机:-22
...

感谢任何能提供帮助的人!另外,我猜它与dts有关,但我不知道android模拟器使用了哪些dts,谁知道这个问题?

标签: androidlinux-kernelandroid-emulatorqemu

解决方案


如此处所述 ( https://github.com/intel/haxm/issues/195 ) HAXM 最多支持 16 个 VCPU,但您可以从 GitHub ( https://github.com/intel/haxm/releases )下载源代码,更改源中的特定变量/常量,重新编译并替换现有的二进制/库。

或者您必须将 Emulator 更改为不同的东西(KVM?)。


推荐阅读