什么时候应该fstrim运行? -- cyanogenmod 领域 和 file-system 领域 和 lagging 领域 和 maintenance 领域 android 相关 的问题

When should fstrim run?



基于这个 cyanogenmod论坛线程,我尝试过通过手动运行FSTIM运行FSTIM,解决CyanogenMod运行CyanogenMod的Galaxy Nexus的应用程序之间的延迟。
  root@maguro:/ # fstrim -v /data                                                           /data: 11649122304 bytes trimmed                                                          root@maguro:/ # fstrim -v /cache                                                          /cache: 436121600 bytes trimmed                                                           root@maguro:/ # fstrim -v /system                                                         /system: 80490496 bytes trimmed root@maguro:/ # exit   




Based on this cyanogenmod forum thread, I tried to address the delay in running applications and switching between applications on my Galaxy Nexus running cyanogenmod with Android 4.4.4 by running fstrim manually.

root@maguro:/ # fstrim -v /data                                                           /data: 11649122304 bytes trimmed                                                          root@maguro:/ # fstrim -v /cache                                                          /cache: 436121600 bytes trimmed                                                           root@maguro:/ # fstrim -v /system                                                         /system: 80490496 bytes trimmed root@maguro:/ # exit 

This has largely fixed the delay issues. The delay to return to the home screen, for example, has reduced from about 4 seconds to less than 1 second. Based on this performance boost, I expect the delay was caused by the filesystem running inefficiently.

Isn't the Android OS supposed to run fstrim on its own? When is this supposed to happen?




文章< / a>在@ mattm 答案有点过时。 IdleMaintenanceService 在棒棒糖中删除,事情已更改。在馅饼上,计划 fstrim 是从 StorageManagerService ( 1 ) MountService ( 2 )

如果设备在 午夜+空闲 ,Fstrim会在下一个可用的 充电+空闲 时间

*( 3 )
挂载服务 StorageManager ,又调用 Vold fstrim

如果未遗漏计划,因为条件不符合,而 fstrim 尚未运行最后 3 days ( 4 ),如果重新启动设备,将在设备启动期间强制。 SystemServer ( 5 ) fstrim0 ( 6 ) fstrim1 ( 7 ) fstrim2 ( 8 )涉及

在每种情况下,文件 fstrim3 ( 9 )(自棒棒糖)得到更新(<一个href ="https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-9.0.0_r42/services/core/java/com/android/server/storagemanagerservice.java#581" rel ="nofollow noreferrer" > 10 ),因此您可以检查其时间戳(需要root ),以查找 fstrim4 最后运行时。

如果要做 abcdefghijklmn15 手动,请使用Android的Commandline工具 fstrim6 (需要root或 fstrim7 ) 。此前这是 fstrim8 ,但添加到oreo 的Storage Manager( 11 )并从 fstrim9 中删除饼( 12 。

要将 StorageManagerService0 发送到所选文件系统,请使用 StorageManagerService1 工具(需要root ); 一个BusyBox applet。

并且您怀疑预定的 StorageManagerService2 被遗漏了3天,重新启动de 冰, StorageManagerService3 将被强制(自洛根脂5.1 ( 13 ))。简单。



闪存(包括SSD,EMMC,SD卡,USB棒等)在它之前具有有限数量的程序/擦除周期。但与HDD不同,数据不能刚刚在闪存上覆盖,必须首先删除,这通过 StorageManagerService4 实现。

现在如果我们做太多 StorageManagerService5 ,这将导致频繁的gc在后台消耗珍贵 StorageManagerService6 周期,因此减少了生命。如果我们不做 StorageManagerService7 完全,可能有不必要的gc(已经删除的数据),加上写操作将与时间太慢,因为 StorageManagerService8 将有要在覆盖数据之前执行,与 StorageManagerService9 操作相比具有非常高延迟的延迟。


还有其他因素例如。 emmc控制器是否支持 MountService0 ,它在后台GC调度,磨损调平和管理写入放大等有效性如何。

所以除非您的手机emmc的数据表而且您确信您正在进行的内容,更好就是将 MountService1 留给操作系统。在PC上的( 14 )

频繁地运行fstrim,甚至使用 MountService2 ,可能会对劣质SSD设备的寿命产生负面影响。对于大多数桌面和服务器系统,足够的修剪频率为<强> 每周一次



  • SSDS的编码
  • 为什么不支持加密的"/ data" 分区?


The article referenced in @mattm's answer is a bit outdated. IdleMaintenanceService was removed in Lollipop, things have changed. On Pie, scheduled fstrim is triggered from StorageManagerService (1) to MountService (2):

if the device is alive at midnight + idle, fstrim gets run at the next available charging + idle time

* (3)
Mount service calls StorageManager which in turn calls Vold to do fstrim.

If the schedule is being missed because the conditions don't meet and fstrim has not run for last 3 days (4), it will be forced during device startup if the device is restarted. SystemServer (5), PackageManager (6), StorageManager (7) and Vold (8) are involved.

In each case, the file /data/system/last-fstrim (9) (since Lollipop) gets updated (10), so you can check its timestamp (requires root) to find out when fstrim was last run.

If you want to do TRIM manually, use Android's commandline tool sm fstrim (requires root or adb shell). Previously this was vdc fstrim dotrim but added to Storage Manager in Oreo (11) and removed from vold in Pie (12).

In order to send FITRIM ioctl to selected filesystem(s) only, use fstrim tool (requires root); a busybox applet.

What if you don't have root?
And you suspect that the scheduled fstrim is being missed for 3+ days, restart device, fstrim will be forced (since Lollipop 5.1 (13)). Simple.

Apps can't TRIM without root; see this answer.


Flash memory (including SSDs, eMMCs, SD Cards, USB sticks etc.) has limited number of Program/Erase cycles before it dies. But unlike HDDs, data can't be just overwritten on flash memory, it has to be Erased first, which is achieved through Garbage Collection.

Now if we do too much fstrim, this will cause frequent GC in background consuming precious P/E cycles and hence reducing life. If we don't do fstrim at all, there could be unnecessary GC (of already deleted data), plus the write operations will get too slow with time because Erase will have to be performed before overwriting data, which has very higher latency as compared to Program operation.

So we need a balance between both.

Also there are other factors e.g. whether eMMC controller supports over provisioning, how effective it is in background GC scheduling, wear-leveling and managing write amplification etc.

So unless you have the data sheet of your phone's eMMC and you are sure what you are doing, better is to leave the fstrim to OS. On PCs' (14):

Running fstrim frequently, or even using mount -o discard, might negatively affect the lifetime of poor-quality SSD devices. For most desktop and server systems a sufficient trimming frequency is once a week.

But this may vary with situations.


  • Coding for SSDs
  • Why is TRIM not supported on encrypted xe2x80x9c/dataxe2x80x9d partition?

unforgettableId的注释包括一个 Anandtech文章描述了FSTRIM应该运行的条件:

我在Android 4.3将修剪文件系统的底层时,我学习了更多的条件,因为之前没有完全清除。 Android框架将发送"启动空闲维护窗口" 事件,即MountService侦听,然后在满足一些条件时调用VOLD到FSTRIM文件系统 - 设备尚未触及一小时,没有空闲维护窗口事件已在24小时内发送,该设备是带有80%电池或带30%电池的充电器的卸载机。如果您养成每晚充电的习惯,目标是每24小时大致每24小时运行Fstrim。


Unforgettableid's comment included an AnandTech article that describes the conditions under which fstrim is supposed to run:

Ixe2x80x99ve learned a bit more on the conditions underlying when Android 4.3 will TRIM filesystems, as it wasnxe2x80x99t completely clear before. The Android framework will send out a xe2x80x9cstart idle maintenance windowxe2x80x9d event that the MountService listens for, and then invokes vold to fstrim filesystems when a few conditions have been met xe2x80x93 the device hasnxe2x80x99t been touched for over an hour, no idle maintenance window event has been sent in 24 hours, and the device is either off-charger with 80% battery or on-charger with 30% battery. The goal is to have fstrim run roughly once every 24 hours if youxe2x80x99re in the habit of plugging the device in to charge every night.


通过mattm答案表示条件下, fstrim 应该运行。我不知道该行为是否在随后的Android版本中发生了变化,但我遇到了一个应用程序,该应用程序会在Reboot 上的需求中执行 fstrim 。根必需。分享此信息,因为它可能对那些不是Linux Savvy的人有用(如我:)

ssd boost

Android 4.3+支持修剪此原理,这意味着删除文件后的操作系统将向NAND控制器发送Trim命令通知Witch块使用的文件使用,控制器将在空闲时删除它们,因此它可以在不擦除下次时写入。


'ssd boost'可帮助您手动在您的设备上运行修剪,如果您觉得它已成为滞后,无论如何它都会在每次重新启动时为您修剪。



Answer by mattm indicates conditions under which, fstrim should run. I am not aware if the behaviour has changed in subsequent Android versions, but I came across an app that does fstrim on demand as also on reboot . Root needed. Sharing this information as it may be useful to those who are not Linux savvy ( like me :)

SSD Boost

Android 4.3+ supports trim natively, it means that operating system after deleting a file will sends a trim command to nand controller notifying witch blocks the file used, the controller will erase them when idle so it can write fast without erasing next time.

But users have no control over this process and Android doesn't trim the storage for a very long time.

'SSD Boost' helps you to run trim on your device manually if you feel it has become laggy and anyway it does trim for you on every reboot.

I know this directly doesn't answer the question, but felt this was the best question on site to share this



2  没有操作系统和TWRP  ( No operative system and twrp ) 
最近我在手机上安装了一个自定义ROM,然后我决定在我在YouTube看到的伎俩上扩展我的手机记忆,我不得不进入TWRP,不幸的是我点击了删除系统。此后,当我试图启动我的手机时,它被粘贴在徽标屏幕上,在试图打开恢复模式时,以某种方式将TWRP替换为Android。我想知道是否有任何可能的方法来解决这个问题? 编辑:省略...

5  恢复rom备份  ( Restore a rom back up ) 
我要在我的手机上试试yananogenmod。然而,在我这样做之前,我对一件事很好奇。我执行了一个NANDROID备份,每个我在本网站上收到的指令(谢谢BRYAN),以及所有我的应用程序和数据的钛备份。我对的是 - 说我真的搞砸了在Cyanogenmod过程中的东西吗?我该如何从中恢复?从我自己的研究来看,它看起来像...

2  cm 12.1 nexus 5卡在bootloop和恢复加载时  ( Cm 12 1 nexus 5 stuck on bootloop and recovery load up ) 
我的Nexus 5有很多奇特的问题。 昨晚,我把手机留给了充电。它正常工作,软件是功能性等。但是,一旦我醒来,手机就会不断重启自己,并且不会加载靴子动画。我试图加载FastBoot以进入TWRP恢复,但是,手机冻结在负载屏幕上。我还应该补充一下,我的自定义引导动画被Cyanogenmod吉祥物所取代。 这个问题从未发...

0  如何忽略崩溃通知/卸载应用而不启动CyanogenMod?  ( How to ignore crash notifications uninstall apps without booting on cyanogenmo ) 
今天我将Cyanogenmod升级到我的Nexus 4上的最新版本(05/10/2015)并安装了最新的GAPPS包。但是,一旦我立即启动我的设备,我的手机垃圾邮件会用于Gmail,YouTube和GAPPS流程的通知。在关闭它们后,他们会立即弹出。 我通过清除我的Google Apps的缓存/数据来读取解决此问题。...

3  为什么我的手机不支持Google + Hoogouts?  ( Why doesnt my phone support google hangouts ) 
我有摩托罗拉XT502手机,它是一个Commtiva Z71变体,运行Android 2.3.7 cm7.1。 我想知道什么限制了手机上的环聊功能。 是因为它是因为它具有ARM v6 CPU,缺失的前面朝向相机或内存约束?我的手机上也没有gtalk视频。 任何信息?谢谢。 ...

1  中兴刀片无法维护WiFi连接  ( Zte blade cant maintain a wifi connection ) 
我有一个带有Android 2.3.7(Cyanogenmod 7.1)的中兴刀片。最近,当我尝试连接到WiFi网络时(甚至在这个问题开始前工作)开始连接,尝试自闭断,然后断开连接。 这里的一部分logcat 12-03 00:18:23.370: DEBUG/WifiStateTracker(191): Re...

2  安全测试ROM构建  ( Safely test rom build ) 
我正在尝试进入Android ROM开发,并从我的设备的来源中编写CM13(尚未完全支持,我调整了它,以便它应该工作)。但是,由于这是我第一次进入自定义ROM发展,我有一个相当严重的问题。 如何安全地测试我的rom? 我希望能够使用TWRP将其闪存到我的设备(OnePlus二),但是,我需要能够确保无法对我的设备进行...

3  如何链接与Facebook,Gmail等联系?  ( How to link contact with facebook gmail etc ) 
我在cm7&amp上; htc欲望。旧的HTC Sence正在将我的联系人与Facebook,Gmail等联系起来,它给了我良好的建议,可以链接或简单的方法如何将联系人项目与其他一些帐户联系起来。当前的Contact Manager有一个"加入" 功能,我不确定我是否可以用于Facebook。 是否有任何高级联系经理...

2  禁用均衡器Lockscreen UI(Cyanogenmod 12 - 棒棒糖)  ( Disable equalizer lockscreen ui on cyanogenmod 12 lollipop ) 
因此,显然锁值上的均衡器(或音频)UI组件导致我的设备完全没有触摸屏幕中间的触摸。当我达到棒棒糖(Cyanogenmod 12)OTA更新时开始,我可以将行为关联(重新启动设备,不要播放音频 - 没有问题)。 我可以禁用锁定屏幕的UI组件(或如果涉及到该均值,或者在cm12中的均衡器)直到固定我的设备是一个onepl...

3  / data / sdext2安装未找到link2sd  ( Data sdext2 mount not found link2sd ) 
我安装了cm 7.2稳定(Android 2.3。)frome 这里。然后我遵循这个为link2sd准备我的SD卡。然后我在手机上安装了link2sd,并创建了ext2分区的挂载脚本。它生成精细,我重新启动了手机,但仍未安装ext2分区,它永远不会被安装。 Link2SD可获得root访问权限。 安装或创建脚本时不会...

7  CyanogenMod - 什么是“通知模式”?  ( Cyanogenmod what is notification mode ) 
我认为我误解了Cyanogenmod的概况方案关于通知。 这是我想要做的事情:我想要在状态栏中弹出所有通知,但只有手机和消息传递应该振动。在工作,电话和amp;消息不应该环。 我以这种方式配置了我的配置文件: 组"手机&amp;消息传递" 包含电话,消息,电子邮件和Gmail应用程序。 工作:手机&amp;消息传递...

5  如何将Google Apps 20130812安装到CyanogenMod 10.1(Android 4.2.2)中安装?  ( How do i install google apps 20130812 into cyanogenmod 10 1 android 4 2 2 ) 
我试图安装 google apps(gapps)20130812 20130812更新 for android 4.2.2在我的三星galaxy迷人迷人,它正在运行 cyanogenmod 10.1-20130723-novelly -fascinatemtd 利用ClockWorkMod V4.0.1.0。我已经将...

0  回收氰基od(未发现上下文)  ( Recovering cyanogenmod no context found ) 
我用手机,电池很低,突然关闭。我以为它是因为电池,并插入我的充电器。现在我正在尝试启动我的手机,但它在CyanogenMod启动屏幕上唤起: 在这里我卡住了(点击较大的图像) 用CWM恢复mod重新启动我的手机,我得到没有发现错误。 我不知道这是什么意思,我如何处理这个问题。 我正在使用三星Galaxy ...

4  更新CyanogenMod的问题 - 手机将无法完成启动  ( Problem with updating cyanogenmod phone will no finish booting up ) 
tl; dr 更新的cyanogenmod与rom manager,当它重新启动时它卡在此屏幕上: 我用yyanoon 7. revo 7. rom manager应用程序通知我的更新。我点击了一切,继续更新,一切似乎都很好;它关机,开始备份,然后显示一个具有大量文本和安装进度条的屏幕。完成后,它重新启动,...

1  使用S2E时是否有可能在内部存储器中留下一些应用程序?  ( Is it possible to leave some apps in the internal memory while using s2e ) 
嗯,是可能的吗?我有一个带有官方氰基MROM的星系ACE。我只有4级Micro SD卡,并使用SD Speed Company应用程序。 我想知道我是否可以在内部存储器中留下一些应用程序(如副手SMS,Go Launcher EX等),同时保留SD-EXT分区中的其他应用程序。谢谢。 ...

© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有

Licensed under cc by-sa 3.0 with attribution required.