Переглянути джерело

GL, update version and reduce thread count (#5155)

* [ci fw-only Java/greenlightning]

swap versions

* [ci fw-only Java/greenlightning]

go back to simple file

* [ci fw-only Java/greenlightning]

update version to add loging and track issue

* [ci fw-only Java/greenlightning]

use old update design

bump version number

* [ci fw-only Java/greenlightning]

reduce poll rate for greater volume

* [ci fw-only Java/greenlightning]

update comment

* [ci fw-only Java/greenlightning]

update for larger pipes

* [ci fw-only Java/greenlightning]

update memory limit

update to next version

better request read

* [ci fw-only Java/greenlightning]

next version and buffer size adjustments

cleaned up object creation for JSON request

* [ci fw-only Java/greenlightning]

update to next version

cache int values for epoll

* update launcher

* reduce to 28G

* reduce memory

* reduce memory usage 24G

* set new size

* back up to 28G

* reduce newSize

* update memory

* reduce size

* remove fixed pipe size, test server can not support this.

* bump up new sizes

* [ci fw-only Java/greenlightning]

update to next version with more socket readers

* [ci fw-only Java/greenlightning]

version upgrade

* remove comment

* [ci fw-only Java/greenlightning]

Update version

Clear input pipes

* [ci fw-only Java/greenlightning]

larger connection count for update test

* [ci fw-only Java/greenlightning]

DB driver changed management so we switched to new one with support

* [ci fw-only Java/greenlightning]

fix upate to match the document streaming appraoch from driver

* [ci fw-only Java/greenlightning]

Bump up DB in flight messages by 8x

* [ci fw-only Java/greenlightning]

update version

added volitile impl

reduced threads to what we need only.

* [ci fw-only Java/greenlightning]

version upgrade
Nathan Tippy 5 роки тому
батько
коміт
980dda4443

+ 1 - 1
frameworks/Java/greenlightning/pom.xml

@@ -4,7 +4,7 @@
 
 	<groupId>com.javanut.gl.benchmark</groupId>
 	<artifactId>benchmark-test</artifactId>
-	<version>1.1.12</version> 
+	<version>1.1.13</version> 
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 3 - 9
frameworks/Java/greenlightning/src/main/java/com/javanut/gl/benchmark/FrameworkTest.java

@@ -51,8 +51,7 @@ public class FrameworkTest implements GreenApp {
 	//TODO: add utility to compute this based on need.
 	static final int c = 148;//293;//592; // to reach 16K simultaneous calls
 
-	private final long defaultRate = Long.parseLong(System.getProperty("xx.rate", "180000")); //2.5K cycles per second
-	                                                                                          // at 512 requests is 1.28M/sec
+	private final long defaultRate = Long.parseLong(System.getProperty("xx.rate", "120000")); //was 180000
 	//Need to record how many records per pass are done...
 	
 	static {
@@ -82,9 +81,6 @@ public class FrameworkTest implements GreenApp {
     	   	
     	System.out.println("xx.rate "+defaultRate+"  xx.ratio "+ServerSocketWriterStage.BASE_ADJUST+" xx.limitns "+ServerSocketWriterStage.HARD_LIMIT_NS);
 		
-    	
-    	
-		
     }   
         
     public FrameworkTest(String host, int port, 
@@ -147,11 +143,9 @@ public class FrameworkTest implements GreenApp {
     				.setPassword(connectionPassword)    		
     				.setCachePreparedStatements(true)
     				.setTcpNoDelay(true)
-    				.setTcpKeepAlive(true)
-    				
-    				;	    	
+    				.setTcpKeepAlive(true);	    	
 
-    		poolOptions = new PoolOptions()
+    		poolOptions = new PoolOptions()    				
     				  .setMaxSize(connectionsPerTrack);
     		
     		///early check to know if we have a database or not,

+ 3 - 2
frameworks/Java/greenlightning/src/main/java/com/javanut/gl/benchmark/PoolManager.java

@@ -18,8 +18,9 @@ public class PoolManager {
 		this.options = options;
 		this.poolOptions = poolOptions;
 		
-		this.vertx = Vertx.vertx(new VertxOptions().
-				  setPreferNativeTransport(true)
+		this.vertx = Vertx.vertx(new VertxOptions()
+				  .setPreferNativeTransport(true)
+				  .setWorkerPoolSize(4)//limit threads for this track
 				);
 		
 		boolean usingNative = vertx.isNativeTransportEnabled();

+ 7 - 4
frameworks/Java/greenlightning/src/main/java/com/javanut/gl/benchmark/ProcessQuery.java

@@ -3,6 +3,7 @@ package com.javanut.gl.benchmark;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.javanut.gl.api.HTTPRequestReader;
 import com.javanut.gl.api.HTTPResponseService;
@@ -18,7 +19,7 @@ import io.vertx.sqlclient.Tuple;
 public class ProcessQuery {
 	
 	private final transient ObjectPipe<ResultObject> DBRestInFlight;
-	private boolean collectionPendingDBRest = false;
+	private AtomicBoolean collectionPendingDBRest = new AtomicBoolean(false);
 	private transient final List<ResultObject> collectorDBRest = new ArrayList<ResultObject>();
 	private final HTTPResponseService service;
 	private transient final PoolManager pm;
@@ -151,9 +152,11 @@ public class ProcessQuery {
 
 	private boolean isReadyDBRest(ResultObject temp) {
 
-		if (collectionPendingDBRest) {
+		if (collectionPendingDBRest.get()) {
 			//now ready to send, we have all the data	
-			if (!publishMultiDBResponse(collectorDBRest.get(0).getConnectionId(), collectorDBRest.get(0).getSequenceId() )) {				
+			ResultObject resultObject = collectorDBRest.get(0);
+			if (!publishMultiDBResponse(resultObject.getConnectionId(), 
+					                    resultObject.getSequenceId() )) {				
 				return false;
 			}
 		}
@@ -226,7 +229,7 @@ public class ProcessQuery {
 					    					   collectorDBRest.clear();					    					   
 					    					   DBRestInFlight.publishTailPosition();
 					    				   });
-		collectionPendingDBRest = !result;
+		collectionPendingDBRest.set(!result);
 		return result;
 	}
 

+ 2 - 1
frameworks/Java/greenlightning/src/main/java/com/javanut/gl/benchmark/ProcessUpdate.java

@@ -95,7 +95,8 @@ public class ProcessUpdate {
 					
 					connection.prepare("SELECT * FROM world WHERE id=$1", ph -> {
 						if (ph.succeeded()) {							
-							selectQuery = ph.result();														
+							selectQuery = ph.result();	
+							
 							building = false;
 							if (updateQuery==null) {
 								updateQuery();

+ 7 - 5
frameworks/Java/greenlightning/src/main/java/com/javanut/gl/benchmark/ResultObject.java

@@ -1,10 +1,12 @@
 package com.javanut.gl.benchmark;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 public class ResultObject {
 
 	private long connectionId; 
 	private long sequenceId;
-	private int status;
+	private AtomicInteger status = new AtomicInteger();
 	private int id;
 	private int result;
 	private int groupSize;
@@ -40,12 +42,12 @@ public class ResultObject {
 
 
 	public int getStatus() {
-		return status;
+		return status.get();
 	}
 
 
 	public void setStatus(int status) {
-		this.status = status;
+		this.status.set(status);
 	}
 
 
@@ -73,11 +75,11 @@ public class ResultObject {
 		this.id = id;
 		this.result = result;
 		this.groupSize = 0;
-		this.status = -1;
+		this.status.set(-1);
 	}
 	
 	public ResultObject() {
-		this.status = -1;
+		this.status.set(-1);
 		this.groupSize = 0;
 	}