20.06.2022 18:37, Rob Clark пишет: >> +static unsigned long >> +drm_gem_shmem_shrinker_scan_objects(struct shrinker *shrinker, >> + struct shrink_control *sc) >> +{ >> + unsigned long nr_to_scan = sc->nr_to_scan; >> + bool lock_contention = false; >> + unsigned long freed; >> + >> + /* purge as many objects as we can */ >> + freed = drm_gem_shmem_shrinker_run_objects_scan(shrinker, nr_to_scan, >> + &lock_contention, false); >> + >> + /* evict as many objects as we can */ >> + if (freed < nr_to_scan) > oh, one other small note, both in scan_objects() and count_objects(), > you should check that get_nr_swap_pages()>0 before counting > evictable/willneed objects. (And you probably want to keep separate > LRUs for dontneed vs willneed to accomplish that.) At least for CrOS, > inside the VM there is no swap enabled (but instead we rely on zram > swap in the host.. plus vm-balloon to balance memory pressure between > host and guest) Noted, thank you!