On Thu 20-02-20 20:22:32, Sultan Alsawaf wrote: > On Thu, Feb 20, 2020 at 10:19:45AM +0000, Mel Gorman wrote: > > I'm not entirely convinced. The reason the high watermark exists is to have > > kswapd work long enough to make progress without a process having to direct > > reclaim. The most straight-forward example would be a streaming reader of > > a large file. It'll keep pushing the zone towards the low watermark and > > kswapd has to keep ahead of the reader. If we cut kswapd off too quickly, > > the min watermark is hit and stalls occur. While kswapd could stop at the > > min watermark, it leaves a very short window for kswapd to make enough > > progress before the min watermark is hit. > > > > At minimum, any change in this area would need to include the /proc/vmstats > > on allocstat and pg*direct* to ensure that direct reclaim stalls are > > not worse. > > > > I'm not a fan of the patch in question because kswapd can be woken between > > the low and min watermark without stalling but we really do expect kswapd > > to make progress and continue to make progress to avoid future stalls. The > > changelog had no information on the before/after impact of the patch and > > this is an area where intuition can disagree with real behaviour. > > > > -- > > Mel Gorman > > SUSE Labs > > Okay, then let's test real behavior. > > I fired up my i5-8265U laptop with vanilla linux-next and passed mem=2G on the > command line. After boot up, I opened up chromium and played a video on YouTube. > Immediately after the video started, my laptop completely froze for a few > seconds; then, a few seconds later, my cursor began to respond again, but moving > it around was very laggy. The audio from the video playing was choppy during > this time. About 15-20 seconds after I had started the YouTube video, my system > finally stopped lagging. Could you provide regular (e.g. each second) snapshots of /proc/vmstat, ideally started before and finished after the observed behavior? Something like while true do cp /proc/vmstat vmstat.$(date +%s) done If you can perf record and see where the kernel spends time during that time period then it would be really helpful as well. > Then I tried again with my patch applied (albeit a correct version that doesn't > use the refcount API). Upon starting the same YouTube video in chromium, my > laptop didn't freeze or stutter at all. The cursor was responsive and there was > no stuttering, or choppy audio. > > I tested this multiple times with reproducible results each time. Your patch might be simply papering over a real problem. > I will attach a functional v2 of the patch that I used. > > Sultan -- Michal Hocko SUSE Labs