Huan Yang <link@xxxxxxxx> writes: > 在 2023/11/8 22:06, Michal Hocko 写道: >> [Some people who received this message don't often get email from mhocko@xxxxxxxx. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ] >> >> On Wed 08-11-23 14:58:11, Huan Yang wrote: >>> In some cases, we need to selectively reclaim file pages or anonymous >>> pages in an unbalanced manner. >>> >>> For example, when an application is pushed to the background and frozen, >>> it may not be opened for a long time, and we can safely reclaim the >>> application's anonymous pages, but we do not want to touch the file pages. >> Could you explain why? And also why do you need to swap out in that >> case? > When an application is frozen, it usually means that we predict that > it will not be > used for a long time. In order to proactively save some memory, our > strategy will > choose to compress the application's private data into zram. And we > will also > select some of the cold application data that we think is in zram and > swap it out. > > The above operations assume that anonymous pages are private to the > application. If so, is it better only to reclaim private anonymous pages explicitly? Add another option for that? > After the application is frozen, compressing these pages into zram can > save memory > to some extent without worrying about frequent refaults. > > And the cost of refaults on zram is lower than that of IO. If so, swappiness should be high system-wise? -- Best Regards, Huang, Ying > >> >>> This patchset extends the proactive reclaim interface to achieve >>> unbalanced reclamation. Users can control the reclamation tendency by >>> inputting swappiness under the original interface. Specifically, users >>> can input special values to extremely reclaim specific pages. >> Other have already touched on this in other replies but v2 doesn't have >> a per-memcg swappiness >> >>> Example: >>> echo "1G" 200 > memory.reclaim (only reclaim anon) >>> echo "1G" 0 > memory.reclaim (only reclaim file) >>> echo "1G" 1 > memory.reclaim (only reclaim file) >>> >>> Note that when performing unbalanced reclamation, the cgroup swappiness >>> will be temporarily adjusted dynamically to the input value. Therefore, >>> if the cgroup swappiness is further modified during runtime, there may >>> be some errors. >> In general this is a bad semantic. The operation shouldn't have side >> effect that are potentially visible for another operation. > So, maybe pass swappiness into sc and keep a single reclamation ensure that > swappiness is not changed? > Or, it's a bad idea that use swappiness to control unbalance reclaim. >> -- >> Michal Hocko >> SUSE Labs