LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  January 2015

HPS-SVN January 2015

Subject:

r1986 - in /java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui: RunPanel.java model/RunModel.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Sat, 24 Jan 2015 02:43:29 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (189 lines)

Author: [log in to unmask]
Date: Fri Jan 23 18:43:22 2015
New Revision: 1986

Log:
Add data rate monitoring to run panel.  HPSJAVA-332

Modified:
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/RunPanel.java	Fri Jan 23 18:43:22 2015
@@ -1,14 +1,6 @@
 package org.hps.monitoring.gui;
 
-import static org.hps.monitoring.gui.model.RunModel.DATA_RECEIVED_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.ELAPSED_TIME_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.END_DATE_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.EVENTS_RECEIVED_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.EVENT_NUMBER_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.RUN_LENGTH_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.RUN_NUMBER_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.START_DATE_PROPERTY;
-import static org.hps.monitoring.gui.model.RunModel.TOTAL_EVENTS_PROPERTY;
+import static org.hps.monitoring.gui.model.RunModel.*;
 
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -49,6 +41,7 @@
     FieldPanel eventsReceivedField = new FieldPanel("Events Received", "", 14, false);
     FieldPanel dataReceivedField = new FieldPanel("Data Received [bytes]", "", 14, false);
     FieldPanel eventNumberField = new FieldPanel("Event Number", "", 14, false);
+    FieldPanel dataRateField = new FieldPanel("Data Rate [mb/s]", "", 12, false);
 
     Timer timer;
     long jobStartMillis;
@@ -73,8 +66,9 @@
         add(eventsReceivedField);
         add(dataReceivedField);
         add(eventNumberField);
-
-        this.setMinimumSize(new Dimension(0, 190));
+        add(dataRateField);
+
+        this.setMinimumSize(new Dimension(0, 240));
     }
 
     void startJobTimer() {
@@ -91,7 +85,6 @@
 
     void stopRunTimer() {
         timer.cancel();
-        timer.purge();
     }
 
     class RunModelUpdater extends CompositeRecordProcessor {
@@ -104,6 +97,8 @@
 
         @Override
         public void process(CompositeRecord event) {
+            // FIXME: This should not update every event.  It overloads the EDT.
+            //        Listeners can be enabled/disabled based on an event interval.
             model.incrementEventsReceived();
             EvioEvent evioEvent = event.getEvioEvent();
             if (event.getEtEvent() != null && event.getEvioEvent() == null) {
@@ -153,6 +148,49 @@
         @Override
         public void endJob() {
             RunPanel.this.stopRunTimer();
+        }
+    }
+    
+    /**
+     * Update the data rate field at about once per second based on how
+     * many bytes were received by the processor in that interval.
+     * The actual number of milliseconds between updates is not computed,
+     * so this might be slightly inaccurate.
+     */
+    class DataRateUpdater extends CompositeRecordProcessor {
+        
+        double bytesReceived = 0;
+        Timer dataRateTimer;
+        
+        @Override
+        public void startJob() {
+            // Start the timer to execute data rate calculation about once per second.
+            dataRateTimer = new Timer("DataRateTimer");
+            TimerTask dataRateTask = new TimerTask() {                                                                 
+                public void run() {
+                    double megaBytesReceived = bytesReceived / 1000000;
+                    model.setDataRate(megaBytesReceived);
+                    bytesReceived = 0;
+                }
+            };
+            dataRateTimer.scheduleAtFixedRate(dataRateTask, 0, 1000);
+        }
+        
+        @Override
+        public void process(CompositeRecord event) {            
+            if (event.getEtEvent() != null && event.getEvioEvent() == null) {
+                // Use ET events for length.
+                bytesReceived += event.getEtEvent().getData().length;
+            } else if (event.getEvioEvent() != null) {
+                // Use EVIO events for length.
+                bytesReceived += event.getEvioEvent().getTotalBytes();
+            }
+            // FIXME: If there is an LCIO source only, it is not easy to get the data length in bytes!
+        }      
+        
+        public void endJob() {
+            // Kill the timer.
+            dataRateTimer.cancel();
         }
     }
 
@@ -186,6 +224,8 @@
             this.dataReceivedField.setValue((Long) value);
         } else if (EVENT_NUMBER_PROPERTY.equals(evt.getPropertyName())) {
             this.eventNumberField.setValue((Integer) value);
+        } else if (DATA_RATE_PROPERTY.equals(evt.getPropertyName())) {
+            this.dataRateField.setValue((Double) value);
         }
     }
 }

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/model/RunModel.java	Fri Jan 23 18:43:22 2015
@@ -12,15 +12,23 @@
     public final static String END_DATE_PROPERTY = "EndDate";
     public final static String RUN_LENGTH_PROPERTY = "RunLength"; // set at end, in seconds
     public final static String TOTAL_EVENTS_PROPERTY = "TotalEvents"; // only set at end
-    public final static String EVENTS_RECEIVED_PROPERTY = "EventsReceived"; // events received so
-                                                                            // far
-    public final static String ELAPSED_TIME_PROPERTY = "ElapsedTime"; // updated on the fly, in
-                                                                      // seconds
-    public final static String DATA_RECEIVED_PROPERTY = "DataReceived"; // updated on the fly, in
-                                                                        // bytes
+    public final static String EVENTS_RECEIVED_PROPERTY = "EventsReceived"; // events received so far
+    public final static String ELAPSED_TIME_PROPERTY = "ElapsedTime"; // updated on the fly, in seconds
+    public final static String DATA_RECEIVED_PROPERTY = "DataReceived"; // updated on the fly, in bytes
     public final static String EVENT_NUMBER_PROPERTY = "EventNumber"; // current event number
+    public final static String DATA_RATE_PROPERTY = "DataRate"; // data rate in megabytes per second
 
-    static final String[] properties = new String[] { RUN_NUMBER_PROPERTY, START_DATE_PROPERTY, END_DATE_PROPERTY, RUN_LENGTH_PROPERTY, TOTAL_EVENTS_PROPERTY, ELAPSED_TIME_PROPERTY, DATA_RECEIVED_PROPERTY, EVENT_NUMBER_PROPERTY };
+    static final String[] properties = new String[] { 
+        RUN_NUMBER_PROPERTY, 
+        START_DATE_PROPERTY, 
+        END_DATE_PROPERTY, 
+        RUN_LENGTH_PROPERTY, 
+        TOTAL_EVENTS_PROPERTY, 
+        ELAPSED_TIME_PROPERTY, 
+        DATA_RECEIVED_PROPERTY, 
+        EVENT_NUMBER_PROPERTY, 
+        DATA_RATE_PROPERTY
+    };
 
     int runNumber;
     Date startDate;
@@ -31,6 +39,7 @@
     int elapsedTime;
     long dataReceived;
     int eventNumber;
+    double dataRate;
 
     public String[] getPropertyNames() {
         return properties;
@@ -137,6 +146,16 @@
         this.eventNumber = eventNumber;
         this.firePropertyChange(EVENT_NUMBER_PROPERTY, oldValue, this.eventNumber);
     }
+    
+    public void setDataRate(double dataRate) {
+        double oldValue = this.dataRate;
+        this.dataRate = dataRate;
+        this.firePropertyChange(DATA_RATE_PROPERTY, oldValue, this.dataRate);
+    }
+    
+    public double getDataRate() {
+        return dataRate;
+    }
 
     public void reset() {
         setDataReceived(0);

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use