LCOV - code coverage report
Current view: top level - include/trace/events - vmscan.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 10 13 76.9 %
Date: 2014-02-18 Functions: 0 40 0.0 %
Branches: 10 266 3.8 %

           Branch data     Line data    Source code
       1                 :            : #undef TRACE_SYSTEM
       2                 :            : #define TRACE_SYSTEM vmscan
       3                 :            : 
       4                 :            : #if !defined(_TRACE_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
       5                 :            : #define _TRACE_VMSCAN_H
       6                 :            : 
       7                 :            : #include <linux/types.h>
       8                 :            : #include <linux/tracepoint.h>
       9                 :            : #include <linux/mm.h>
      10                 :            : #include <linux/memcontrol.h>
      11                 :            : #include <trace/events/gfpflags.h>
      12                 :            : 
      13                 :            : #define RECLAIM_WB_ANON         0x0001u
      14                 :            : #define RECLAIM_WB_FILE         0x0002u
      15                 :            : #define RECLAIM_WB_MIXED        0x0010u
      16                 :            : #define RECLAIM_WB_SYNC         0x0004u /* Unused, all reclaim async */
      17                 :            : #define RECLAIM_WB_ASYNC        0x0008u
      18                 :            : 
      19                 :            : #define show_reclaim_flags(flags)                               \
      20                 :            :         (flags) ? __print_flags(flags, "|",                   \
      21                 :            :                 {RECLAIM_WB_ANON,       "RECLAIM_WB_ANON"},   \
      22                 :            :                 {RECLAIM_WB_FILE,       "RECLAIM_WB_FILE"},   \
      23                 :            :                 {RECLAIM_WB_MIXED,      "RECLAIM_WB_MIXED"},  \
      24                 :            :                 {RECLAIM_WB_SYNC,       "RECLAIM_WB_SYNC"},   \
      25                 :            :                 {RECLAIM_WB_ASYNC,      "RECLAIM_WB_ASYNC"}   \
      26                 :            :                 ) : "RECLAIM_WB_NONE"
      27                 :            : 
      28                 :            : #define trace_reclaim_flags(page) ( \
      29                 :            :         (page_is_file_cache(page) ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
      30                 :            :         (RECLAIM_WB_ASYNC) \
      31                 :            :         )
      32                 :            : 
      33                 :            : #define trace_shrink_flags(file) \
      34                 :            :         ( \
      35                 :            :                 (file ? RECLAIM_WB_FILE : RECLAIM_WB_ANON) | \
      36                 :            :                 (RECLAIM_WB_ASYNC) \
      37                 :            :         )
      38                 :            : 
      39   [ -  +  #  # ]:         25 : TRACE_EVENT(mm_vmscan_kswapd_sleep,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
      40                 :            : 
      41                 :            :         TP_PROTO(int nid),
      42                 :            : 
      43                 :            :         TP_ARGS(nid),
      44                 :            : 
      45                 :            :         TP_STRUCT__entry(
      46                 :            :                 __field(        int,    nid     )
      47                 :            :         ),
      48                 :            : 
      49                 :            :         TP_fast_assign(
      50                 :            :                 __entry->nid = nid;
      51                 :            :         ),
      52                 :            : 
      53                 :            :         TP_printk("nid=%d", __entry->nid)
      54                 :            : );
      55                 :            : 
      56   [ -  +  #  # ]:      13209 : TRACE_EVENT(mm_vmscan_kswapd_wake,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      57                 :            : 
      58                 :            :         TP_PROTO(int nid, int order),
      59                 :            : 
      60                 :            :         TP_ARGS(nid, order),
      61                 :            : 
      62                 :            :         TP_STRUCT__entry(
      63                 :            :                 __field(        int,    nid     )
      64                 :            :                 __field(        int,    order   )
      65                 :            :         ),
      66                 :            : 
      67                 :            :         TP_fast_assign(
      68                 :            :                 __entry->nid = nid;
      69                 :            :                 __entry->order       = order;
      70                 :            :         ),
      71                 :            : 
      72                 :            :         TP_printk("nid=%d order=%d", __entry->nid, __entry->order)
      73                 :            : );
      74                 :            : 
      75   [ -  +  #  # ]:        241 : TRACE_EVENT(mm_vmscan_wakeup_kswapd,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
      76                 :            : 
      77                 :            :         TP_PROTO(int nid, int zid, int order),
      78                 :            : 
      79                 :            :         TP_ARGS(nid, zid, order),
      80                 :            : 
      81                 :            :         TP_STRUCT__entry(
      82                 :            :                 __field(        int,            nid     )
      83                 :            :                 __field(        int,            zid     )
      84                 :            :                 __field(        int,            order   )
      85                 :            :         ),
      86                 :            : 
      87                 :            :         TP_fast_assign(
      88                 :            :                 __entry->nid         = nid;
      89                 :            :                 __entry->zid         = zid;
      90                 :            :                 __entry->order               = order;
      91                 :            :         ),
      92                 :            : 
      93                 :            :         TP_printk("nid=%d zid=%d order=%d",
      94                 :            :                 __entry->nid,
      95                 :            :                 __entry->zid,
      96                 :            :                 __entry->order)
      97                 :            : );
      98                 :            : 
      99   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     100                 :            : 
     101                 :            :         TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
     102                 :            : 
     103                 :            :         TP_ARGS(order, may_writepage, gfp_flags),
     104                 :            : 
     105                 :            :         TP_STRUCT__entry(
     106                 :            :                 __field(        int,    order           )
     107                 :            :                 __field(        int,    may_writepage   )
     108                 :            :                 __field(        gfp_t,  gfp_flags       )
     109                 :            :         ),
     110                 :            : 
     111                 :            :         TP_fast_assign(
     112                 :            :                 __entry->order               = order;
     113                 :            :                 __entry->may_writepage       = may_writepage;
     114                 :            :                 __entry->gfp_flags   = gfp_flags;
     115                 :            :         ),
     116                 :            : 
     117                 :            :         TP_printk("order=%d may_writepage=%d gfp_flags=%s",
     118                 :            :                 __entry->order,
     119                 :            :                 __entry->may_writepage,
     120                 :            :                 show_gfp_flags(__entry->gfp_flags))
     121                 :            : );
     122                 :            : 
     123   [ -  +  #  # ]:      37053 : DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin,
                 [ #  # ]
     124                 :            : 
     125                 :            :         TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
     126                 :            : 
     127                 :            :         TP_ARGS(order, may_writepage, gfp_flags)
     128                 :            : );
     129                 :            : 
     130                 :            : DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin,
     131                 :            : 
     132                 :            :         TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
     133                 :            : 
     134                 :            :         TP_ARGS(order, may_writepage, gfp_flags)
     135                 :            : );
     136                 :            : 
     137                 :            : DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin,
     138                 :            : 
     139                 :            :         TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
     140                 :            : 
     141                 :            :         TP_ARGS(order, may_writepage, gfp_flags)
     142                 :            : );
     143                 :            : 
     144   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     145                 :            : 
     146                 :            :         TP_PROTO(unsigned long nr_reclaimed),
     147                 :            : 
     148                 :            :         TP_ARGS(nr_reclaimed),
     149                 :            : 
     150                 :            :         TP_STRUCT__entry(
     151                 :            :                 __field(        unsigned long,  nr_reclaimed    )
     152                 :            :         ),
     153                 :            : 
     154                 :            :         TP_fast_assign(
     155                 :            :                 __entry->nr_reclaimed        = nr_reclaimed;
     156                 :            :         ),
     157                 :            : 
     158                 :            :         TP_printk("nr_reclaimed=%lu", __entry->nr_reclaimed)
     159                 :            : );
     160                 :            : 
     161   [ -  +  #  # ]:      37053 : DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end,
                 [ #  # ]
     162                 :            : 
     163                 :            :         TP_PROTO(unsigned long nr_reclaimed),
     164                 :            : 
     165                 :            :         TP_ARGS(nr_reclaimed)
     166                 :            : );
     167                 :            : 
     168                 :            : DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end,
     169                 :            : 
     170                 :            :         TP_PROTO(unsigned long nr_reclaimed),
     171                 :            : 
     172                 :            :         TP_ARGS(nr_reclaimed)
     173                 :            : );
     174                 :            : 
     175                 :            : DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end,
     176                 :            : 
     177                 :            :         TP_PROTO(unsigned long nr_reclaimed),
     178                 :            : 
     179                 :            :         TP_ARGS(nr_reclaimed)
     180                 :            : );
     181                 :            : 
     182   [ -  +  #  # ]:    2884120 : TRACE_EVENT(mm_shrink_slab_start,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     183                 :            :         TP_PROTO(struct shrinker *shr, struct shrink_control *sc,
     184                 :            :                 long nr_objects_to_shrink, unsigned long pgs_scanned,
     185                 :            :                 unsigned long lru_pgs, unsigned long cache_items,
     186                 :            :                 unsigned long long delta, unsigned long total_scan),
     187                 :            : 
     188                 :            :         TP_ARGS(shr, sc, nr_objects_to_shrink, pgs_scanned, lru_pgs,
     189                 :            :                 cache_items, delta, total_scan),
     190                 :            : 
     191                 :            :         TP_STRUCT__entry(
     192                 :            :                 __field(struct shrinker *, shr)
     193                 :            :                 __field(void *, shrink)
     194                 :            :                 __field(long, nr_objects_to_shrink)
     195                 :            :                 __field(gfp_t, gfp_flags)
     196                 :            :                 __field(unsigned long, pgs_scanned)
     197                 :            :                 __field(unsigned long, lru_pgs)
     198                 :            :                 __field(unsigned long, cache_items)
     199                 :            :                 __field(unsigned long long, delta)
     200                 :            :                 __field(unsigned long, total_scan)
     201                 :            :         ),
     202                 :            : 
     203                 :            :         TP_fast_assign(
     204                 :            :                 __entry->shr = shr;
     205                 :            :                 __entry->shrink = shr->scan_objects;
     206                 :            :                 __entry->nr_objects_to_shrink = nr_objects_to_shrink;
     207                 :            :                 __entry->gfp_flags = sc->gfp_mask;
     208                 :            :                 __entry->pgs_scanned = pgs_scanned;
     209                 :            :                 __entry->lru_pgs = lru_pgs;
     210                 :            :                 __entry->cache_items = cache_items;
     211                 :            :                 __entry->delta = delta;
     212                 :            :                 __entry->total_scan = total_scan;
     213                 :            :         ),
     214                 :            : 
     215                 :            :         TP_printk("%pF %p: objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld",
     216                 :            :                 __entry->shrink,
     217                 :            :                 __entry->shr,
     218                 :            :                 __entry->nr_objects_to_shrink,
     219                 :            :                 show_gfp_flags(__entry->gfp_flags),
     220                 :            :                 __entry->pgs_scanned,
     221                 :            :                 __entry->lru_pgs,
     222                 :            :                 __entry->cache_items,
     223                 :            :                 __entry->delta,
     224                 :            :                 __entry->total_scan)
     225                 :            : );
     226                 :            : 
     227   [ -  +  #  # ]:    2884442 : TRACE_EVENT(mm_shrink_slab_end,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     228                 :            :         TP_PROTO(struct shrinker *shr, int shrinker_retval,
     229                 :            :                 long unused_scan_cnt, long new_scan_cnt),
     230                 :            : 
     231                 :            :         TP_ARGS(shr, shrinker_retval, unused_scan_cnt, new_scan_cnt),
     232                 :            : 
     233                 :            :         TP_STRUCT__entry(
     234                 :            :                 __field(struct shrinker *, shr)
     235                 :            :                 __field(void *, shrink)
     236                 :            :                 __field(long, unused_scan)
     237                 :            :                 __field(long, new_scan)
     238                 :            :                 __field(int, retval)
     239                 :            :                 __field(long, total_scan)
     240                 :            :         ),
     241                 :            : 
     242                 :            :         TP_fast_assign(
     243                 :            :                 __entry->shr = shr;
     244                 :            :                 __entry->shrink = shr->scan_objects;
     245                 :            :                 __entry->unused_scan = unused_scan_cnt;
     246                 :            :                 __entry->new_scan = new_scan_cnt;
     247                 :            :                 __entry->retval = shrinker_retval;
     248                 :            :                 __entry->total_scan = new_scan_cnt - unused_scan_cnt;
     249                 :            :         ),
     250                 :            : 
     251                 :            :         TP_printk("%pF %p: unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
     252                 :            :                 __entry->shrink,
     253                 :            :                 __entry->shr,
     254                 :            :                 __entry->unused_scan,
     255                 :            :                 __entry->new_scan,
     256                 :            :                 __entry->total_scan,
     257                 :            :                 __entry->retval)
     258                 :            : );
     259                 :            : 
     260   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     261                 :            : 
     262                 :            :         TP_PROTO(int order,
     263                 :            :                 unsigned long nr_requested,
     264                 :            :                 unsigned long nr_scanned,
     265                 :            :                 unsigned long nr_taken,
     266                 :            :                 isolate_mode_t isolate_mode,
     267                 :            :                 int file),
     268                 :            : 
     269                 :            :         TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file),
     270                 :            : 
     271                 :            :         TP_STRUCT__entry(
     272                 :            :                 __field(int, order)
     273                 :            :                 __field(unsigned long, nr_requested)
     274                 :            :                 __field(unsigned long, nr_scanned)
     275                 :            :                 __field(unsigned long, nr_taken)
     276                 :            :                 __field(isolate_mode_t, isolate_mode)
     277                 :            :                 __field(int, file)
     278                 :            :         ),
     279                 :            : 
     280                 :            :         TP_fast_assign(
     281                 :            :                 __entry->order = order;
     282                 :            :                 __entry->nr_requested = nr_requested;
     283                 :            :                 __entry->nr_scanned = nr_scanned;
     284                 :            :                 __entry->nr_taken = nr_taken;
     285                 :            :                 __entry->isolate_mode = isolate_mode;
     286                 :            :                 __entry->file = file;
     287                 :            :         ),
     288                 :            : 
     289                 :            :         TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu file=%d",
     290                 :            :                 __entry->isolate_mode,
     291                 :            :                 __entry->order,
     292                 :            :                 __entry->nr_requested,
     293                 :            :                 __entry->nr_scanned,
     294                 :            :                 __entry->nr_taken,
     295                 :            :                 __entry->file)
     296                 :            : );
     297                 :            : 
     298   [ -  +  #  # ]:     210221 : DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_lru_isolate,
                 [ #  # ]
     299                 :            : 
     300                 :            :         TP_PROTO(int order,
     301                 :            :                 unsigned long nr_requested,
     302                 :            :                 unsigned long nr_scanned,
     303                 :            :                 unsigned long nr_taken,
     304                 :            :                 isolate_mode_t isolate_mode,
     305                 :            :                 int file),
     306                 :            : 
     307                 :            :         TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
     308                 :            : 
     309                 :            : );
     310                 :            : 
     311                 :            : DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_isolate,
     312                 :            : 
     313                 :            :         TP_PROTO(int order,
     314                 :            :                 unsigned long nr_requested,
     315                 :            :                 unsigned long nr_scanned,
     316                 :            :                 unsigned long nr_taken,
     317                 :            :                 isolate_mode_t isolate_mode,
     318                 :            :                 int file),
     319                 :            : 
     320                 :            :         TP_ARGS(order, nr_requested, nr_scanned, nr_taken, isolate_mode, file)
     321                 :            : 
     322                 :            : );
     323                 :            : 
     324   [ -  +  #  # ]:         29 : TRACE_EVENT(mm_vmscan_writepage,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     325                 :            : 
     326                 :            :         TP_PROTO(struct page *page,
     327                 :            :                 int reclaim_flags),
     328                 :            : 
     329                 :            :         TP_ARGS(page, reclaim_flags),
     330                 :            : 
     331                 :            :         TP_STRUCT__entry(
     332                 :            :                 __field(struct page *, page)
     333                 :            :                 __field(int, reclaim_flags)
     334                 :            :         ),
     335                 :            : 
     336                 :            :         TP_fast_assign(
     337                 :            :                 __entry->page = page;
     338                 :            :                 __entry->reclaim_flags = reclaim_flags;
     339                 :            :         ),
     340                 :            : 
     341                 :            :         TP_printk("page=%p pfn=%lu flags=%s",
     342                 :            :                 __entry->page,
     343                 :            :                 page_to_pfn(__entry->page),
     344                 :            :                 show_reclaim_flags(__entry->reclaim_flags))
     345                 :            : );
     346                 :            : 
     347   [ -  +  #  # ]:       8242 : TRACE_EVENT(mm_vmscan_lru_shrink_inactive,
                 [ #  # ]
           [ #  #  #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     348                 :            : 
     349                 :            :         TP_PROTO(int nid, int zid,
     350                 :            :                         unsigned long nr_scanned, unsigned long nr_reclaimed,
     351                 :            :                         int priority, int reclaim_flags),
     352                 :            : 
     353                 :            :         TP_ARGS(nid, zid, nr_scanned, nr_reclaimed, priority, reclaim_flags),
     354                 :            : 
     355                 :            :         TP_STRUCT__entry(
     356                 :            :                 __field(int, nid)
     357                 :            :                 __field(int, zid)
     358                 :            :                 __field(unsigned long, nr_scanned)
     359                 :            :                 __field(unsigned long, nr_reclaimed)
     360                 :            :                 __field(int, priority)
     361                 :            :                 __field(int, reclaim_flags)
     362                 :            :         ),
     363                 :            : 
     364                 :            :         TP_fast_assign(
     365                 :            :                 __entry->nid = nid;
     366                 :            :                 __entry->zid = zid;
     367                 :            :                 __entry->nr_scanned = nr_scanned;
     368                 :            :                 __entry->nr_reclaimed = nr_reclaimed;
     369                 :            :                 __entry->priority = priority;
     370                 :            :                 __entry->reclaim_flags = reclaim_flags;
     371                 :            :         ),
     372                 :            : 
     373                 :            :         TP_printk("nid=%d zid=%d nr_scanned=%ld nr_reclaimed=%ld priority=%d flags=%s",
     374                 :            :                 __entry->nid, __entry->zid,
     375                 :            :                 __entry->nr_scanned, __entry->nr_reclaimed,
     376                 :            :                 __entry->priority,
     377                 :            :                 show_reclaim_flags(__entry->reclaim_flags))
     378                 :            : );
     379                 :            : 
     380                 :            : #endif /* _TRACE_VMSCAN_H */
     381                 :            : 
     382                 :            : /* This part must be outside protection */
     383                 :            : #include <trace/define_trace.h>

Generated by: LCOV version 1.9