diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index acbf58f8a1b7..8a6418b0d2c5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1305,34 +1305,30 @@ void si_meminfo_node(struct sysinfo *val, int nid) | |||
1305 | */ | 1305 | */ |
1306 | void show_free_areas(void) | 1306 | void show_free_areas(void) |
1307 | { | 1307 | { |
1308 | int cpu, temperature; | 1308 | int cpu; |
1309 | unsigned long active; | 1309 | unsigned long active; |
1310 | unsigned long inactive; | 1310 | unsigned long inactive; |
1311 | unsigned long free; | 1311 | unsigned long free; |
1312 | struct zone *zone; | 1312 | struct zone *zone; |
1313 | 1313 | ||
1314 | for_each_zone(zone) { | 1314 | for_each_zone(zone) { |
1315 | show_node(zone); | 1315 | if (!populated_zone(zone)) |
1316 | printk("%s per-cpu:", zone->name); | ||
1317 | |||
1318 | if (!populated_zone(zone)) { | ||
1319 | printk(" empty\n"); | ||
1320 | continue; | 1316 | continue; |
1321 | } else | 1317 | |
1322 | printk("\n"); | 1318 | show_node(zone); |
1319 | printk("%s per-cpu:\n", zone->name); | ||
1323 | 1320 | ||
1324 | for_each_online_cpu(cpu) { | 1321 | for_each_online_cpu(cpu) { |
1325 | struct per_cpu_pageset *pageset; | 1322 | struct per_cpu_pageset *pageset; |
1326 | 1323 | ||
1327 | pageset = zone_pcp(zone, cpu); | 1324 | pageset = zone_pcp(zone, cpu); |
1328 | 1325 | ||
1329 | for (temperature = 0; temperature < 2; temperature++) | 1326 | printk("CPU %4d: Hot: hi:%5d, btch:%4d usd:%4d " |
1330 | printk("cpu %d %s: high %d, batch %d used:%d\n", | 1327 | "Cold: hi:%5d, btch:%4d usd:%4d\n", |
1331 | cpu, | 1328 | cpu, pageset->pcp[0].high, |
1332 | temperature ? "cold" : "hot", | 1329 | pageset->pcp[0].batch, pageset->pcp[0].count, |
1333 | pageset->pcp[temperature].high, | 1330 | pageset->pcp[1].high, pageset->pcp[1].batch, |
1334 | pageset->pcp[temperature].batch, | 1331 | pageset->pcp[1].count); |
1335 | pageset->pcp[temperature].count); | ||
1336 | } | 1332 | } |
1337 | } | 1333 | } |
1338 | 1334 | ||
@@ -1354,6 +1350,9 @@ void show_free_areas(void) | |||
1354 | for_each_zone(zone) { | 1350 | for_each_zone(zone) { |
1355 | int i; | 1351 | int i; |
1356 | 1352 | ||
1353 | if (!populated_zone(zone)) | ||
1354 | continue; | ||
1355 | |||
1357 | show_node(zone); | 1356 | show_node(zone); |
1358 | printk("%s" | 1357 | printk("%s" |
1359 | " free:%lukB" | 1358 | " free:%lukB" |
@@ -1386,12 +1385,11 @@ void show_free_areas(void) | |||
1386 | for_each_zone(zone) { | 1385 | for_each_zone(zone) { |
1387 | unsigned long nr[MAX_ORDER], flags, order, total = 0; | 1386 | unsigned long nr[MAX_ORDER], flags, order, total = 0; |
1388 | 1387 | ||
1388 | if (!populated_zone(zone)) | ||
1389 | continue; | ||
1390 | |||
1389 | show_node(zone); | 1391 | show_node(zone); |
1390 | printk("%s: ", zone->name); | 1392 | printk("%s: ", zone->name); |
1391 | if (!populated_zone(zone)) { | ||
1392 | printk("empty\n"); | ||
1393 | continue; | ||
1394 | } | ||
1395 | 1393 | ||
1396 | spin_lock_irqsave(&zone->lock, flags); | 1394 | spin_lock_irqsave(&zone->lock, flags); |
1397 | for (order = 0; order < MAX_ORDER; order++) { | 1395 | for (order = 0; order < MAX_ORDER; order++) { |