On 05/20/2013 12:06 AM, Glauber Costa wrote: > Initial notes: > ============== > > Please pay attention to new patches that are debuting in this series. Patch1 > changes our unused countries for int to long, since Dave noticed that it wasn't > being enough in some cases. Aside from that, the major change is that we now > compute and keep deferred work per-node (Patch13). The biggest effect of this, > is that to avoid storing a new nodemask in the stack, I am passing only the > node id down to the API. This means that the lru API *does not* take a nodemask > any longer, which in turn, makes it simpler. > > I deeply considered this matter, and decided this would be the best way to go. > It is not different from what I have already done for memcgs: Only a single one > is passed down, and the complexity of scanning them is moved upwards to the > caller, where all the scanning logic should belong anyway. > > If you want, you can also grab from branch "kmemcg-lru-shrinker" at: > > git://git.kernel.org/pub/scm/linux/kernel/git/glommer/memcg.git > > I hope the performance problems are all gone. My testing now shows a smoother > and steady state for the objects during the lifetime of the workload, and > postmark numbers are closer to base, although we do deviate a bit. > Mel, Dave, et. al. I have applied some more fixes for things I have found here and there as a result of a new round of testing. I won't post the result here until Thursday or Friday, to avoid patchbombing you guys. In the meantime I will be merging comments I receive from this version. My git tree is up to date, so if you want to test it further, please pick that up. I am attaching the result of my postmark run. I think the results look really good now.
postmark bas memcg base final Ops/sec Transactions 13.00 ( 0.00%) 12.00 ( -7.69%) Ops/sec FilesCreate 25.00 ( 0.00%) 26.00 ( 4.00%) Ops/sec CreateTransact 6.00 ( 0.00%) 6.00 ( 0.00%) Ops/sec FilesDeleted 3935.00 ( 0.00%) 3373.00 (-14.28%) Ops/sec DeleteTransact 6.00 ( 0.00%) 6.00 ( 0.00%) Ops/sec DataRead/MB 6.58 ( 0.00%) 6.63 ( 0.76%) Ops/sec DataWrite/MB 48.63 ( 0.00%) 48.99 ( 0.74%) bas memcg base final User 44.33 43.58 System 447.86 488.46 Elapsed 3000.82 2977.86 bas memcg base final Page Ins 10810400 10843604 Page Outs 151486632 150640884 Swap Ins 0 0 Swap Outs 0 0 Direct pages scanned 0 0 Kswapd pages scanned 23410722 23458232 Kswapd pages reclaimed 23399868 23447276 Direct pages reclaimed 0 0 Kswapd efficiency 99% 99% Kswapd velocity 7801.442 7877.547 Direct efficiency 100% 100% Direct velocity 0.000 0.000 Percentage direct scans 0% 0% Page writes by reclaim 0 0 Page writes file 0 0 Page writes anon 0 0 Page reclaim immediate 0 0 Page rescued immediate 0 0 Slabs scanned 194304 234368 Direct inode steals 0 0 Kswapd inode steals 27412 2600 Kswapd skipped wait 0 0 THP fault alloc 6 6 THP collapse alloc 43 39 THP splits 1 1 THP fault fallback 0 0 THP collapse fail 0 0 Compaction stalls 0 0 Compaction success 0 0 Compaction failures 0 0 Page migrate success 0 0 Page migrate failure 0 0 Compaction pages isolated 0 0 Compaction migrate scanned 0 0 Compaction free scanned 0 0 Compaction cost 0 0 NUMA PTE updates 0 0 NUMA hint faults 0 0 NUMA hint local faults 0 0 NUMA pages migrated 0 0 AutoNUMA cost 0 0