~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/trace/events/ksm.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #undef TRACE_SYSTEM
  3 #define TRACE_SYSTEM ksm
  4 
  5 #if !defined(_TRACE_KSM_H) || defined(TRACE_HEADER_MULTI_READ)
  6 #define _TRACE_KSM_H
  7 
  8 #include <linux/tracepoint.h>
  9 
 10 /**
 11  * ksm_scan_template - called for start / stop scan
 12  *
 13  * @seq:                sequence number of scan
 14  * @rmap_entries:       actual number of rmap entries
 15  *
 16  * Allows to trace the start / stop of a ksm scan.
 17  */
 18 DECLARE_EVENT_CLASS(ksm_scan_template,
 19 
 20         TP_PROTO(int seq, u32 rmap_entries),
 21 
 22         TP_ARGS(seq, rmap_entries),
 23 
 24         TP_STRUCT__entry(
 25                 __field(int,    seq)
 26                 __field(u32,    rmap_entries)
 27         ),
 28 
 29         TP_fast_assign(
 30                 __entry->seq            = seq;
 31                 __entry->rmap_entries   = rmap_entries;
 32         ),
 33 
 34         TP_printk("seq %d rmap size %d",
 35                         __entry->seq, __entry->rmap_entries)
 36 );
 37 
 38 /**
 39  * ksm_start_scan - called after a new ksm scan is started
 40  *
 41  * @seq:                sequence number of scan
 42  * @rmap_entries:       actual number of rmap entries
 43  *
 44  * Allows to trace the start of a ksm scan.
 45  */
 46 DEFINE_EVENT(ksm_scan_template, ksm_start_scan,
 47 
 48         TP_PROTO(int seq, u32 rmap_entries),
 49 
 50         TP_ARGS(seq, rmap_entries)
 51 );
 52 
 53 /**
 54  * ksm_stop_scan - called after a new ksm scan has completed
 55  *
 56  * @seq:                sequence number of scan
 57  * @rmap_entries:       actual number of rmap entries
 58  *
 59  * Allows to trace the completion of a ksm scan.
 60  */
 61 DEFINE_EVENT(ksm_scan_template, ksm_stop_scan,
 62 
 63         TP_PROTO(int seq, u32 rmap_entries),
 64 
 65         TP_ARGS(seq, rmap_entries)
 66 );
 67 
 68 /**
 69  * ksm_enter - called after a new process has been added / removed from ksm
 70  *
 71  * @mm:                 address of the mm object of the process
 72  *
 73  * Allows to trace the when a process has been added or removed from ksm.
 74  */
 75 DECLARE_EVENT_CLASS(ksm_enter_exit_template,
 76 
 77         TP_PROTO(void *mm),
 78 
 79         TP_ARGS(mm),
 80 
 81         TP_STRUCT__entry(
 82                 __field(void *,         mm)
 83         ),
 84 
 85         TP_fast_assign(
 86                 __entry->mm     = mm;
 87         ),
 88 
 89         TP_printk("mm %p", __entry->mm)
 90 );
 91 
 92 /**
 93  * ksm_enter - called after a new process has been added to ksm
 94  *
 95  * @mm:                 address of the mm object of the process
 96  *
 97  * Allows to trace the when a process has been added to ksm.
 98  */
 99 DEFINE_EVENT(ksm_enter_exit_template, ksm_enter,
100 
101         TP_PROTO(void *mm),
102 
103         TP_ARGS(mm)
104 );
105 
106 /**
107  * ksm_exit - called after a new process has been removed from ksm
108  *
109  * @mm:                 address of the mm object of the process
110  *
111  * Allows to trace the when a process has been removed from ksm.
112  */
113 DEFINE_EVENT(ksm_enter_exit_template, ksm_exit,
114 
115         TP_PROTO(void *mm),
116 
117         TP_ARGS(mm)
118 );
119 
120 /**
121  * ksm_merge_one_page - called after a page has been merged
122  *
123  * @pfn:                page frame number of ksm page
124  * @rmap_item:          address of rmap_item  object
125  * @mm:                 address of the process mm struct
126  * @err:                success
127  *
128  * Allows to trace the ksm merging of individual pages.
129  */
130 TRACE_EVENT(ksm_merge_one_page,
131 
132         TP_PROTO(unsigned long pfn, void *rmap_item, void *mm, int err),
133 
134         TP_ARGS(pfn, rmap_item, mm, err),
135 
136         TP_STRUCT__entry(
137                 __field(unsigned long,  pfn)
138                 __field(void *,         rmap_item)
139                 __field(void *,         mm)
140                 __field(int,            err)
141         ),
142 
143         TP_fast_assign(
144                 __entry->pfn            = pfn;
145                 __entry->rmap_item      = rmap_item;
146                 __entry->mm             = mm;
147                 __entry->err            = err;
148         ),
149 
150         TP_printk("ksm pfn %lu rmap_item %p mm %p error %d",
151                         __entry->pfn, __entry->rmap_item, __entry->mm, __entry->err)
152 );
153 
154 /**
155  * ksm_merge_with_ksm_page - called after a page has been merged with a ksm page
156  *
157  * @ksm_page:           address ksm page
158  * @pfn:                page frame number of ksm page
159  * @rmap_item:          address of rmap_item  object
160  * @mm:                 address of the mm object of the process
161  * @err:                success
162  *
163  * Allows to trace the merging of a page with a ksm page.
164  */
165 TRACE_EVENT(ksm_merge_with_ksm_page,
166 
167         TP_PROTO(void *ksm_page, unsigned long pfn, void *rmap_item, void *mm, int err),
168 
169         TP_ARGS(ksm_page, pfn, rmap_item, mm, err),
170 
171         TP_STRUCT__entry(
172                 __field(void *,         ksm_page)
173                 __field(unsigned long,  pfn)
174                 __field(void *,         rmap_item)
175                 __field(void *,         mm)
176                 __field(int,            err)
177         ),
178 
179         TP_fast_assign(
180                 __entry->ksm_page       = ksm_page;
181                 __entry->pfn            = pfn;
182                 __entry->rmap_item      = rmap_item;
183                 __entry->mm             = mm;
184                 __entry->err            = err;
185         ),
186 
187         TP_printk("%spfn %lu rmap_item %p mm %p error %d",
188                   (__entry->ksm_page ? "ksm " : ""),
189                   __entry->pfn, __entry->rmap_item, __entry->mm, __entry->err)
190 );
191 
192 /**
193  * ksm_remove_ksm_page - called after a ksm page has been removed
194  *
195  * @pfn:                page frame number of ksm page
196  *
197  * Allows to trace the removing of stable ksm pages.
198  */
199 TRACE_EVENT(ksm_remove_ksm_page,
200 
201         TP_PROTO(unsigned long pfn),
202 
203         TP_ARGS(pfn),
204 
205         TP_STRUCT__entry(
206                 __field(unsigned long, pfn)
207         ),
208 
209         TP_fast_assign(
210                 __entry->pfn = pfn;
211         ),
212 
213         TP_printk("pfn %lu", __entry->pfn)
214 );
215 
216 /**
217  * ksm_remove_rmap_item - called after a rmap_item has been removed from the
218  *                        stable tree
219  *
220  * @pfn:                page frame number of ksm page
221  * @rmap_item:          address of rmap_item  object
222  * @mm:                 address of the process mm struct
223  *
224  * Allows to trace the removal of pages from the stable tree list.
225  */
226 TRACE_EVENT(ksm_remove_rmap_item,
227 
228         TP_PROTO(unsigned long pfn, void *rmap_item, void *mm),
229 
230         TP_ARGS(pfn, rmap_item, mm),
231 
232         TP_STRUCT__entry(
233                 __field(unsigned long,  pfn)
234                 __field(void *,         rmap_item)
235                 __field(void *,         mm)
236         ),
237 
238         TP_fast_assign(
239                 __entry->pfn            = pfn;
240                 __entry->rmap_item      = rmap_item;
241                 __entry->mm             = mm;
242         ),
243 
244         TP_printk("pfn %lu rmap_item %p mm %p",
245                         __entry->pfn, __entry->rmap_item, __entry->mm)
246 );
247 
248 /**
249  * ksm_advisor - called after the advisor has run
250  *
251  * @scan_time:          scan time in seconds
252  * @pages_to_scan:      new pages_to_scan value
253  * @cpu_percent:        cpu usage in percent
254  *
255  * Allows to trace the ksm advisor.
256  */
257 TRACE_EVENT(ksm_advisor,
258 
259         TP_PROTO(s64 scan_time, unsigned long pages_to_scan,
260                  unsigned int cpu_percent),
261 
262         TP_ARGS(scan_time, pages_to_scan, cpu_percent),
263 
264         TP_STRUCT__entry(
265                 __field(s64,            scan_time)
266                 __field(unsigned long,  pages_to_scan)
267                 __field(unsigned int,   cpu_percent)
268         ),
269 
270         TP_fast_assign(
271                 __entry->scan_time      = scan_time;
272                 __entry->pages_to_scan  = pages_to_scan;
273                 __entry->cpu_percent    = cpu_percent;
274         ),
275 
276         TP_printk("ksm scan time %lld pages_to_scan %lu cpu percent %u",
277                         __entry->scan_time, __entry->pages_to_scan,
278                         __entry->cpu_percent)
279 );
280 
281 #endif /* _TRACE_KSM_H */
282 
283 /* This part must be outside protection */
284 #include <trace/define_trace.h>
285 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php