Is there any logging where I can confirm this?
A charging, idle device over night is not the only way to run
fstrim, there are other ways too.
What this old article quotes 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.
if the device is alive at midnight + idle, fstrim gets run at the next available charging + idle time
Mount service calls
StorageManager which in turn calls
Vold to do
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.
StorageManager (7) and
Vold (8) are involved.
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.
PS: HOW OFTEN TRIM SHOULD BE RUN?
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
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
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.