> 在 2019年12月25日,22:05,Chris Down <chris@xxxxxxxxxxxxxx> 写道: > > Hi Hui, > > Hui Zhu writes: >> Even if cgroup2 has swap.max, swappiness is still a very useful config. >> This commit add swappiness to cgroup2. > > When submitting patches like this, it's important to explain *why* you want it and what evidence there is. For example, how should one use this to compose a reasonable system? Why aren't existing protection controls sufficient for your use case? Where's the data? > > Also, why would swappiness be something cgroup-specific instead of hardware-specific, when desired swappiness is really largely about the hardware you have in your system? > > I struggle to think of situations where per-cgroup swappiness would be useful, since it's really not a workload-specific setting. Hi Chris, My thought about per-cgroup swappiness is different applications should have different memory footprint. For example, an application does a lot of file access work in a memory-constrained environment. Its performance depend on the file access speed. Keep more file cache will good for it. Then more swappiness will good for it, especially with the high speed swap device(zram/zswap). And in the same environment, an application that access anon memory a lot of times. Use low swapiness will good for its performance. But just let it not to swap is not a good for it because the code is inside file cache. Just drop the file cache will decrease the application speed sometime. Both of them are extreme examples. Other applications maybe access both file and anon. Maybe define a special swapiness is good for it. This is what I thought about add swappiness to cgroup2. Best, Hui > > Thanks, > > Chris > >> Signed-off-by: Hui Zhu <teawaterz@xxxxxxxxxxxxxxxxx> >> --- >> mm/memcontrol.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >> index c5b5f74..e966396 100644 >> --- a/mm/memcontrol.c >> +++ b/mm/memcontrol.c >> @@ -7143,6 +7143,11 @@ static struct cftype swap_files[] = { >> .file_offset = offsetof(struct mem_cgroup, swap_events_file), >> .seq_show = swap_events_show, >> }, >> + { >> + .name = "swappiness", >> + .read_u64 = mem_cgroup_swappiness_read, >> + .write_u64 = mem_cgroup_swappiness_write, >> + }, >> { } /* terminate */ >> }; >> >> -- >> 2.7.4 >>