summaryrefslogtreecommitdiffstats
path: root/mm/compaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/compaction.c')
-rw-r--r--mm/compaction.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index 949198d01260..c6178bbd3e04 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -548,7 +548,7 @@ isolate_fail:
548 if (blockpfn == end_pfn) 548 if (blockpfn == end_pfn)
549 update_pageblock_skip(cc, valid_page, total_isolated, false); 549 update_pageblock_skip(cc, valid_page, total_isolated, false);
550 550
551 count_compact_events(COMPACTFREE_SCANNED, nr_scanned); 551 cc->total_free_scanned += nr_scanned;
552 if (total_isolated) 552 if (total_isolated)
553 count_compact_events(COMPACTISOLATED, total_isolated); 553 count_compact_events(COMPACTISOLATED, total_isolated);
554 return total_isolated; 554 return total_isolated;
@@ -931,7 +931,7 @@ isolate_fail:
931 trace_mm_compaction_isolate_migratepages(start_pfn, low_pfn, 931 trace_mm_compaction_isolate_migratepages(start_pfn, low_pfn,
932 nr_scanned, nr_isolated); 932 nr_scanned, nr_isolated);
933 933
934 count_compact_events(COMPACTMIGRATE_SCANNED, nr_scanned); 934 cc->total_migrate_scanned += nr_scanned;
935 if (nr_isolated) 935 if (nr_isolated)
936 count_compact_events(COMPACTISOLATED, nr_isolated); 936 count_compact_events(COMPACTISOLATED, nr_isolated);
937 937
@@ -1631,6 +1631,9 @@ out:
1631 zone->compact_cached_free_pfn = free_pfn; 1631 zone->compact_cached_free_pfn = free_pfn;
1632 } 1632 }
1633 1633
1634 count_compact_events(COMPACTMIGRATE_SCANNED, cc->total_migrate_scanned);
1635 count_compact_events(COMPACTFREE_SCANNED, cc->total_free_scanned);
1636
1634 trace_mm_compaction_end(start_pfn, cc->migrate_pfn, 1637 trace_mm_compaction_end(start_pfn, cc->migrate_pfn,
1635 cc->free_pfn, end_pfn, sync, ret); 1638 cc->free_pfn, end_pfn, sync, ret);
1636 1639
@@ -1645,6 +1648,8 @@ static enum compact_result compact_zone_order(struct zone *zone, int order,
1645 struct compact_control cc = { 1648 struct compact_control cc = {
1646 .nr_freepages = 0, 1649 .nr_freepages = 0,
1647 .nr_migratepages = 0, 1650 .nr_migratepages = 0,
1651 .total_migrate_scanned = 0,
1652 .total_free_scanned = 0,
1648 .order = order, 1653 .order = order,
1649 .gfp_mask = gfp_mask, 1654 .gfp_mask = gfp_mask,
1650 .zone = zone, 1655 .zone = zone,
@@ -1757,6 +1762,8 @@ static void compact_node(int nid)
1757 struct zone *zone; 1762 struct zone *zone;
1758 struct compact_control cc = { 1763 struct compact_control cc = {
1759 .order = -1, 1764 .order = -1,
1765 .total_migrate_scanned = 0,
1766 .total_free_scanned = 0,
1760 .mode = MIGRATE_SYNC, 1767 .mode = MIGRATE_SYNC,
1761 .ignore_skip_hint = true, 1768 .ignore_skip_hint = true,
1762 .whole_zone = true, 1769 .whole_zone = true,
@@ -1883,6 +1890,8 @@ static void kcompactd_do_work(pg_data_t *pgdat)
1883 struct zone *zone; 1890 struct zone *zone;
1884 struct compact_control cc = { 1891 struct compact_control cc = {
1885 .order = pgdat->kcompactd_max_order, 1892 .order = pgdat->kcompactd_max_order,
1893 .total_migrate_scanned = 0,
1894 .total_free_scanned = 0,
1886 .classzone_idx = pgdat->kcompactd_classzone_idx, 1895 .classzone_idx = pgdat->kcompactd_classzone_idx,
1887 .mode = MIGRATE_SYNC_LIGHT, 1896 .mode = MIGRATE_SYNC_LIGHT,
1888 .ignore_skip_hint = true, 1897 .ignore_skip_hint = true,
@@ -1891,7 +1900,7 @@ static void kcompactd_do_work(pg_data_t *pgdat)
1891 }; 1900 };
1892 trace_mm_compaction_kcompactd_wake(pgdat->node_id, cc.order, 1901 trace_mm_compaction_kcompactd_wake(pgdat->node_id, cc.order,
1893 cc.classzone_idx); 1902 cc.classzone_idx);
1894 count_vm_event(KCOMPACTD_WAKE); 1903 count_compact_event(KCOMPACTD_WAKE);
1895 1904
1896 for (zoneid = 0; zoneid <= cc.classzone_idx; zoneid++) { 1905 for (zoneid = 0; zoneid <= cc.classzone_idx; zoneid++) {
1897 int status; 1906 int status;
@@ -1909,6 +1918,8 @@ static void kcompactd_do_work(pg_data_t *pgdat)
1909 1918
1910 cc.nr_freepages = 0; 1919 cc.nr_freepages = 0;
1911 cc.nr_migratepages = 0; 1920 cc.nr_migratepages = 0;
1921 cc.total_migrate_scanned = 0;
1922 cc.total_free_scanned = 0;
1912 cc.zone = zone; 1923 cc.zone = zone;
1913 INIT_LIST_HEAD(&cc.freepages); 1924 INIT_LIST_HEAD(&cc.freepages);
1914 INIT_LIST_HEAD(&cc.migratepages); 1925 INIT_LIST_HEAD(&cc.migratepages);
@@ -1927,6 +1938,11 @@ static void kcompactd_do_work(pg_data_t *pgdat)
1927 defer_compaction(zone, cc.order); 1938 defer_compaction(zone, cc.order);
1928 } 1939 }
1929 1940
1941 count_compact_events(KCOMPACTD_MIGRATE_SCANNED,
1942 cc.total_migrate_scanned);
1943 count_compact_events(KCOMPACTD_FREE_SCANNED,
1944 cc.total_free_scanned);
1945
1930 VM_BUG_ON(!list_empty(&cc.freepages)); 1946 VM_BUG_ON(!list_empty(&cc.freepages));
1931 VM_BUG_ON(!list_empty(&cc.migratepages)); 1947 VM_BUG_ON(!list_empty(&cc.migratepages));
1932 } 1948 }