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

Posted

技术标签:

【中文标题】Android 模拟器 (qemu-system-i386.exe) 的高 CPU 使用率【英文标题】:High CPU usage with Android emulator (qemu-system-i386.exe) 【发布时间】:2016-08-31 23:44:30 【问题描述】:

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

android 工作室 2.1 Android SDK 工具:25.1.3 主机操作系统:Windows 7 - i7 2630QM - 8GB Ram 已安装 Intel x86 Atom 系统映像

无论我在模拟器中更改什么设置,例如:模拟性能、多核 CPU、x86-64 映像,总是一样

粉丝总是开着真的很烦人

有人解决了这个问题吗?

【问题讨论】:

我个人更喜欢使用Visua Studio Emulator for Android,因为我从未见过如此高效的东西,无论是在性能方面还是在使用主机资源方面。虽然它需要在主机上启用 Hyper-V。 我现在就试试,谢谢你的建议 对不起,错误的希望,但直到现在我才发现Windows 7没有Hyper-V,因此模拟器无法在您的主机上运行。 没关系 :) ...我现在正在使用 Genymotion 插件进行测试 genymotion.com/plugins 【参考方案1】:

更新:

我在 genymotion.com/plugins 上安装了 Genymotion 插件,它的性能惊人

【讨论】:

Genymotion 既好又快,但不能免费用于商业用途。【参考方案2】:

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

更改/添加这两行

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

【讨论】:

@antoine:这确实解决了我的问题——我编辑了错误的 config.ini 文件。重启也不会有什么坏处。 我打开了一个错误报告来调查更多关于异常 CPU 使用情况(链接到这个答案):issuetracker.google.com/issues/109921752 如果您不使用 GPS,也可以考虑禁用它hw.GPS = no @buncis 谢谢你,只有在禁用 gps 后它才能工作 不要忘记在 Android 虚拟设备管理器的菜单下“立即冷启动”设备。【参考方案3】:

在 Mac 上,我注意到我的笔记本电脑进入睡眠状态后,模拟器使用了超过 100% 的 CPU。按照 Benjamin 的建议关闭音频并不能解决该问题。

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

【讨论】:

如果您编辑设备,您可以在设置中将其更改为冷启动。【参考方案4】:

就我而言,我只在运行多个模拟器实例时遇到了这个问题。

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

【讨论】:

我无法访问 更改 按钮(已禁用)。是否有其他方法可以访问该配置?【参考方案5】:

使用 x86_64(或 64 位)模拟器为我解决了这个问题。他们推荐 x86 版本,但它对我不利。

【讨论】:

这在 MacOS 上似乎是必需的。 帮了我很多(macOS Mojave)。 至少对于 Mac 来说是这样的解决方案 - 巨大的差异。 Windows 的解决方案。【参考方案6】:

我通过将显示器的帧速率设置为 60hz 来减少模拟器的 CPU 使用率。它在 144hz 上,我的 CPU 以 60% - 70% 的速度运行。通过仅更改监视器的帧率,它现在的使用率为 3%。

【讨论】:

你能指导一下你在哪里做的吗? 在您的显示器属性中,会有一个屏幕刷新率选项。将其设置为 60hz 或更低【参考方案7】:

更改分辨率对我有用。我使用的是 1440 x 2560 560 dpi Oreo 8.1。现在我正在使用 M-DPI Oreo 8.1

【讨论】:

【参考方案8】:

在 Win7、HAXM​​ 7.2.0 上使用 qemu 也有同样的问题。我试过关闭音频,但没有帮助,qemu 随时消耗大约 20% 的 CPU,Android 在 x86 和 x64 图像上运行速度都很慢。

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

在 Windows 上,Avast Antivirus 可能会干扰 HAXM 并导致 Android Emulator 或 QEMU 运行非常缓慢。一种解决方法是取消选中 Avast 设置 > 故障排除中的“在可用的情况下使用嵌套虚拟化”。

我有 Avast Pro Antivirus 18.5。我已取消选中此参数,重新启动 PC,现在 qemu 在空闲时消耗 0%,Android 工作正常。

更新:如果 QEMU 再次开始消耗 CPU,首先检查 Avast 的更新状态。后台更新后,Avast 可能会再次开始干扰 HAXM。只需重启 Windows 即可解决。

【讨论】:

天啊...完美运行。禁用 Avast 10 分钟后,CPU 使用率降低到 15%,重启后降低到 1.4%。非常感谢! Avast...也是我的问题 这太棒了。 CPU 使用率从 50% 下降到 4%。谢谢@Nexus【参考方案9】:

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

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

mv emulator emulator.orig

使用以下内容制作一个名为模拟器的 bash 脚本:

#!/bin/bash

DIR=`dirname "$0"`

$DIR/emulator.orig -noaudio $*

然后:

chmod +x emulator

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

【讨论】:

【参考方案10】:

我在 2018 年 11 月开始时遇到了这个问题。

虚拟设备正在尝试连接到移动网络数据,所以我在设备本身内部将其关闭。 现在工作得很好。

【讨论】:

【参考方案11】:

要找出虚拟设备上的 CPU 使用率最高:

adb shell

$ top

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

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

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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

我的情况,因为我在 adv 中选择 software 进行图形渲染。所以在更改 hardware 后,将 CPU 使用率从 60 降低到 10,并将 CPU 温度从 70 降低到 40。

【讨论】:

这似乎对我有用。在软件上,模拟器总是一直运行 ~106。切换到硬件运行大约 24 次。但是在与模拟器交互时可以达到 200 多个峰值。但是在不互动时会很快下降到~24。这似乎是最好的解决方案,而不必更新您以后可能需要启用的配置设置。【参考方案14】:

我使用的是 ma​​cOS Catalina(版本 10.15.2),配备 Intel Core i9 和 16 GB RAM 和 Radeon Pro 560X 4GB 显卡。

我通过使用模拟电源按钮重新启动模拟设备解决了 qemu 的高 CPU 使用率问题。

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

【讨论】:

【参考方案15】:

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

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

【讨论】:

【参考方案16】:

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

例如换行

hw.battery=yes 

hw.battery=no

【讨论】:

【参考方案17】:

使用旧的 Android 版本我使用 Lollipop Galaxy Nexus API 22 将 CPU 使用率从 220% 降低到 30% 左右! ...

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

使用 Android Api 25 ...图形硬件和关闭 AVD 音频和 GPS 对我不起作用...

平台:MacOS

【讨论】:

macos 我这边也是这样。使用 api-25(x86) 模拟器的最大好处是速度很快。此外,从配置中禁用音频和 gps 可以节省 %5 的 cpu 使用率,而不是 coreaudio 任务。对于 i7,它在空闲时使用大约 %18-20 cpu。 api-29(x86-64) 使用 %40 左右,api-30(x86-64) 正在使用 %350 杀死 cpu。【参考方案18】:

在我的情况下,它是飞行模式,当打开时 CPU 使用率跃升至 99%

adb shell

$ top

在 Android 10.0 x86 上发现了该问题。 如果您关闭飞行模式,那么 CPU 使用率应该会恢复正常。

【讨论】:

我的也是这样。用户电台使用了大部分的cpu。但是飞行模式是关闭的。我已经尝试关闭移动数据、wifi……以及上述大多数解决方案。还是没有运气.. @Niby 我无法修复它,但使用更新版本的 API 可能会解决此问题,因此我建议使用最新的可用版本。【参考方案19】:

我最近在 Windows 10 (18363) 上遇到了同样的问题:AVD 以 100% 的速度使用了主机的所有 16 个线程,看来 AVD 上的 android.hardware.graphics.composer@2.1-service 进程是罪魁祸首。

对我来说有什么帮助:转到 AVD settings - Advanced - 将 OpenGL ES renderer 更改为 Desktop native OpenGL 并重新启动 AVD。现在它使用了我 2-3% 的 CPU 资源。希望这对某人有所帮助。

【讨论】:

你们太棒了。我使用了上面写的所有大多数答案,并且 CPU 使用率从 80 下降到 30 :D :D【参考方案20】:

就我而言,使用硬件图形解决了我的问题。

【讨论】:

这对我来说最大的不同 Macbook 15 inch 2018,这大大减少了我的延迟。【参考方案21】:

做事

$adb shell
$top

查看哪个CPU高的PID

$kill -9 <PID>

【讨论】:

为什么主要复制其他答案?你也应该避免杀死-9。 unix.stackexchange.com/questions/281439/… @LarryShatzer 很好,因为它在我的上下文中工作,这不是众所周知的问题,所以我认为它应该逐步给出完整的答案。【参考方案22】:

对我来说,我关闭了 WIFI,使用率从 112% 下降到 10%。我建议这样做

【讨论】:

【参考方案23】:

关于 api31&32:使用 Show Advanced Settings 编辑每个 AVD 配置并确保:

多核 CPU > ma​​x ( hw.cpu.ncore=8, 4/cores 不够,可能会导致 cpu 过热强烈) 图形 > 硬件 (GLES 2.0) 无 SDCard ( hw.sdCard=no)

【讨论】:

以上是关于Android 模拟器 (qemu-system-i386.exe) 的高 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的程序不是由 qemu 运行的,是因为它仅用于模拟 Linux——在 Linux 上

KVM安装

Android studio模拟器连接网络问题

Android 10.0 11.0 12.0 启动模拟器教程

求教:android 模拟器怎样模拟 长按 功能?

Android 10.0 11.0 12.0 启动模拟器教程