6

Is there any logging where I can confirm if fstrim was run when I put my phone on charging over night?

0

1 Answer 1

9

A charging, idle device over night is not the only way to run fstrim, there are other ways, too.

Quoting from this old article about scheduled fstrim on Android:

The Android framework will send out a “start idle maintenance window” event that the MountService listens for, and then invokes vold to fstrim filesystems when a few conditions have been met – the device hasn’t 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.

But 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 aren't met and fstrim has not run for the 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 the 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 the device, fstrim will be forced (since Lollipop 5.1 (13)). Simple.

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


PS: HOW OFTEN TRIM SHOULD BE RUN?

Flash memory (including SSDs, eMMCs, SD Cards, USB sticks etc.) has a limited number of Program/Erase (P/E) 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 (GC).

Now if we do too much fstrim, this will cause frequent GC in the 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 erasure will have to be performed before overwriting data, which has significantly higher latency compared to the 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, it's better to leave the fstrim to the 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 depending on the situation.

RELATED:

4
  • I have a question. I understand that I shouldn't run trim too often but can "sm trim" work without root through adb?
    – Sbeve
    Jun 24, 2019 at 21:57
  • Yes, because shell has MOUNT_UNMOUNT_FILESYSTEMS privileged permission granted by default, so must work without root. But there could possibly be other issues like a bad SELinux policy may not allow this. Also TRIM on encrypted /data partition is tricky. Jun 24, 2019 at 22:14
  • Is there a way for non-root users to find out when TRIM was last run? I'm on a Pixel 6 Pro running GrapheneOS, if that makes things easier. Oct 10, 2022 at 15:39
  • @MatthiasBraun you may find traces in logcat, dumpsys, dropbox etc. I've never tried though. Oct 17, 2022 at 19:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .