Android 模拟器的高 CPU 使用率(qemu-system-i386.exe)

模拟器 qemu-system-i386.exe 的 CPU 使用几乎一直在7 ~ 9之间运行

Android 工作室2.1 Android SDK 工具: 25.1.3 主机操作系统: Windows7-i72630QM-8GB 内存 安装了 Intel x86 Atom 系统映像

无论我在模拟器中改变什么设置: 仿真性能、多核 CPU、 x86-64映像,总是相同的东西

它真的很烦人,风扇总是开着

有人能解决这个问题吗?

65972 次浏览

更新:

我已经在 Genymotion.com/plugins 安装了 Genymotion 插件,它的性能非常好

不断使用 CPU 的原因可能是声音。如果你的模拟器不需要声音,你可以通过编辑 AVD 的配置文件来禁用它。

更改/添加这两行

hw.audioInput=no
hw.audioOutput=no

更新: 正如 buncis 评论的那样,如果不需要,你也可以尝试关闭 GPS:

hw.GPS = no

Linux/Mac上,该文件位于 ~/. android/AVD/< AVD _ Name > . AVD/config.ini
窗户上,该文件位于 C: Users < username > . android AVD < AVD _ Name > . AVD config.ini

在 Mac 上,我注意到在我的笔记本电脑进入睡眠状态后,模拟器使用了超过100% 的 CPU。按照本杰明的建议关掉音频并没有解决这个问题。

通过长按模拟器上的电源按钮重新启动模拟设备对我来说很有效。

在我的例子中,只有在运行多个模拟器实例时才会遇到这个问题。

重新运行 Android SDK (<Android SDK path>\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe)中提供的 Intel 硬件加速执行管理器(HAXM)安装程序,选择 改变,查看分配给 HAXM 的内存量。如果它是2GB 或更少,您可能希望将其提高到至少4GB。然后重新启动模拟器,看看 CPU 使用率是否下降。

使用 x86 _ 64(或64位)模拟器为我解决了这个问题。他们推荐了 x86的版本,但是我觉得不太好。

我将显示器的帧率设置为60hz,从而减少了模拟器的 CPU 使用量。它在144赫兹,我的 CPU 运行在60% -70% 。通过改变显示器的帧率,它现在只有3% 的使用率。

改变分辨率对我起作用了。我用的是1440x2560560dpi奥利奥8.1。现在我正在使用 M-DPI 奥利奥8.1

Win7,HAXM7.2.0上的 qemu 也有同样的问题。我试过关掉音频,但没用,qemu 随时都会消耗大约20% 的 CPU,Android 在 x86和 x64图像上运行都很慢。

我在 HAXM 的发布说明文件中找到了解决方案:

  • 在 Windows 上,停止杀毒可能会干扰 HAXM 并导致 Android 仿真器或 QEMU 运行速度非常慢。一个解决方案是取消选中“使用嵌套的虚拟化在可用的情况下”在空白设置 > 故障排除。

我这里有一个18.5版的安宏杀毒软件。我已经取消了这个参数,重新启动电脑,现在 qemu 在空闲时消耗0% ,Android 工作正常。

更新: 如果 QEMU 再次启动消耗 CPU,首先检查 Amad 的更新状态。在背景更新后,阿康提可能会再次开始干扰 HAXM。只要重新启动 Windows 就可以解决这个问题。

我无法使用 config.ini 文件关闭音频,但只能使用 qemu 的-nodio cmd 行参数关闭音频。但是,对于 Android Studio 3.2,你不能向模拟器添加自定义参数,所以我做了这个:

在 Android SDK 的模拟器目录中,在我的例子中是 ~/Android/SDK/Simulator/

mv emulator emulator.orig

创建一个 bash 脚本,称为模拟器,其内容如下:

#!/bin/bash


DIR=`dirname "$0"`


$DIR/emulator.orig -noaudio $*

然后:

chmod +x emulator

现在,参数-noAudio 将被添加到 Android Studio 的所有模拟器调用中,并将为您节省大量 CPU 周期。

我在2018年11月初就遇到了这个问题。

虚拟设备满足于尝试连接到移动网络数据,所以我在设备内部关闭了它。 现在干得不错。

要了解虚拟设备上什么东西使用 CPU 最多:

adb shell


$ top


这将显示 CPU 使用率最高的进程列表。

这将帮助您确定它是模拟器中的一个进程(比如您的应用程序) ,还是模拟器中的另一个进程,或者仅仅是使用大量 CPU 的模拟本身。

在后一种情况下,尝试通过安装 HAX (原生英特尔指令)来优化模拟器,或者使用 AVD 配置文件编辑器来启用硬件加速。

在设置中禁用位置,也禁用触摸声音。

我的情况下,因为我选择 software的图形渲染广告。所以改变后的 hardware减少 CPU 使用从60到10,CPU 温度从70到40。

我在 MacOS Catalina(版本10.15.2)与英特尔酷睿 i9和16 GB 内存和 Radeon Pro 560X 4 GB 图形。

我解决了高 CPU 使用 qemu 的 重新启动模拟设备使用 模拟电源按钮

另外,在创建 AVD 时,我选择了 Hardware图形渲染器而不是 Auto

我通过取消“自动保存当前状态到快速启动”解决了这个问题

快照-> 设置-> 自动保存当前状态到 Quickboot-否

在我的例子中,是快速引导导致了问题,强制进入正常引导打开 C:\Users\<username>\.android\avd\<AVD name>\config.ini中的文本文件并更改至少一个值。

例如,改变线条

hw.battery=yes

hw.battery=no

使用旧的 Android 版本 我用的是棒棒糖 Galaxy Nexus API 22降低了从 220% 到大约 百分之三十的 CPU 使用率。

我还切换了: 仿真性能 > 图形 > 硬件

使用 Android Api 25... 图形硬件和关闭 AVD 音频和 GPS 不适合我..。

平台: MacOS

在我的案例中是 飞机模式,当打开 CPU 时,使用率跳到 99% :

adb shell


$ top

cpu usage

这个问题在 Android 10.0 x86上被注意到了。 如果你把飞机模式关闭,然后 CPU 的使用应该恢复正常。

我最近在 Windows 10(18363)上遇到了同样的问题: AVD 100% 地使用了主机的16个线程,似乎是 AVD 上的 android.hardware.graphics.composer@2.1-service进程造成的。

对我有帮助的是: 转到 AVDsettings-Advanced-将 OpenGL ES renderer改为 Desktop native OpenGL并重新启动 AVD。现在它使用了2-3% 的 CPU 资源。希望这对谁有帮助。

在我的案例中,使用硬件图形解决了我的问题。

enter image description here

照做就是了

$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)
  • No-SDCard (< = > hw.sdCard = no)

enter image description here