fstrim运行时机及相关问题解决方案

7次阅读
没有评论

问题描述

基于某论坛帖子尝试解决其Galaxy Nexus设备上运行应用程序和切换应用程序延迟的问题,通过手动执行fstrim命令解决了延迟问题。但是,用户不清楚为什么Android操作系统没有自动执行fstrim,以及fstrim应何时自动运行。

解决方案

方案1

fstrim的自动运行机制在不同版本的Android系统中有所不同。对于Android Pie及以上版本,fstrim的触发条件如下:
1. 设备闲置超过一小时。
2. 自上次发送“idle maintenance window”事件以来已超过24小时。
3. 设备未充电且电池电量超过80%,或设备充电且电池电量低于30%。

当这些条件满足时,StorageManagerService会调用MountService执行fstrim操作。具体来说,StorageManagerService会更新/data/system/last-fstrim文件的时间戳,以记录上一次fstrim执行的时间。因此,可以通过检查此文件的时间戳来了解fstrim上一次执行的具体时间(需要root权限)。

如果发现fstrim超过三天未执行,系统重启时会强制执行fstrim操作。

操作步骤:
1. 检查/data/system/last-fstrim文件的时间戳,判断最后一次fstrim执行的时间。
2. 如果需要手动执行fstrim,使用adb shell sm fstrim命令(需要root权限)。

方案2

如果设备没有root权限,可以考虑重启设备以触发fstrim的强制执行。通常,重启设备后,fstrim会在下次设备充电且处于闲置状态时自动运行。

方案3

对于非root用户,可以使用第三方应用如SSD Boost来手动触发fstrim。该应用支持在设备感到卡顿时手动执行fstrim,也可以在每次重启时自动执行fstrim。

操作步骤:
1. 下载并安装SSD Boost应用。
2. 打开应用,选择手动执行fstrim或设置在重启时自动执行fstrim。

注意事项

  • 对于闪存存储设备,频繁执行fstrim可能会缩短其使用寿命。因此,建议保持合理的fstrim频率,一般情况下,每周执行一次即可。
  • 请根据实际情况调整fstrim的执行频率,避免对设备造成不必要的负担。
正文完