Re: [PATCH v17 11/15] tools/damon/wss: Implement '--thres' option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 6 Jul 2020 13:53:18 +0200 SeongJae Park <sjpark@xxxxxxxxxx> wrote:

> From: SeongJae Park <sjpark@xxxxxxxxx>
> 
> Currently, 'wss' treats every region as working set if accessed at least
> once.  Someone who want to know performance important working set only
> would want to ignore regions having low access frequency.  '--thres'
> option can be used to set the minimal access frequency of the regions to
> be classified as the workingset.
> 
> Using this, users can plot the reuse histogram.  For example:
> 
>     $ damo record $(pidof raytrace)
>     $ for t in {1..20}; do ./tools/damon/damo report wss --thres $t | \
>     		grep avr | awk -v reuse_time=$(( (21 - t) * 5 )) \
>     		'{print reuse_time " " $3}'; done
>     100 12838416
>     95 2222623
>     90 1585480
>     85 422890
>     80 67040
>     75 45218
>     70 13242
>     65 12896
>     60 12136
>     55 10872
>     50 9648
>     45 8136
>     40 7052
>     35 6304
>     30 5736
>     25 5404
>     20 5305
>     15 5187
>     10 5069
>     5 4873
> 
> Above command shows the reuse histogram of parsec3.raytrace.  Remind
> that the sampling interval and aggregation interval are 5ms and 100ms
> by default and this command used the default values.  So, the above
> output means that about 12MB of memory region was reused within 100 ms
> while only about 2MB of memory region was reused within 95 ms, then
> about 1.5MB within 90ms, and so on, in average.
> 
> Signed-off-by: SeongJae Park <sjpark@xxxxxxxxx>
> ---
>  tools/damon/wss.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/damon/wss.py b/tools/damon/wss.py
> index b43065176cfd..d2a1b149e3ea 100644
> --- a/tools/damon/wss.py
> +++ b/tools/damon/wss.py
> @@ -17,6 +17,8 @@ def set_argparser(parser):
>      parser.add_argument('--range', '-r', type=int, nargs=3,
>              metavar=('<start>', '<stop>', '<step>'),
>              help='range of wss percentiles to print')
> +    parser.add_argument('--thres', '-t', type=int, metavar='<# accesses>',
> +            help='minimal number of accesses for treated as working set')
>      parser.add_argument('--sortby', '-s', choices=['time', 'size'],
>              help='the metric to be used for the sort of the working set sizes')
>      parser.add_argument('--plot', '-p', type=str, metavar='<file>',
> @@ -67,7 +69,7 @@ def main(args=None):
>              wss = 0
>              for p in snapshot:
>                  # Ignore regions not accessed
> -                if p[1] <= 0:
> +                if p[1] < args.thres:

Oops, I forgot giving default value for the option.  I will set it as 1 in the
next spin.


Thanks,
SeongJae Park

>                      continue
>                  wss += p[0]
>              wss_dist.append(wss)
> -- 
> 2.17.1
> 
> 
> 



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux