Quando o fstrim deve correr? -- yanogenmod campo com file-system campo com lagging campo com maintenance camp android Relacionado O problema

When should fstrim run?


4
vote

problema

português

com base nisso cyanogenmod fórum thread , eu tentei Para resolver o atraso em executar aplicativos e alternar entre aplicativos no meu Galaxy Nexus executando o CyanogenMod com Android 4.4.4 executando o fstrim manualmente.

  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    

Isso corrigiu em grande parte os problemas de atraso. O atraso para retornar à tela inicial, por exemplo, reduziu de cerca de 4 segundos para menos de 1 segundo. Com base nesse impulso de desempenho, espero que o atraso tenha sido causado pelo sistema de arquivos em execução ineficientemente.

O sistema operacional Android deveria executar fstrim por conta própria? Quando isso deveria acontecer?

Inglês Original

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?

           
   
   

Lista de respostas

5
 
vote

o artigo < / a> referenciado em @ mattm 's resposta é um pouco desatualizado. ABCDEFGHIJKLMNABCDEFGHIJKLMN0 foi removido no pirulito, as coisas mudaram. Na torta, agendada fstrim é acionado a partir de StorageManagerService ( 1 <<<<<<> A.> ABCDEFGHIJKLMNABCDEFGHIJKLMN3 ( 2 ) :

.

Se o dispositivo estiver vivo em meia-noite + inativo , fstrim é executado no próximo disponível Carregamento + IDLE Tempo

* ( 3 )
Chamadas de serviço de montagem StorageManager que por sua ligação Vold para fazer fstrim .

Se a programação estiver sendo perdida porque as condições não atenderem e fstrim não é executado para o último 3 days ( 4 ) , será forçado durante a inicialização do dispositivo se o dispositivo for reiniciado. ABCDEFGHIJKLMNABCDEFGHIJKLMN9 ( 5 <<<>, fstrim0 ( 6 ) , fstrim1 ( 7 ) e abcdefghijklmnabcdefgijklmn12 ( 8 ) estão envolvidos.

Em cada caso, o arquivo fstrim3 ( 9 ) (já que o pirulito) é atualizado (< a href = "https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-9.0.0_r42/services/core/java/com/android/server/storageemanagerservice.java#581" rel = "Nofollow Noreferro"> 10 ) , para que você possa verificar o seu timestamp ( Requer root ) para descobrir quando fstrim4 foi a última execução .

Se você quiser fazer fstrim5 manualmente, use a ferramenta de linha de comando do Android fstrim6 (requer raiz ou abcdefghijklmnabcdefgijklmn17 ) . Anteriormente, isso foi ABCDEFGHIJKLMNABCDEFGHIJKLMN18 mas adicionado ao Storage Manager em Oreo ( 11 ) e removido de fstrim9 no pie ( 12 ) .

Para enviar apenas StorageManagerService0 para sistema (s) de arquivos selecionados apenas, use StorageManagerService1 ferramenta ( requer raiz ); um applet busybox.


E se você não tiver root?
E você suspeita que o o agendado ABCDEFGHJKLMNABCDEFGHIJKLMN22 está sendo perdido por mais de 3 dias, reiniciar de Ice, StorageManagerService3 será forçado (já que o pirulito 5.1 ( 13 << / Aug>). Simples.

aplicativos não podem aparar sem raiz; Veja Esta resposta .


Quantas vezes deve ser executado?

memória flash (incluindo SSDs, EMMCs, cartões SD, varas USB, etc.) tem um número limitado de ciclos de programa / apagamento antes de morrer. Mas, ao contrário dos HDDs, os dados não podem ser apenas sobrescritos na memória flash, ele deve ser apagado primeiro, que é alcançado através de StorageManagerService4 .

Agora, se fizermos muito StorageManagerService5 , isso fará com que o GC frequente no fundo consumindo precioso abcdefghijklmn26 ciclos e, portanto, reduzindo a vida. Se não fizermos StorageManagerService7 em tudo, pode haver GC desnecessário (de dados já excluídos), além das operações de gravação ficarão muito lentos com o tempo, porque abcdefghijklmnabcdefgijklmn28 terá Para ser realizado antes de sobrescrever dados, que tem latência muito maior em comparação com ABCDEFGHIJKLMNABCDEFGHIJKLMN29 Operação.

Então precisamos de um equilíbrio entre os dois.

Também há outros fatores, e. Se o controlador EMMC suporta MountService0 , quão eficaz está em segundo plano de agendamento de GC, nivelamento de desgaste e gerenciamento de amplificação de gravação etc.

Então, a menos que você tenha a folha de dados do EMMC do seu telefone e tenha certeza de que você está fazendo, é melhor deixar o abcdefghijklmnAbcdefghijklmn31 para o OS. Em pcs ' ( 14 ) :

.

Running Fstrim com freqüência, ou mesmo usando MountService2 , pode afetar negativamente a vida útil dos dispositivos SSD de baixa qualidade. Para a maioria dos sistemas de desktop e servidor, uma freqüência de corte suficiente é uma vez por semana .

Mas isso pode variar com situações.

relacionado:

  • codificação para SSDs
  • Por que o acabamento não é suportado em partição "/ dados" criptografada?

 

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
Melhor resposta
 

comentário inesquetado incluído um ANANDTECH artigo que descreve as condições sob as quais o Fstrim é suposto para executar:

.

Eu aprendi um pouco mais nas condições subjacentes quando o Android 4.3 irá aparar sistemas de arquivos, pois não foi completamente claro antes. A estrutura do Android enviará um evento de "Iniciar Iniciar Manutenção de Manutenção" que o Mountservice ouve e invoca Vold para FstruM Filsystems quando algumas condições foram atendidas - o dispositivo não foi tocado por mais de uma hora, sem manutenção inativa O evento da janela foi enviado em 24 horas, e o dispositivo é off-carregador com bateria 80% ou no carregador com 30% de bateria. O objetivo é ter fstrim correr aproximadamente uma vez a cada 24 horas, se você estiver no hábito de conectar o dispositivo a cobrar todas as noites.

 

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

Resposta por Mattm Indica condições em que, fstrim deve ser executado. Não estou ciente se o comportamento tenha mudado em versões subseqüentes Android, mas eu dei um aplicativo que faz fstrim on demand como também na reinicialização . Raiz necessária. Compartilhando esta informação, pois pode ser útil para aqueles que não são savvy linux (como eu :)

SSD Boost

.

Android 4.3+ suporta nativamente, significa que o sistema operacional após excluir um arquivo enviará um comando de trim para o controlador NAND Notificando os blocos de bruxa do arquivo usado, o controlador irá apagá-los quando ele pode gravar rapidamente sem apagar a próxima vez .

Mas os usuários não têm controle sobre este processo e Android não aparar o armazenamento por muito tempo.

'SSD Boost' ajuda você a executar o acabamento em seu dispositivo manualmente se você acha que se tornou laggy e de qualquer maneira, ele aparece para você em cada reinicialização.

Eu sei que isso diretamente não responde a pergunta, mas senti que esta foi a melhor pergunta no site para compartilhar esta

 

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

 
 
 
 

Perguntas relacionadas

5  Restaurar um back-up da ROM  ( Restore a rom back up ) 
Eu vou experimentar cyanogenmod hoje à noite no meu celular. Antes de fazer isso, no entanto, estou curioso sobre uma coisa. Eu realizei um backup nandroid, p...

5  Como faço para instalar o Google Apps 20130812 em CyanogenMod 10.1 (Android 4.2.2)?  ( How do i install google apps 20130812 into cyanogenmod 10 1 android 4 2 2 ) 
Eu estou tentando instalar o Google Apps (Gapps) 20130812 Update para o Android 4.2.2 no meu samsung galaxy fascinate, que está sendo executado cyanogenmod...

1  ZTE Blade não pode manter uma conexão WiFi  ( Zte blade cant maintain a wifi connection ) 
Eu tenho uma lâmina ZTE com o Android 2.3.7 (CyanogenMod 7.1). Recentemente, quando tento me conectar a uma rede WiFi (até mesmo uma que funcionou antes que e...

0  Como ignorar notificações de travamento / desinstalar aplicativos sem inicializar no CyanogenMod?  ( How to ignore crash notifications uninstall apps without booting on cyanogenmo ) 
Hoje eu atualizei o CyanogenMod para a versão mais recente (05/10/2015) no meu Nexus 4 e instalei o novo pacote GAPPS. Mas assim que eu inicializar meu dispos...

2  Desativar a interface do ii de bloqueio do equalizador (CyanogenMod 12 - pirulito)  ( Disable equalizer lockscreen ui on cyanogenmod 12 lollipop ) 
Portanto, o componente da interface do usuário do equalizador (ou áudio) no bloqueio faz com que meu dispositivo se torne completamente indiferente para tocar...

3  Como ligar o contato com o Facebook, Gmail etc?  ( How to link contact with facebook gmail etc ) 
Eu estou no cm7 & amp; Htc desire. Antigo HTC Sence estava vinculando meus contatos com o Facebook, Gmail etc. Isso me deu boas sugestões O que poderia ser vi...

1  É possível deixar alguns aplicativos na memória interna ao usar S2e?  ( Is it possible to leave some apps in the internal memory while using s2e ) 
Bem, é possível? Eu tenho uma galáxia com o oficial cyanogenmod rom. Eu só tenho um cartão Micro SD de classe 4 e está usando o aplicativo de aumento de veloc...

2  Nenhum sistema operativo e twrp  ( No operative system and twrp ) 
Recentemente eu instalei uma ROM personalizada no meu telefone, então decidi expandir minha memória de telefone em um truque que vi no YouTube, onde eu tinha ...

2  CM 12.1 Nexus 5 preso no bootloop e carregamento de recuperação  ( Cm 12 1 nexus 5 stuck on bootloop and recovery load up ) 
Eu tenho um problema bastante peculiar com o meu nexus 5. ontem à noite, deixei meu telefone no comando. Estava funcionando normalmente e o software era fun...

0  Recuperando CyanogenMod (sem contexto encontrado)  ( Recovering cyanogenmod no context found ) 
Eu estava usando meu telefone, a bateria estava baixa e de repente desligou. Eu pensei que é por causa da bateria e conectado meu carregador. Agora estou tent...

4  Problema com a atualização do CyanogenMod - telefone não terminará de inicializar  ( Problem with updating cyanogenmod phone will no finish booting up ) 
tl; dr cyanogenmod atualizado com o ROM Gerenciador e quando é reinicializado, está preso nesta tela: Eu tenho um EVO com o Cyanogen 7. O aplicativo RO...

3  Por que meu telefone não suporta o Google + Hangouts?  ( Why doesnt my phone support google hangouts ) 
Eu tenho o Telefone Motorola XT502 que é uma variante do Commtiva Z71, executando o Android 2.3.7 cm7.1. Eu estava me perguntando o que está limitando o rec...

7  CyanogenMod - O que é "modo de notificação"?  ( Cyanogenmod what is notification mode ) 
Acho que estou entendendo mal as opções de perfis em CyanogenMod sobre notificações. Aqui está o que estou tentando fazer: gostaria de todas as notificações...

2  Testar com segurança rom construir  ( Safely test rom build ) 
Estou tentando entrar no desenvolvimento do Android Rom e, como tal, eu compilei o CM13 da fonte para o meu dispositivo (que ainda não é totalmente suportado,...

3  / Data / SDExt2 Mount não encontrou link2sd  ( Data sdext2 mount not found link2sd ) 
Eu instalei cm 7.2 estável (Android 2.3.) Frome aqui . Então eu segui Este guia para preparar meu cartão SD para link2sd. Em seguida, instalei o link2sd no...




© 2021 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.