[jboss-cvs] JBoss Messaging SVN: r7227 - in trunk: examples/core/perf/server0 and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jun 5 12:22:39 EDT 2009


Author: timfox
Date: 2009-06-05 12:22:39 -0400 (Fri, 05 Jun 2009)
New Revision: 7227

Modified:
   trunk/examples/core/perf/perf.properties
   trunk/examples/core/perf/server0/jbm-configuration.xml
   trunk/src/config/common/schema/jbm-configuration.xsd
   trunk/src/main/org/jboss/messaging/core/asyncio/impl/TimedBuffer.java
   trunk/src/main/org/jboss/messaging/core/config/Configuration.java
   trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
   trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
   trunk/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFileFactory.java
   trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/asyncio/TimedBufferTest.java
Log:
added rate logging

Modified: trunk/examples/core/perf/perf.properties
===================================================================
--- trunk/examples/core/perf/perf.properties	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/examples/core/perf/perf.properties	2009-06-05 16:22:39 UTC (rev 7227)
@@ -1,5 +1,5 @@
-num-messages=20000
-num-warmup-messages=4000
+num-messages=1000000
+num-warmup-messages=10000
 message-size=1000
 durable=true
 transacted=false
@@ -14,6 +14,6 @@
 tcp-buffer=1048576
 tcp-no-delay=false
 send-window=1048576
-pre-ack=false
-block-ack=true
-block-persistent=true
+pre-ack=true
+block-ack=false
+block-persistent=false

Modified: trunk/examples/core/perf/server0/jbm-configuration.xml
===================================================================
--- trunk/examples/core/perf/server0/jbm-configuration.xml	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/examples/core/perf/server0/jbm-configuration.xml	2009-06-05 16:22:39 UTC (rev 7227)
@@ -21,6 +21,7 @@
    <journal-type>ASYNCIO</journal-type>
    <journal-min-files>20</journal-min-files>
    <journal-aio-buffer-timeout>20000</journal-aio-buffer-timeout>
+   <log-journal-write-rate>true</log-journal-write-rate>
 
    
    <queues>

Modified: trunk/src/config/common/schema/jbm-configuration.xsd
===================================================================
--- trunk/src/config/common/schema/jbm-configuration.xsd	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/config/common/schema/jbm-configuration.xsd	2009-06-05 16:22:39 UTC (rev 7227)
@@ -201,6 +201,9 @@
 				<xsd:element name="journal-sync-non-transactional"
 					type="xsd:boolean" maxOccurs="1" minOccurs="0">
 				</xsd:element>
+				<xsd:element name="log-journal-write-rate"
+					 type="xsd:boolean" maxOccurs="1" minOccurs="0">
+				</xsd:element>
 				<xsd:element name="journal-file-size" type="xsd:unsignedLong"
 					maxOccurs="1" minOccurs="0">
 				</xsd:element>

Modified: trunk/src/main/org/jboss/messaging/core/asyncio/impl/TimedBuffer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/asyncio/impl/TimedBuffer.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/asyncio/impl/TimedBuffer.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -25,6 +25,8 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
@@ -79,6 +81,52 @@
    private volatile boolean started;
 
    private final boolean flushOnSync;
+   
+   // for logging write rates
+   
+   private final boolean logRates;
+   
+   private volatile long bytesFlushed;
+   
+   private Timer logRatesTimer;
+   
+   private TimerTask logRatesTimerTask;
+   
+   private long lastExecution;
+   
+   private class LogRatesTimerTask extends TimerTask
+   {
+      private boolean closed;
+      
+      @Override
+      public synchronized void run()
+      {
+         if (!closed)
+         {
+            long now = System.currentTimeMillis();
+            
+            if (lastExecution != 0)
+            {                             
+               double rate = 1000 * ((double)bytesFlushed) / ( now  - lastExecution);
+               
+               log.info("Write rate = " + rate + " bytes / sec");                                      
+            }
+            else
+            {
+               lastExecution = now;
+            }
+            
+            bytesFlushed = 0;
+         }
+      }
+      
+      public synchronized boolean cancel()
+      {
+         closed = true;
+         
+         return super.cancel();
+      }
+   }
 
    // Static --------------------------------------------------------
 
@@ -86,9 +134,14 @@
 
    // Public --------------------------------------------------------
 
-   public TimedBuffer(final int size, final long timeout, final boolean flushOnSync)
+   public TimedBuffer(final int size, final long timeout, final boolean flushOnSync, final boolean logRates)
    {
       bufferSize = size;
+      this.logRates = logRates;
+      if (logRates)
+      {
+         this.logRatesTimer = new Timer(true);
+      }
       // Setting the interval for nano-sleeps
       
       // We are keeping this disabled for now until we figure out what to do.
@@ -119,6 +172,13 @@
       timerThread = new Thread(timerRunnable, "jbm-aio-timer");
 
       timerThread.start();
+      
+      if (logRates)
+      {
+         logRatesTimerTask = new LogRatesTimerTask();
+         
+         logRatesTimer.scheduleAtFixedRate(logRatesTimerTask, 2000, 2000);
+      }
 
       started = true;
    }
@@ -137,6 +197,11 @@
       latchTimer.down();
 
       timerRunnable.close();
+      
+      if (logRates)
+      {
+         logRatesTimerTask.cancel();
+      }
 
       while (timerThread.isAlive())
       {
@@ -261,6 +326,11 @@
 
          active = false;
          pendingSync = false;
+         
+         if (logRates)
+         {
+            bytesFlushed += currentBuffer.position();
+         }
 
          currentBuffer.limit(0);
       }

Modified: trunk/src/main/org/jboss/messaging/core/config/Configuration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/Configuration.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/config/Configuration.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -157,7 +157,7 @@
    boolean isPersistIDCache();
 
    void setPersistIDCache(boolean persist);
-
+   
    // Journal related attributes ------------------------------------------------------------
 
    String getBindingsDirectory();
@@ -211,7 +211,12 @@
    boolean isCreateJournalDir();
 
    void setCreateJournalDir(boolean create);
+   
+   boolean isLogJournalWriteRate();
+   
+   void setLogJournalWriteRate(boolean rate);
 
+
    // Paging Properties --------------------------------------------------------------------
 
    String getPagingDirectory();

Modified: trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -100,6 +100,8 @@
    public static final int DEFAULT_JOURNAL_AIO_BUFFER_TIMEOUT = 500000;
    
    public static final int DEFAULT_JOURNAL_AIO_BUFFER_SIZE = 128 * 1024;
+   
+   public static final boolean DEFAULT_JOURNAL_LOG_WRITE_RATE = false;
 
    public static final boolean DEFAULT_WILDCARD_ROUTING_ENABLED = true;
 
@@ -240,6 +242,8 @@
    protected int journalAIOBufferTimeout = DEFAULT_JOURNAL_AIO_BUFFER_TIMEOUT;
    
    protected int journalAIOBufferSize = DEFAULT_JOURNAL_AIO_BUFFER_SIZE;
+   
+   protected boolean logJournalWriteRate = DEFAULT_JOURNAL_LOG_WRITE_RATE;
 
    protected boolean wildcardRoutingEnabled = DEFAULT_WILDCARD_ROUTING_ENABLED;
 
@@ -603,7 +607,17 @@
    {
       journalMinFiles = files;
    }
+      
+   public boolean isLogJournalWriteRate()
+   {
+      return logJournalWriteRate;
+   }
 
+   public void setLogJournalWriteRate(boolean logJournalWriteRate)
+   {
+      this.logJournalWriteRate = logJournalWriteRate;
+   }
+
    public boolean isCreateBindingsDir()
    {
       return createBindingsDir;

Modified: trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -304,6 +304,8 @@
       journalMinFiles = getInteger(e, "journal-min-files", journalMinFiles);
 
       journalMaxAIO = getInteger(e, "journal-max-aio", journalMaxAIO);
+      
+      logJournalWriteRate = getBoolean(e, "log-journal-write-rate", DEFAULT_JOURNAL_LOG_WRITE_RATE);
 
       wildcardRoutingEnabled = getBoolean(e, "wild-card-routing-enabled", wildcardRoutingEnabled);
 

Modified: trunk/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFileFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFileFactory.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFileFactory.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -78,15 +78,20 @@
       this(journalDir,
            ConfigurationImpl.DEFAULT_JOURNAL_AIO_BUFFER_SIZE,
            ConfigurationImpl.DEFAULT_JOURNAL_AIO_BUFFER_TIMEOUT,
-           ConfigurationImpl.DEFAULT_JOURNAL_AIO_FLUSH_SYNC);
+           ConfigurationImpl.DEFAULT_JOURNAL_AIO_FLUSH_SYNC,
+           false);
    }
 
-   public AIOSequentialFileFactory(final String journalDir, int bufferSize, long bufferTimeout, boolean flushOnSync)
+   public AIOSequentialFileFactory(final String journalDir,
+                                   int bufferSize,
+                                   long bufferTimeout,
+                                   boolean flushOnSync,
+                                   boolean logRates)
    {
       super(journalDir);
       this.bufferSize = bufferSize;
       this.bufferTimeout = bufferTimeout;
-      this.timedBuffer = new TimedBuffer(bufferSize, bufferTimeout, flushOnSync);
+      this.timedBuffer = new TimedBuffer(bufferSize, bufferTimeout, flushOnSync, logRates);
    }
 
    /* (non-Javadoc)

Modified: trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -192,7 +192,8 @@
             journalFF = new AIOSequentialFileFactory(journalDir,
                                                      config.getAIOBufferSize(),
                                                      config.getAIOBufferTimeout(),
-                                                     config.isAIOFlushOnSync());
+                                                     config.isAIOFlushOnSync(),
+                                                     config.isLogJournalWriteRate());
             log.info("AIO loaded successfully");
          }
       }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/asyncio/TimedBufferTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/asyncio/TimedBufferTest.java	2009-06-05 14:13:10 UTC (rev 7226)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/asyncio/TimedBufferTest.java	2009-06-05 16:22:39 UTC (rev 7227)
@@ -92,7 +92,7 @@
          }
       }
       
-      TimedBuffer timedBuffer = new TimedBuffer(100, 3600 * 1000, false); // Any big timeout
+      TimedBuffer timedBuffer = new TimedBuffer(100, 3600 * 1000, false, false); // Any big timeout
       
       timedBuffer.setObserver(new TestObserver());
       




More information about the jboss-cvs-commits mailing list