The temporal goal tuner converts the size quota into basis points in an unsigned long, so a quotas/bytes above ULONG_MAX / 10000 does not fit, and is handled as if no size quota were set. On 32-bit that is 429496 bytes, well below the "echo $((1024*1024*1024)) > quotas/bytes" this document instructs. addr_unit does not raise the limit, though a larger unit does make it harder to reach. Note both in the goal_tuner description. Signed-off-by: Donggeun Yoo --- Documentation/admin-guide/mm/damon/usage.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/admin-guide/mm/damon/usage.rst index ba47255448564..ea7443b307826 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -455,6 +455,13 @@ the background design of the feature and the name of the selectable algorithms. Refer to :ref:`goals directory ` for the goals setup. +The ``temporal`` algorithm converts the size quota into basis points, so it +cannot represent a ``bytes`` value larger than 429496 on 32-bit kernels, or +1844674407370955 on 64-bit ones. Larger values are handled as if no size +quota were set. :ref:`addr_unit ` does not raise the +limit, but it does make the limit harder to reach: with a larger unit, the +same amount of memory is written to ``bytes`` as a smaller number. + You can set the action-failed memory quota charging ratio by writing the numerator and the denominator for the ratio to ``fail_charge_num`` and ``fail_charge_denom`` files, respectively. Reading those files will return the -- 2.53.0