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\
【讨论】:
@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】:我使用的是 macOS 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 > max ( hw.cpu.ncore=8, 4/cores 不够,可能会导致 cpu 过热强烈) 图形 > 硬件 (GLES 2.0) 无 SDCard ( hw.sdCard=no)【讨论】:
以上是关于Android 模拟器 (qemu-system-i386.exe) 的高 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的程序不是由 qemu 运行的,是因为它仅用于模拟 Linux——在 Linux 上