Author: nextgens
Date: 2008-02-15 09:34:00 +0000 (Fri, 15 Feb 2008)
New Revision: 17932

Modified:
   trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/node/NodeStats.java
Log:
Add more stats on /stats (threadcounts by priority)

Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2008-02-15 09:17:00 UTC (rev 17931)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java       
2008-02-15 09:34:00 UTC (rev 17932)
@@ -290,6 +290,10 @@
                        HTMLNode unclaimedFIFOMessageCountsInfobox = 
nextTableCell.addChild("div", "class", "infobox");
                        
drawUnclaimedFIFOMessageCountsBox(unclaimedFIFOMessageCountsInfobox);

+                                               
+                       HTMLNode threadsPriorityInfobox = 
nextTableCell.addChild("div", "class", "infobox");
+                       drawThreadPriorityStatsBox(threadsPriorityInfobox);
+                       
                        nextTableCell = overviewTableRow.addChild("td");

                        // thread usage box
@@ -382,7 +386,26 @@
                jvmStatsList.addChild("li", l10n("osArch", "arch", 
System.getProperty("os.arch")));

        }
+       
+       private void drawThreadPriorityStatsBox(HTMLNode node) {
+               
+               node.addChild("div", "class", "infobox-header", 
l10n("threadsByPriority"));
+               HTMLNode threadsInfoboxContent = node.addChild("div", "class", 
"infobox-content");
+               int[] activeThreadsByPriority = 
stats.getActiveThreadsByPriority();
+               
+               HTMLNode threadsByPriorityTable = 
threadsInfoboxContent.addChild("table", "border", "0");
+               HTMLNode row = threadsByPriorityTable.addChild("tr");

+               row.addChild("th", l10n("Priority"));
+               row.addChild("th", l10n("Amount"));             
+               
+               for(int i=0; i<activeThreadsByPriority.length; i++) {
+                       row = threadsByPriorityTable.addChild("tr");
+                       row.addChild("th", String.valueOf(i));
+                       row.addChild("th", 
String.valueOf(activeThreadsByPriority[i]));         
+               }
+       }
+
        private void drawStoreSizeBox(HTMLNode storeSizeInfobox, long 
nodeUptimeSeconds) {

                storeSizeInfobox.addChild("div", "class", "infobox-header", 
"Datastore");

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-02-15 
09:17:00 UTC (rev 17931)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-02-15 
09:34:00 UTC (rev 17932)
@@ -983,6 +983,9 @@
 StatisticsToadlet.statisticGatheringTitle=Statistics Gathering
 StatisticsToadlet.threadDumpButton=Generate a Thread Dump
 StatisticsToadlet.threads=Running threads: ${running}/${max}
+StatisticsToadlet.threadsByPriority=Threads by priority
+StatisticsToadlet.priority=Priority
+StatisticsToadlet.amount=Amount
 StatisticsToadlet.totalInput=Total Input: ${total} (${rate}/sec)
 StatisticsToadlet.totalOutput=Total Output: ${total} (${rate}/sec)
 StatisticsToadlet.transferringRequests=Transferring Requests: sending 
${senders}, receiving ${receivers}

Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java       2008-02-15 09:17:00 UTC 
(rev 17931)
+++ trunk/freenet/src/freenet/node/NodeStats.java       2008-02-15 09:34:00 UTC 
(rev 17932)
@@ -22,6 +22,7 @@
 import freenet.support.api.BooleanCallback;
 import freenet.support.api.IntCallback;
 import freenet.support.api.LongCallback;
+import freenet.support.io.NativeThread;
 import freenet.support.math.DecayingKeyspaceAverage;
 import freenet.support.math.RunningAverage;
 import freenet.support.math.TimeDecayingRunningAverage;
@@ -163,6 +164,7 @@

        // ThreadCounting stuffs
        public final ThreadGroup rootThreadGroup;
+       private int[] activeThreadsByPriorities = new 
int[NativeThread.JAVA_PRIO_RANGE];
        private int threadLimit;

        // Free heap memory threshold stuffs
@@ -774,12 +776,16 @@

        public int getActiveThreadCount() {
                int waitingThreads = 0;
-               int[] toCount = node.executor.waitingThreads();
-               for(int i=0; i<toCount.length; i++)
-                       waitingThreads += toCount[i];
+               activeThreadsByPriorities = node.executor.waitingThreads();
+               for(int i=0; i<activeThreadsByPriorities.length; i++)
+                       waitingThreads += activeThreadsByPriorities[i];

                return rootThreadGroup.activeCount() - waitingThreads;
        }
+       
+       public int[] getActiveThreadsByPriority() {
+               return activeThreadsByPriorities;
+       }

        public int getThreadLimit() {
                return threadLimit;


Reply via email to