android - 如何启动超过 16 个 CPU 的 Android 模拟器
问题描述
我想在超过 16 个 CPU 的模拟器上启动 Android。
调试步骤:
我配置了
Kernel Features-->Maximum number of CPUs to 128
. 然后我也将 android qemu hw/arm/ranchu.c mc->max_cpus 更改为 128。使用以下命令启动 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
检查客户机中的 cpu:
adb -s emulator-5554 shell
只有 16 个 cpu 在线,索引 16 之后的所有 cpu 显示相同的错误日志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,谁知道这个问题?
解决方案
如此处所述 ( https://github.com/intel/haxm/issues/195 ) HAXM 最多支持 16 个 VCPU,但您可以从 GitHub ( https://github.com/intel/haxm/releases )下载源代码,更改源中的特定变量/常量,重新编译并替换现有的二进制/库。
或者您必须将 Emulator 更改为不同的东西(KVM?)。
推荐阅读
- angular - 传播运算符给出错误属性“检索”在类型中丢失
- mysql - 获取小于给定日期的第一个日期
- tabulator - 制表器中具有自定义标题和字段的自定义列
- c# - 在 ComboBox/Dropdown-List 中显示文件夹内容
- javascript - React Typescript - 类型与第三方库不兼容
- amazon-web-services - 使用安全组通过 AWS VPN 客户端限制对 VPC 的访问
- android - 如何在 Xamarin 中将 SVG 字符串显示为图像?
- android - Android Beta 12 文件路径错误:MediaMetadataRetriever
- powershell - 使用powershell安装带参数的MSI
- html - 是否存在可以帮助我构建可生成 html 模板的可配置表单的工具?