FSTRIMが実行されるべきですか? -- cyanogenmod フィールド と file-system フィールド と lagging フィールド と maintenance フィールド android 関連 問題

When should fstrim run?


4
vote

問題

日本語

これに基づいて cyanogenmodフォーラムスレッド、試してみました実行中のアプリケーションの遅延に対処し、FSTRIMを手動で実行することで、CyanogenModを駆使してCyanogenModを実行しているMy Galaxy Nexusのアプリケーション間で切り替えるには。

<事前> <コード> 9988776655443330

これは遅延問題を大幅に修正しました。たとえば、ホーム画面に戻る遅延は、約4秒から1秒未満に減少しました。このパフォーマンス上昇に基づいて、遅延が非効率的に実行されているファイルシステムによって引き起こされたことを期待しています。

Android OSはそれ自身で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 's答えは少し古くなっています。 <コード> IdleMaintenanceService はロリポップで削除され、物事が変わりました。 PIE、スケジュール<コード> MountService1 は<コード> 99887766544332 ( 1 to 9988766655444333 ( 2 )

デバイスが midnight + idle で生存している場合、fstrimは次の 充電+アイドル 時間

*( 3 ) Mount Serviceコール<コード> 99887766544335 <コード> 9988766654336

を実行する 9988776655444334

スケジュールがミスされていない場合は、条件が満たされていないため、<コード> 99887766544337 は、Last 9988776666544338 ( 4 )は、デバイスの起動時にデバイスの起動時に強制されます。 <コード> SystemServer (https://android.googlesource.com/platform/frameworks/base / +/refs/tags/android-9.0.0_r42/services/java/com / android/server/systemserver.java##1027 "rel =" nofollow noreferrer "> 5 、<コード> 9988777666554433310 ( 6 、<コード> 9988777666554433311 ( 7 )および<コード> MountService312 ( 8 )が関与しています。

それぞれの場合、ファイル<コード> 9988766554433313 ( 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 )、そのタイムスタンプをチェックする(に必要なが必要です) fstrim4 が最後に実行されたときに調べる。

<コード> fstrim5 を手動で実行したい場合は、Androidのコマンドラインツール <コード>を使用してください。 998876655443317 を必要とします) 。以前は<コード> 998877665543318 でしたが、OREO ( 11 ) 998877655443319 ( 12 )。

選択したファイルシステムにのみ送信するには、<コード> 998877666655443320 Toolを使用してください( root が必要です)。ビジーボックスアプレット。


rootがない場合はどうですか? そして、スケジュールされた StorageManagerService2 が3日以降の再起動中、<コード> 998876655443323 が強制されます(Lollipop 5.1 (この回答


トリムをどのくらいの頻度で実行されるべきか?

フラッシュメモリ(SSDS、EMMCS、SDカード、USBスティックなどを含む)は、ダイの前に限られたプログラム/消去サイクルが限られています。しかし、HDDとは異なり、データはフラッシュメモリに上書きすることはできません。最初に消去する必要があります。これは<コード> 99887766665443324 。

今すぐ<コード> 99887766665443325 を行う場合、これはバックグラウンドの貴重な登録版の消費率の頻度が頻繁に発生し、寿命を軽減します。 998877665544327 をまったくしない場合は、不要なGC(すでに削除されたデータの)が発生する可能性があります。 9988776665443328 では、時間がかかり過ぎることができます。データを上書きする前に実行されるため、<コード> 998877666665433329

と比較して非常に高い待ち時間があります。

だから私たちは両方の間のバランスが必要です。

他の要因もあります。 EMMCコントローラが<コード> 9988877665443330 をサポートするかどうか、バックグラウンドGCスケジューリング、WEARレベル化、および書き込み増幅の管理などの効果的です。

SO携帯電話のEMMCのデータシートをお持ちでない限り、あなたが何をしているのか確実なものはよく、<コード> 99887766544331 をOSに残すことです。 PCS '( 14 )

FSTRIMを頻繁に実行するか、<コード> 99887766654333332 を使用しても、質の低いSSDデバイスの寿命に悪影響を及ぼす可能性があります。ほとんどのデスクトップおよびサーバーシステムでは、十分なトリミング周波数が

です。

しかし、これは状況によって異なるかもしれません。

関連:

  • 暗号化された "/ 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
ベストアンサー
 

unforgetTableIdのコメントには、 anandtechの記事 fstrimが実行されることになっている条件を記述する:

Android 4.3がファイルシステムをトリミングすると、以前に完全にはっきりしないように、基礎となる条件についてもう少し学びました。 Androidフレームワークは、MountServiceがListens Listens forを聴取してからVoldを起動し、その後、いくつかの条件が満たされたときにvoldを呼び出すイベントを送信します。デバイスは1時間以上タッチされていません。アイドルメンテナンスはありません。ウィンドウイベントは24時間で送信され、デバイスは80%のバッテリを持つオフチャージャー、または30%のバッテリーを持つ充電器のいずれかです。目標は、毎晩充電するためにデバイスを差し込む習慣であれば、24時間に1回FSTRIMが約1回走ることです。

 

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による回答は、<コード> 998876665544330 を実行する条件を示します。その後のAndroidバージョンで行動が変化した場合は認識していませんが、 99887766544331 を使用するアプリケーションに出会いました。根拠が必要です。この情報をLinux Savvyでない人にとって有用な場合があります(私のように:)

SSD Boost

Android 4.3以降はネイティブでトリミングをサポートしているため、ファイルを削除した後のオペレーティングシステムがNANDコントローラにTRIMコマンドを送信することを意味します。使用するファイルをブロックするファイルは、次回消去せずに迅速に書き込めるときにコントローラが消去できるようにします。 。

しかし、ユーザーはこのプロセスを制御することはできず、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

 
 
 
 

関連する質問

2  CM 12.1 Nexus 5がブートループとリカバリのロードアップに立ち往生  ( Cm 12 1 nexus 5 stuck on bootloop and recovery load up ) 
私は私のNexus 5にかなり特有の問題を抱えています。 昨夜、私は携帯電話を担当しました。正常に機能していて、ソフトウェアは機能していました。 TWRPの回復を入力するにはFastBootをロードしようとしましたが、Load画面で電話が凍られます。カスタムブ...

2  手術システムとTWRPはありません  ( No operative system and twrp ) 
最近私の携帯電話にカスタムROMをインストールしました、それから私があなたの携帯電話のメモリを私の携帯電話のメモリを展開することにしました私はあなたがTWRPに入らなければなりませんでした、残念ながら私は削除システムをクリックしました。その後、私の携帯電話を起...

0  CyanogenMODの回復(文脈なし)  ( Recovering cyanogenmod no context found ) 
私の電話を使っていて、バッテリーは低く、突然停止しました。私はそれがバッテリーのためだと思い、私の充電器に差し込まれました。今私は私の携帯電話を起動しようとしていますが、CyanogenMod Boot Screenでスタッフしています。 > こちらは止ま...

5  ROMバックアップを復元します  ( Restore a rom back up ) 
私は今夜私の携帯電話にシアノーゲン銃を試すつもりです。しかし、私がそうする前に、私は一つのことについて興味があります。私はこのサイトで受け取った1命令(Bryanに感謝します)、そして私のすべてのアプリケーションとデータのチタニウムのバックアップを行ったNAN...

1  ZTEブレードはWiFi接続を維持することはできません  ( Zte blade cant maintain a wifi connection ) 
Android 2.3.7(シアンゲンモード7.1)を備えたZTEブレードを持っています。最近、私がWiFiネットワークに接続しようとすると(この問題が始まった1つであったものでも)接続を開始し、オートネーションの試み、切断します。 ここでlogcat の一...

1  S2Eを使用している間、アプリを内部メモリに残すことは可能ですか?  ( Is it possible to leave some apps in the internal memory while using s2e ) 
ええと、可能ですか?私は公式のCyanogenMod ROMとギャラクシーエースを持っています。私はクラス4マイクロSDカードを持っていて、SDスピードアップアプリを使用しています。 SD-Extパーティションに他のアプリを保持しながら、アプリケーション(h...

7  cyanogenmod - 「通知モード」とは何ですか?  ( Cyanogenmod what is notification mode ) 
通知に関してCyanogenModのプロファイルオプションを誤解していると思います。 私がしようとしていることです。仕事で、電話&アンプ。メッセージは鳴ってはいけません。 私はこのように私のプロフィールを設定しました: グループ「Phone&Amp; Mess...

4  CyanogenModを更新することの問題 - 電話は起動を終了しません  ( Problem with updating cyanogenmod phone will no finish booting up ) 
tl; ROMマネージャ付きのCyanogenModを更新し、再起動時にこの画面に固定されています。 私はCyanogen 7でEVOを持っています.1。ROMマネージャアプリは私に更新を通知しました。私はすべてを通してクリックして更新を続け、すべて...

0  cyanogenmodで起動せずにクラッシュ通知/アンインストールアプリケーションを無視する方法  ( How to ignore crash notifications uninstall apps without booting on cyanogenmo ) 
今日は、私のNexus 4上の最新のビルド(05/10/2015)にCyanogenModをアップグレードし、最新のgappsパッケージをインストールしました。しかし、私のデバイスを起動するとすぐに、私の電話はGmail、YouTube、およびGappsプロセ...

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更新 Android 4.2.2のための私のサムスンギャラクシーの魅力的な魅力的な魅力的な 10.1-20130723-20130723- -fascinatemtd ClockWorkMod v4.0...

3  Facebook、Gmailなどとの連絡方法は?  ( How to link contact with facebook gmail etc ) 
私はCM7とAMPにいます。 HTCの欲求。古いHTC SenceはFacebook、Gmailなどとの連絡先をリンクしていました。現在の連絡先マネージャには、Facebookに使用できるかどうかわからない「参加」機能があります。 高度な連絡先マネージャはあり...

2  イコライザーロックスクリーンUIを無効にする(CyanogenMod 12 - ロリポップ)  ( Disable equalizer lockscreen ui on cyanogenmod 12 lollipop ) 
それで、ロックスクリーン上のイコライザー(またはオーディオ)UIコンポーネントは、私のデバイスがスクリーンの中央の途中から触れるように完全に反応しないようになります。これは、ロリポップ(CyanogenMod 12)OTAアップデートを手に入れたときに開始され...

3  なぜ私の携帯電話はGoogle +ハングアウトをサポートしていないのですか?  ( Why doesnt my phone support google hangouts ) 
私は、Android 2.3.7 cm7.1を実行しているCommtiva Z71バリアントであるMotorola XT502電話機を持っています。 私は私の携帯電話でのハングアウト機能を制限しているのか疑問に思いました。 アームV6 CPU、欠けている前面に...

3  / DATA / SDEXT2マウントが見つかりませんLink2SD  ( Data sdext2 mount not found link2sd ) 
CM 7.2安定(Android 2.3)をインストールしましたこちら。それからこの Link2SDのSDカードを準備するためのガイド。それから、私は私の電話にLink2SDをインストールし、ext2パーティションのマウントスクリプトを作成しました。それは細...

2  ROMビルドを安全にテストします  ( Safely test rom build ) 
私はAndroid ROM開発に参加しようとしています。ただし、これが私の最初の出来事にカスタムROM開発への最初の出発事項のために、私はかなり深刻な問題があります。 私はどのように私のROMを安全にテストするのですか? TWRPを使用して自分の装置(One...