Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
lttng-modules.8329
fix-mm_compaction_migratepages-tp.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-mm_compaction_migratepages-tp.diff of Package lttng-modules.8329
From: Libor Pechacek <lpechacek@suse.cz> Date: Mon May 19 17:16:38 PDT 2014 Subject: update mm_compaction_migratepages trace-event Signed-off-by: Tony Jones <tonyj@suse.de> References: none Update mm_compaction_migratepages trace-event to reflect the following kernel change. Unfortunately this requires double computation as declarations are not allowed in lttng TP_fast_assign so there is no way to store 'nr_failed' as temporary. commit ddc38a292e3ecf1e788a31fde0ec52e4b3c78c0f Author: Vlastimil Babka <vbabka@suse.cz> Date: Fri May 16 13:46:41 2014 +0200 mm/compaction: do not count migratepages when unnecessary (VM Performance). --- instrumentation/events/lttng-module/compaction.h | 41 ++++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) --- a/instrumentation/events/lttng-module/compaction.h +++ b/instrumentation/events/lttng-module/compaction.h @@ -5,6 +5,7 @@ #define _TRACE_COMPACTION_H #include <linux/types.h> +#include <linux/list.h> #include <linux/tracepoint.h> #include <trace/events/gfpflags.h> @@ -45,12 +46,39 @@ DEFINE_EVENT(mm_compaction_isolate_templ TP_ARGS(nr_scanned, nr_taken) ) +#ifndef _TRACE_MM_COMPACT_DEF_ +#define _TRACE_MM_COMPACT_DEF_ + +static inline +unsigned long mm_compaction_get_nr_failed(int migrate_rc, + struct list_head *migratepages) +{ + unsigned long nr_failed = 0; + struct list_head *page_lru; + + /* + * migrate_pages() returns either a non-negative number + * with the number of pages that failed migration, or an + * error code, in which case we need to count the remaining + * pages manually + */ + if (migrate_rc >= 0) + nr_failed = migrate_rc; + else + list_for_each(page_lru, migratepages) + nr_failed++; + + return nr_failed; +} +#endif /* _TRACE_MM_COMPACT_DEF_ */ + TRACE_EVENT(mm_compaction_migratepages, - TP_PROTO(unsigned long nr_migrated, - unsigned long nr_failed), + TP_PROTO(unsigned long nr_all, + int migrate_rc, + struct list_head *migratepages), - TP_ARGS(nr_migrated, nr_failed), + TP_ARGS(nr_all, migrate_rc, migratepages), TP_STRUCT__entry( __field(unsigned long, nr_migrated) @@ -58,8 +86,11 @@ TRACE_EVENT(mm_compaction_migratepages, ), TP_fast_assign( - tp_assign(nr_migrated, nr_migrated) - tp_assign(nr_failed, nr_failed) + tp_assign(nr_migrated, + nr_all - mm_compaction_get_nr_failed(migrate_rc, + migratepages)) + tp_assign(nr_failed, + mm_compaction_get_nr_failed(migrate_rc, migratepages)) ), TP_printk("nr_migrated=%lu nr_failed=%lu",
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor