Koo*_*str 5 android process kernel-module webview android-kernel
相当长一段时间以来,我一直在尝试调试我的设备在玩大型游戏时出现的重大滞后/卡顿现象。在对我的 logcat 进行了大量分析之后,我觉得我已经确定了导致难以忍受的延迟峰值的原因。每当出现滞后峰值时,logcat 中就会始终显示以下错误:
E/lowmemorykiller:
Error opening /dev/memcg/apps/uid_99032/pid_5430/memory.soft_limit_in_bytes; errno=2
Run Code Online (Sandbox Code Playgroud)
它反复出现,就好像它一遍又一遍地试图杀死它一样。UID 和 PID 有时会有所不同。据推测,主线程每次试图杀死它但未能成功时都会挂起很短的时间。为什么会发生这种情况?
下面的错误也重复出现,混合在上述错误的出现中。这可能与问题有关:
E/ANDR-PERF-RESOURCEQS: Failed to apply optimization [4,0]
Run Code Online (Sandbox Code Playgroud)
有时它会[2,0]代替[4,0]. 这些消息在我的 logcat 中显示得确实过多。
检查我的活动进程后,提到的 UID 和 PID 始终与Android System Webview. 我通过转到“设置”中的“开发人员选项”中的“运行进程”找到了这些进程的源应用程序。在那里,正在运行的进程被列为com.google.android.webview:sandboxed_process0,并且对于每个可能具有正在运行的 Web 视图的应用程序来说,它有多个实例。通过检查该进程的信息,可以得知哪个包启动了它。因此,它们源自我手机上的各种应用程序,有时甚至是我正在玩的游戏本身。因此,这似乎是内核的 lowmemorykiller (LMK) 模块的问题,比我安装的任何特定应用程序更有可能出现问题。
任何人都知道导致此问题的原因、错误的真正含义、如何修复或解决它、为什么 LMK 无法杀死 webviews,或者到底发生了什么?我至少正在寻找一种方法来控制 LMK 忽略尝试杀死 webview,以防止它在失败时挂起主线程,或者强制它成功杀死它们。
由于某种原因,我在 Kernel Adiutor 中没有修改 LMK 参数的部分。我的手机正试图(大概)杀死这些网页视图,尽管仍然有大量可用的可用 RAM,但min_freeKernel Adiutor 中的参数远不及我当时剩余的可用 RAM 量,所以有些事情正在发生在。
我一度怀疑这可能是由于我的手机上安装的应用程序数量过多(800-900)造成的。我已将其降低到约 600 个应用程序,但问题仍然存在。我认为拥有太多应用程序不再是问题,尽管它肯定可能是。
我正在运行官方 ResurrectionRemix 8.1 ROM,并使用 ROM 的默认内核和固件。这个问题出现在非官方 RR LuisROM 上,甚至在我完全擦除/干净刷新到我当前使用的官方 RR 版本后仍然存在。我在 XDA 上向他们和其他人寻求帮助,但没有人愿意提供帮助。如果您认为有必要,我可以提供完整的 logcat,但老实说,这里直接提到了唯一相关的消息。
编辑:这是最新的 logcat,包含错误及以上内容。我不认为可以从它们中推断出任何有用/新的东西,但请随意看看。
编辑2:感谢这个答案,它提供了一个临时的解决方法,我一直在试验并试图找到问题的根源。看起来由于某种原因,UID 和 PID 文件夹没有在dev/memcg/apps仅用于 Webview 进程的文件夹中创建。这确实很奇怪。它们可以在 su 终端中手动创建(和删除)(尽管在像 ES File Explorer Pro 这样的 root 权限文件管理器中只能创建,不能删除(它会给出相同的“权限被拒绝”错误),但我注意到logcat 中的以下错误位于上述其他错误之前:
Failed to make and chown /acct/uid_99007: Permission denied
Run Code Online (Sandbox Code Playgroud)
dev/memcg/apps这似乎与该目录遇到的权限问题相同。我已经运行chown 777 dev/memcg -R以确保所有文件和目录都具有 RWX 权限,因此我不知道错误是如何仍然发生的。是什么阻碍了它的发展?
| 归档时间: |
|
| 查看次数: |
4506 次 |
| 最近记录: |