mm: Try invalidate disk caches last when out of memory

Every heap grow will cause all disk caches invalidated which decreases
performance severely. This patch moves disk cache invalidation code to
the last of memory squeezing measures. So, disk caches are released only
when there are no other ways to get free memory.

Signed-off-by: Zhang Boyang <zhangboyang.id@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Reviewed-by: Patrick Steinhardt <ps@pks.im>
This commit is contained in:
Zhang Boyang 2022-10-15 22:15:11 +08:00 committed by Daniel Kiper
parent 5b58914d8c
commit 17975d10a8

View File

@ -443,12 +443,6 @@ grub_memalign (grub_size_t align, grub_size_t size)
switch (count)
{
case 0:
/* Invalidate disk caches. */
grub_disk_cache_invalidate_all ();
count++;
goto again;
case 1:
/* Request additional pages, contiguous */
count++;
@ -458,7 +452,7 @@ grub_memalign (grub_size_t align, grub_size_t size)
/* fallthrough */
case 2:
case 1:
/* Request additional pages, anything at all */
count++;
@ -474,6 +468,12 @@ grub_memalign (grub_size_t align, grub_size_t size)
/* fallthrough */
case 2:
/* Invalidate disk caches. */
grub_disk_cache_invalidate_all ();
count++;
goto again;
default:
break;
}