Skip to content
  • Naoya Horiguchi's avatar
    tools/vm/page-types.c: avoid memset() in walk_pfn() when count == 1 · d9b2ddf8
    Naoya Horiguchi authored
    
    
    I found that page-types is very slow and my testing shows many timeout
    errors.  Here's an example with a simple program allocating 1000 thps.
    
      $ time ./page-types -p $(pgrep -f test_alloc)
      ...
      real    0m17.201s
      user    0m16.889s
      sys     0m0.312s
    
    Most of time is spent in memset().  Currently memset() clears over whole
    buffer for every walk_pfn() call, which is inefficient when walk_pfn()
    is called from walk_vma(), because in that case walk_pfn() is called for
    each pfn.  So this patch limits the zero initialization only for the
    first element.
    
      $ time ./page-types.patched -p $(pgrep -f test_alloc)
      ...
      real    0m0.182s
      user    0m0.046s
      sys     0m0.135s
    
    Fixes: 954e95584579 ("tools/vm/page-types.c: add memory cgroup dumping and filtering")
    Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Suggested-by: default avatarKonstantin Khlebnikov <koct9i@gmail.com>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: Andrew Mort...
    d9b2ddf8