Когда должен бежать Fstrim? -- cyanogenmod поле с участием file-system поле с участием lagging поле с участием maintenance пол android Связанный проблема

When should fstrim run?


4
vote

проблема

русский

На основании этого цианогенмод форум нить , я попробовал Чтобы устранить задержку в запущенных приложениях и переключения между приложениями на моей Galaxy Nexus работает Cyanogenmod с Android 4.4.4, запущенным FSTRIM вручную.

 <код> 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   

Это в значительной степени исправило проблемы задержки. Задержка для возврата на главный экран, например, снизилась с примерно 4 секунд до 1 секунды. Исходя из этого повышения производительности, я ожидаю, что задержка была вызвана файловой системой, работающей неэффективной.

Разве ОС Android не должна работать FSTRIM самостоятельно? Когда это должно произойти?

Английский оригинал

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?

           
   
   

Список ответов

5
 
vote

/ a> На ссылке @ Ответ Mattm немного устарел. <Код> IdleMaintenanceService был удален на леденец на палочке, все изменилось. На пироге запланирован <код> fstrim срабатывает из <код> StorageManagerService ( 1 ) <код> MountService ( 2 ) :

Если устройство живут на midnight + idle , 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 был последним запуском ,

Если вы хотите сделать <код> fstrim5 вручную, используйте командную строку Android fstrim6 (требуется root или <код> fstrim7 ) Отказ Ранее это было <код> fstrim8 но добавлено к менеджеру хранения в OREO ( 11 ) и удален из <код> fstrim9 в пироге ( 12 ) .

Для того, чтобы отправить <Код> StorageManagerService0 Только для выбранной файловой системы, используйте <Код> StorageManagerService1 Инструмент ( требует root ); Апплет Batebox.


Что если у вас нет root?
И вы подозреваете, что запланированные <код> StorageManagerService2 пропускаются за 3+ дня, перезапустить устройство, <код> StorageManagerService3 будет вынужден (поскольку на палочке 5.1 ( 13 ) ). Простой.

Приложения не могут обрезать без корня; Смотрите Этот ответ .


Как часто обрежка должна быть запущена?

Флэш-память (включая SSDS, EMMCS, SD-карты, USB-накопители и т. Д.) Имеет ограниченное количество циклов программы / стирания, прежде чем он умирает. Но в отличие от жестких дисков данных, данные не могут быть просто перезаписаны на флэш-памяти, он должен быть стерта первым, что достигается через <Код> StorageManagerService4 .

Теперь, если мы сделаем слишком много <код> StorageManagerService5 , это приведет к тому, что частый GC в фоновом режиме потребляет драгоценный <код> StorageManagerService6 циклов и, следовательно, уменьшая жизнь. Если мы не будем делать <код> StorageManagerService7 вообще, могут быть ненужным gc (из уже удаленных данных), плюс операции записи будут слишком медленно со временем, потому что <код> StorageManagerService8 будет иметь Для выполнения перед перезагрузочным данными, которая имеет очень высокую задержку по сравнению с <Кодом> StorageManagerService9 операции.

Поэтому нам нужен баланс между обоими.

Также есть и другие факторы, например Поддерживает ли контроллер EMMC Controler MountService0 , насколько это эффективно в фоновом режиме GC планирование, выравнивание и управление усилением записи и т. Д.

Так что, если у вас нет листа данных EMMC вашего телефона, и вы уверены, что вы делаете, лучше - покинуть <код> MountService1 к ОС. На PCS ' ( 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.


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 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.

RELATED:

  • Coding for SSDs
  • Why is TRIM not supported on encrypted xe2x80x9c/dataxe2x80x9d partition?
 
 
4
 
vote
vote
Лучший ответ
 

Комментарий underttabledabled включен angle Anandtech Статья , которая описывает условия, при которых FSTRIM должен работать:

Я узнал немного больше на условиях, лежащих в основе, когда Android 4.3 обременяет файловые системы, так как он не был полностью понятен раньше. Android Framework отправит событие «start Whitle Tense Windows», для которого можно заслушать Mountservice, а затем призывает Vold для файловых систем FSTRIM, когда было выполнено несколько условий - устройство не было затронуто в течение часа, бездействующего обслуживания Оконное событие было отправлено через 24 часа, а устройство является либо зарядным устройством с 80% батареей или на зарядном устройстве с 30% батареей. Цель состоит в том, чтобы иметь FSTRIM примерно один раз каждые 24 часа, если вы находитесь в привычке подключать устройство для зарядки каждую ночь.

 

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.

 
 
1
 
vote

Ответ MattM указывает на условия, под которыми требуется <код> fstrim . Я не знаю, если поведение изменилось в последующих версиях Android, но я наткнулся на приложение, которое делает fstrim по требованию, а также на перезагрузке . Root нужен. Распределение этой информации, как это может быть полезно для тех, кто не Linux Savvy (например, я:)

SSD Boost

Android 4.3+ поддерживает отделку, в котором он означает, что операционная система после удаления файла будет отправлять команду обрезки в NAND контроллер уведомления Witch блокирует используемый файл, контроллер будет удалить их, когда он может писать без стирания в следующий раз ,

Но пользователи не имеют контроля над этим процессом, а Android не обрезает хранилище в течение очень длительного времени.

'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

 
 
 
 

Связанный проблема

3  Как обмануть мое устройство Android?  ( How do i defrag my android device ) 
Я видел несколько приложений онлайн, но они не кажутся законными. Из того, что я видел, они, похоже, не показывают, что происходит, пока привод дефрагментиров...

2  Почему отделка не поддерживается на зашифрованных разделах «/ Data»?  ( Why is trim not supported on encrypted data partition ) 
У меня укоренился <код> Lenovo A369i . Я использую <код> LagFix (fstrim) для обрезки разделов. Ранее он работал хорошо с /data , но после того, как я зашифр...

4  Когда должен бежать Fstrim?  ( When should fstrim run ) 
На основании этого цианогенмод форум нить , я попробовал Чтобы устранить задержку в запущенных приложениях и переключения между приложениями на моей Galaxy N...

1  Это приложение обещает бегать «Fstrim» без рута, но я не уверен, работает ли это  ( This app promises to run fstrim without root but i am not sure if it works ) 
Я не уверен, если Это приложение работает. Может кто-нибудь, пожалуйста, помогите мне? Мой телефон новый и в своем гарантированном периоде, поэтому я еще не...

4  Когда я должен запустить проверку согласованности на моей съемной карте microSD?  ( When should i run a consistency check on my removable microsd card ) 
У меня есть устройство Android с съемным картой microSD. Карта использует FAT32, либо Exfat Technology. Это «не журнальные файловые системы» технологии, поэто...

1  Как заставить отделку на устройстве Android?  ( How to force trim on android device ) 
с 4.3 Включение поддержки накладки (хотя я прочитал, что она присутствовала с первого JB). Мне было интересно, если для меня есть способ заставить отделку на ...

5  Как удалить неиспользуемые папки, созданные приложениями?  ( How to remove unused folders created by apps ) 
Когда я начал со свежей SD-карты, в нем было только очень мало папок. Со временем, когда я попробовал много приложений, я мог видеть список папок в моей SD-ка...

1  Периодические проверки согласованности файловой системы, вероятно, являются хорошей идеей. Текущие устройства Android когда-либо делают их?  ( Periodic filesystem consistency checks are probably a good idea do current andr ) 
Позвольте мне начать, давая вам какую-то общую справочную информацию. Мой реальный вопрос находится в самом нижней части этого поста. фон, часть 1: журнал ...

3  Вам нужно запустить удаленные / очистители на Android, чтобы поддерживать уровень производительности, как в Windows?  ( Do you need to run uninstallers cleaners on android to maintain performance leve ) 
Вам придется простить меня, так как я не такой знакомой с внутренней работой Android / Linux, так как я с Windows. Мне интересно, разлагается на производите...

3  Как убирать старые папки приложения из PROID ROM?  ( How to clean up old application folders from prior rom ) 
Я установил CM10 на моем GS2, а во время процесса я не отформатировал файловую систему, так как я хотел сохранить свои фотографии и музыку на устройстве. Я зн...