5

There's almost no Android user (and certainly no regular visitor of our site) who hasn't heard of the "insufficient storage" error – or even experienced it him/herself. That there must be at least 10% of storage free on /data sounds ridiculous at least when the total space on that partition goes at or beyond 8 GB. Thus we quite frequently have questions on this topic here.

On one of the latest I've done some investigation of the relevant code, and discussed that in my answer. Let me quote the relevant code-block (taken from the latest code) here again:

 * This class implements a service to monitor the amount of disk
 * storage space on the device.  If the free storage on device is less
 * than a tunable threshold value (a secure settings parameter;
 * default 10%) a low memory notification is displayed to alert the
 * user. If the user clicks on the low memory notification the
 * Application Manager application gets launched to let the user free
 * storage space.

Now please focus on lines 2+3:

If the free storage on device is less than a tunable threshold value (a secure settings parameter; default 10%)

(emphasis mine). So here comes my question:


TL;DR: If that threshold is tunable, how to tune it?


Is it something in settings we overlooked all those years? Is this supposed to be "tuned" by the "ROM bakers" only? Or, taking the hint of a "secure settings parameter", is there some app utilizing the WRITE_SECURE_SETTINGS permission to take care of that? By which means are we supposed to address this (if at all)?

  • According to developer.android.com/reference/android/provider/…: "Secure system settings, containing system preferences that applications can read but are not allowed to write. These are for preferences that the user must explicitly modify through the system UI or specialized APIs for those values, not modified directly by applications." – Rodrigo Jul 8 '16 at 16:55
  • So looks like it should be "something in settings we overlooked all those years", right? – Rodrigo Jul 8 '16 at 16:56
  • Seems like – or they forgot to implement that for user-control. The WRITE_SECURE_SETTINGS has protection level "development" – so not sure whether that would be granted to a "normal app" – but "system or signature" (i.e. the ROM baker) still could use it. – Izzy Jul 8 '16 at 17:59
  • I'm always wondered by so many "forgettings" that contribute to planned obsolescence. – Rodrigo Jul 9 '16 at 4:56
  • It's the min value of the two: sys_storage_threshold_percentage (default is 5% or may be 10% on older Android releases) and sys_storage_threshold_max_bytes (default is 500 MiB or may be something else on older releases). Both are global namespace settings. Former (%age) is multiplied with the total storage size to get threshold value in bytes. Then the minimum of both values is taken as final value. – Irfan Latif May 21 at 14:27
2

Low storage threshold is the minimum value of the two:

  • sys_storage_threshold_percentage (default is 5%, was 10% on Android 7 and older). It's multiplied with the total storage size to get threshold value in bytes. This setting is there since the early days of Android.
  • sys_storage_threshold_max_bytes (default is 500 MiB). This setting was added in Android 4.

In JellyBean both settings were moved from secure namespace to global. And the logic to calculate low threshold was moved from DeviceStorageMonitorService to StorageManager.

If the 5% of total space on /data is greater than 500 MiB, the threshold is always 500 MiB. In order to set the threshold to even smaller value, e.g. to 100 MB:

~$ settings put global sys_storage_threshold_max_bytes 100000000
| improve this answer | |
-1

You need to build your own kernel with preferrable settings, this option not writable by "normal_apps".

| improve this answer | |
  • 3
    not writable by "normal_apps" does not necessarily imply building an own kernel. Can you back that with a reliable source? A system app could have access to that. The requirement of building a specific kernel somehow contradicts the statement "tunable threshold value". – Izzy Oct 18 '16 at 17:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.