CPU 使用 Android 模拟器 (qemu-system-i386.exe)
High CPU usage with Android emulator (qemu-system-i386.exe)
仿真器qemu-system-i386.execpu使用率几乎一直在运行7~9之间
Android 工作室 2.1
Android SDK 工具:25.1.3
主机操作系统:Windows 7 - i7 2630QM - 8GB Ram
已安装 Intel x86 Atom 系统映像
无论我在模拟器中更改什么设置,例如:模拟性能、多核 CPU、x86-64 图像,总是一样
风扇一直开着真烦人
有人解决了这个问题吗?
更新:
我已经在genymotion安装了Genymotion插件com/plugins,效果非常棒
持续使用 CPU 的原因可能是声音。如果您的模拟器不需要声音,您可以通过编辑 AVD 的配置文件来禁用它。
Change/add 这两行
hw.audioInput=no
hw.audioOutput=no
更新:正如 buncis 所说,如果不需要,您也可以尝试禁用 GPS:
hw.GPS = no
在 Linux/Mac 上,文件位于 ~/.android/avd/.avd/config.ini
在 Windows 上,文件位于 C:\Users\\.android\avd\.avd\config .ini
在 Mac 上,我注意到在我的笔记本电脑进入睡眠状态后模拟器使用了超过 100% CPU。按照本杰明的建议关闭音频并没有解决这个问题。
通过长按模拟器上的电源按钮重启模拟设备对我有效。
就我而言,我只在 运行 多个模拟器实例时遇到这个问题。
重新运行 Android SDK (<Android SDK path>\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
) 中提供的英特尔硬件加速执行管理器 (HAXM) 安装程序,select 更改,看看有多少内存分配给了HAXM。如果它是 2 GB 或更少,您可能希望将它提高到至少 4 GB。然后重新启动您的模拟器并查看 CPU 使用率是否下降。
使用 x86_64(或 64 位)模拟器为我解决了这个问题。他们推荐 x86 版本,但它对我不利。
我通过将监视器的帧速率设置为 60hz 减少了 CPU 模拟器的使用。频率为 144hz,我的 CPU 为 运行,频率为 60% - 70%。通过仅更改监视器的帧率,它现在处于 3% 的使用率。
更改分辨率对我有效。我使用的是 1440 x 2560 560 dpi Oreo 8.1。现在我正在使用 M-DPI Oreo 8.1
Win7、HAXM 7.2.0 上的 qemu 也有同样的问题。我试过关闭音频,但没有用,qemu 随时消耗 CPU 的大约 20%,Android 在 x86 和 x64 图像上工作得非常慢。
我在 HAXM 的发行说明文件中找到了解决方案:
- 在 Windows 上,Avast Antivirus 可能会干扰 HAXM 并导致 Android 模拟器或 QEMU 到 运行 非常慢慢地。解决方法是在 Avast 设置 > 故障排除中取消选中 "Use nested virtualization where available"。
我有 Avast Pro Antivirus 18.5。我取消选中此参数,重新启动 PC,现在 qemu 在闲置时消耗 0%,Android 工作正常。
更新:如果 QEMU 再次开始使用 CPU,首先检查 Avast 的更新状态。后台更新后,Avast 可能会再次开始干扰 HAXM。只需重启 Windows 即可解决。
我无法使用 config.ini 文件关闭音频,只能使用 qemu 的 -noaudio cmd 行参数。然而,使用 Android Studio 3.2,你不能向模拟器添加自定义参数,所以我做了这个:
在 Android SDK 的模拟器目录中,在我的例子中是 ~/Android/Sdk/emulator/
mv emulator emulator.orig
创建一个名为 emulator 的 bash 脚本,内容为:
#!/bin/bash
DIR=`dirname "[=11=]"`
$DIR/emulator.orig -noaudio $*
然后:
chmod +x emulator
现在,参数 -noaudio 将被添加到来自 Android Studio 的模拟器的所有调用中,并且将为您节省很多 CPU 个周期。
我在 2018 年 11 月开始时遇到了这个问题。
虚拟设备正在尝试连接到移动网络数据,所以我在设备内部将其关闭。
现在工作很好。
找出虚拟设备上使用最多的内容CPU:
adb shell
$ top
这将显示 CPU 使用率最高的进程列表。
这将帮助您确定它是模拟器内的一个进程(例如您的应用程序)、模拟器内的另一个进程,还是只是模拟器本身使用大量 CPU。
在后一种情况下,尝试通过安装 HAX(本机英特尔指令)优化模拟器,或者使用 AVD 配置文件编辑器启用硬件加速。
在设置中禁用定位,同时禁用触摸声音。
我的情况,因为我选择 software
用于 adv 中的图形渲染。因此,在更改 hardware
后,CPU 的使用量从 60 减少到 10,CPU 的温度从 70 减少到 40。
我使用的是 macOS Catalina(版本 10.15.2),配备英特尔酷睿 i9 和 16 GB 内存以及 Radeon Pro 560X 4GB 显卡。
我通过 使用 [= 重新启动模拟设备 解决了 qemu 的高 CPU 使用问题18=]模拟电源按钮.
此外,在创建 AVD 时,我选择了 Hardware
图形渲染器而不是 Auto
。
我通过取消"Auto-save current state to Quickboot"
解决了
快照 -> 设置 -> 自动将当前状态保存到 Quickboot - 否
在我的例子中,是快速启动导致了问题,要强制进入正常启动,请打开 C:\Users\<username>\.android\avd\<AVD name>\config.ini
中的文本文件并至少更改其中一个值。
例如更改行
hw.battery=yes
到
hw.battery=no
使用旧的 Android 版本 我使用 Lollipop Galaxy Nexus API 22 从 220 中删除 CPU 用法% 到 30% 左右! ...
我还切换了:仿真性能>图形>硬件
使用 Android Api 25 ...图形硬件和关闭 AVD 音频和 GPS 对我不起作用...
平台:MacOS
在我的例子中,它是 飞行模式,当打开时 CPU 使用率跃升至 99%:
adb shell
$ top
这个问题是在 Android 10.0 x86 上发现的。
如果您关闭飞行模式,那么 CPU 的使用应该 return 正常。
我最近在 Windows 10 (18363) 上遇到了同样的问题:AVD 以 100% 的速度使用了主机的所有 16 个线程,看来 AVD 上的 android.hardware.graphics.composer@2.1-service
进程是罪魁祸首.
对我的情况有帮助:转到 AVD settings
- Advanced
- 将 OpenGL ES renderer
更改为 Desktop native OpenGL
并重新启动 AVD。现在它使用了我 CPU 资源的 2-3%。希望这对某人有所帮助。
就我而言,使用硬件图形解决了我的问题。
随心所欲
$adb shell
$top
看哪个PID高CPU
$kill -9 <PID>
对我来说,我关闭了 WIFI,使用率从 112% 下降到 10%。我建议这样做
在 api31&32 上:使用 显示高级设置 编辑每个 AVD 配置并确保:
- 多核 CPU > max (<=> hw.cpu.ncore=8,
4/核心不够,可能会过热cpu 强烈)
- 显卡 > 硬件 (GLES 2.0)
- 无 SDCard (<=> hw.sdCard=无)
仿真器qemu-system-i386.execpu使用率几乎一直在运行7~9之间
Android 工作室 2.1 Android SDK 工具:25.1.3 主机操作系统:Windows 7 - i7 2630QM - 8GB Ram 已安装 Intel x86 Atom 系统映像
无论我在模拟器中更改什么设置,例如:模拟性能、多核 CPU、x86-64 图像,总是一样
风扇一直开着真烦人
有人解决了这个问题吗?
更新:
我已经在genymotion安装了Genymotion插件com/plugins,效果非常棒
持续使用 CPU 的原因可能是声音。如果您的模拟器不需要声音,您可以通过编辑 AVD 的配置文件来禁用它。
Change/add 这两行
hw.audioInput=no
hw.audioOutput=no
更新:正如 buncis 所说,如果不需要,您也可以尝试禁用 GPS:
hw.GPS = no
在 Linux/Mac 上,文件位于 ~/.android/avd/
在 Windows 上,文件位于 C:\Users\
在 Mac 上,我注意到在我的笔记本电脑进入睡眠状态后模拟器使用了超过 100% CPU。按照本杰明的建议关闭音频并没有解决这个问题。
通过长按模拟器上的电源按钮重启模拟设备对我有效。
就我而言,我只在 运行 多个模拟器实例时遇到这个问题。
重新运行 Android SDK (<Android SDK path>\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
) 中提供的英特尔硬件加速执行管理器 (HAXM) 安装程序,select 更改,看看有多少内存分配给了HAXM。如果它是 2 GB 或更少,您可能希望将它提高到至少 4 GB。然后重新启动您的模拟器并查看 CPU 使用率是否下降。
使用 x86_64(或 64 位)模拟器为我解决了这个问题。他们推荐 x86 版本,但它对我不利。
我通过将监视器的帧速率设置为 60hz 减少了 CPU 模拟器的使用。频率为 144hz,我的 CPU 为 运行,频率为 60% - 70%。通过仅更改监视器的帧率,它现在处于 3% 的使用率。
更改分辨率对我有效。我使用的是 1440 x 2560 560 dpi Oreo 8.1。现在我正在使用 M-DPI Oreo 8.1
Win7、HAXM 7.2.0 上的 qemu 也有同样的问题。我试过关闭音频,但没有用,qemu 随时消耗 CPU 的大约 20%,Android 在 x86 和 x64 图像上工作得非常慢。
我在 HAXM 的发行说明文件中找到了解决方案:
- 在 Windows 上,Avast Antivirus 可能会干扰 HAXM 并导致 Android 模拟器或 QEMU 到 运行 非常慢慢地。解决方法是在 Avast 设置 > 故障排除中取消选中 "Use nested virtualization where available"。
我有 Avast Pro Antivirus 18.5。我取消选中此参数,重新启动 PC,现在 qemu 在闲置时消耗 0%,Android 工作正常。
更新:如果 QEMU 再次开始使用 CPU,首先检查 Avast 的更新状态。后台更新后,Avast 可能会再次开始干扰 HAXM。只需重启 Windows 即可解决。
我无法使用 config.ini 文件关闭音频,只能使用 qemu 的 -noaudio cmd 行参数。然而,使用 Android Studio 3.2,你不能向模拟器添加自定义参数,所以我做了这个:
在 Android SDK 的模拟器目录中,在我的例子中是 ~/Android/Sdk/emulator/
mv emulator emulator.orig
创建一个名为 emulator 的 bash 脚本,内容为:
#!/bin/bash
DIR=`dirname "[=11=]"`
$DIR/emulator.orig -noaudio $*
然后:
chmod +x emulator
现在,参数 -noaudio 将被添加到来自 Android Studio 的模拟器的所有调用中,并且将为您节省很多 CPU 个周期。
我在 2018 年 11 月开始时遇到了这个问题。
虚拟设备正在尝试连接到移动网络数据,所以我在设备内部将其关闭。 现在工作很好。
找出虚拟设备上使用最多的内容CPU:
adb shell
$ top
这将显示 CPU 使用率最高的进程列表。
这将帮助您确定它是模拟器内的一个进程(例如您的应用程序)、模拟器内的另一个进程,还是只是模拟器本身使用大量 CPU。
在后一种情况下,尝试通过安装 HAX(本机英特尔指令)优化模拟器,或者使用 AVD 配置文件编辑器启用硬件加速。
在设置中禁用定位,同时禁用触摸声音。
我的情况,因为我选择 software
用于 adv 中的图形渲染。因此,在更改 hardware
后,CPU 的使用量从 60 减少到 10,CPU 的温度从 70 减少到 40。
我使用的是 macOS Catalina(版本 10.15.2),配备英特尔酷睿 i9 和 16 GB 内存以及 Radeon Pro 560X 4GB 显卡。
我通过 使用 [= 重新启动模拟设备 解决了 qemu 的高 CPU 使用问题18=]模拟电源按钮.
此外,在创建 AVD 时,我选择了 Hardware
图形渲染器而不是 Auto
。
我通过取消"Auto-save current state to Quickboot"
解决了快照 -> 设置 -> 自动将当前状态保存到 Quickboot - 否
在我的例子中,是快速启动导致了问题,要强制进入正常启动,请打开 C:\Users\<username>\.android\avd\<AVD name>\config.ini
中的文本文件并至少更改其中一个值。
例如更改行
hw.battery=yes
到
hw.battery=no
使用旧的 Android 版本 我使用 Lollipop Galaxy Nexus API 22 从 220 中删除 CPU 用法% 到 30% 左右! ...
我还切换了:仿真性能>图形>硬件
使用 Android Api 25 ...图形硬件和关闭 AVD 音频和 GPS 对我不起作用...
平台:MacOS
在我的例子中,它是 飞行模式,当打开时 CPU 使用率跃升至 99%:
adb shell
$ top
这个问题是在 Android 10.0 x86 上发现的。 如果您关闭飞行模式,那么 CPU 的使用应该 return 正常。
我最近在 Windows 10 (18363) 上遇到了同样的问题:AVD 以 100% 的速度使用了主机的所有 16 个线程,看来 AVD 上的 android.hardware.graphics.composer@2.1-service
进程是罪魁祸首.
对我的情况有帮助:转到 AVD settings
- Advanced
- 将 OpenGL ES renderer
更改为 Desktop native OpenGL
并重新启动 AVD。现在它使用了我 CPU 资源的 2-3%。希望这对某人有所帮助。
就我而言,使用硬件图形解决了我的问题。
随心所欲
$adb shell
$top
看哪个PID高CPU
$kill -9 <PID>
对我来说,我关闭了 WIFI,使用率从 112% 下降到 10%。我建议这样做
在 api31&32 上:使用 显示高级设置 编辑每个 AVD 配置并确保:
- 多核 CPU > max (<=> hw.cpu.ncore=8, 4/核心不够,可能会过热cpu 强烈)
- 显卡 > 硬件 (GLES 2.0)
- 无 SDCard (<=> hw.sdCard=无)