summaryrefslogtreecommitdiffstats
path: root/src/build
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-12-13 14:46:48 -0600
committerDouglas R. Gilbert <dgilbert@us.ibm.com>2012-01-12 10:46:18 -0600
commit47f456fec103ec096edb5e0b9fcff54acbcd3d24 (patch)
tree478f16727ec00b72da727bdffa5d467d131b22be /src/build
parentb93f3dc742c0fa8d16f130938b56feb48e5bd7d7 (diff)
downloadtalos-hostboot-47f456fec103ec096edb5e0b9fcff54acbcd3d24.tar.gz
talos-hostboot-47f456fec103ec096edb5e0b9fcff54acbcd3d24.zip
Tool to display memory statistics
Change-Id: Iaac392b9f4287ba888e454532c4061d6a14c6e5c Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/593 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Diffstat (limited to 'src/build')
-rw-r--r--src/build/debug/Hostboot/MemStats.pm75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/build/debug/Hostboot/MemStats.pm b/src/build/debug/Hostboot/MemStats.pm
new file mode 100644
index 000000000..415cceb01
--- /dev/null
+++ b/src/build/debug/Hostboot/MemStats.pm
@@ -0,0 +1,75 @@
+use strict;
+
+package Hostboot::MemStats;
+use Exporter;
+our @EXPORT_OK = ('main');
+
+sub main
+{
+ my @page_manager_addr =
+ ::findSymbolAddress("Singleton<PageManager>::instance()::instance");
+
+ my $free_pages =
+ ::read64 @page_manager_addr;
+
+ my $total_pages =
+ ::read64 ($page_manager_addr[0] + 8, 8);
+
+ my $free_min =
+ ::read64 ::findSymbolAddress("PageManager::cv_low_page_count");
+
+ my $page_coal =
+ ::read64 ::findSymbolAddress("PageManager::cv_coalesce_count");
+
+ my $big_heap_pages_used =
+ ::read32 ::findSymbolAddress("HeapManager::cv_largeheap_page_count");
+
+ my $big_heap_max =
+ ::read32 ::findSymbolAddress("HeapManager::cv_largeheap_page_max");
+
+ my $small_heap_pages_used =
+ ::read32 ::findSymbolAddress("HeapManager::cv_smallheap_page_count");
+
+ my $heap_coal =
+ ::read32 ::findSymbolAddress("HeapManager::cv_coalesce_count");
+
+ my $heap_free =
+ ::read32 ::findSymbolAddress("HeapManager::cv_free_bytes");
+
+ my $heap_free_chunks =
+ ::read32 ::findSymbolAddress("HeapManager::cv_free_chunks");
+
+ my $heap_total = $big_heap_pages_used + $small_heap_pages_used;
+ my $heap_max = $big_heap_max + $small_heap_pages_used;
+
+
+ my $castout_ro =
+ ::read32 ::findSymbolAddress("Block::cv_ro_evict_req");
+
+ my $castout_rw =
+ ::read32 ::findSymbolAddress("Block::cv_rw_evict_req");
+
+
+ ::userDisplay "===================================================\n";
+ ::userDisplay "MemStats:\n";
+ ::userDisplay " Total pages available: $total_pages\n";
+ ::userDisplay " Free pages: $free_pages\n";
+ ::userDisplay " Free pages Low mark: $free_min\n";
+ ::userDisplay " Page chunks coalesced: $page_coal\n";
+ ::userDisplay "\nHeap:\n";
+ ::userDisplay " Pages used by heap: $heap_total\n";
+ ::userDisplay " Max. Pages used by heap: $heap_max\n";
+ ::userDisplay " heap free bytes/chunks $heap_free/$heap_free_chunks (valid only after a coalescing)\n";
+ ::userDisplay " Heap chunks coalesced: $heap_coal\n";
+ ::userDisplay "\nVirtual Memory Manager page eviction requests:\n";
+ ::userDisplay " RO page requests: $castout_ro\n";
+ ::userDisplay " RW page requests: $castout_rw\n";
+ ::userDisplay "===================================================\n";
+
+}
+
+sub help
+{
+ ::userDisplay "Tool: MemStats\n";
+ ::userDisplay "\tDisplays Hostboot memory usage information\n";
+}
OpenPOWER on IntegriCloud