This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/staging by this push:
new 2e0df07 Optimizing the monitoring logic of load client
2e0df07 is described below
commit 2e0df07434816525cc8e0a6348e022eb12f12e36
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Tue Apr 2 13:56:31 2019 -0400
Optimizing the monitoring logic of load client
---
.../apache/airavata/tools/load/StatusMonitor.java | 40 ++++++++++++++++------
.../src/main/resources/conf/load-config.yml | 4 +--
2 files changed, 31 insertions(+), 13 deletions(-)
diff --git
a/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
b/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
index 9246df3..3499f25 100644
---
a/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
+++
b/tools/load-client/src/main/java/org/apache/airavata/tools/load/StatusMonitor.java
@@ -6,6 +6,8 @@ import org.apache.airavata.model.error.AiravataClientException;
import org.apache.airavata.model.experiment.ExperimentModel;
import org.apache.airavata.model.job.JobModel;
import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.status.ExperimentState;
+import org.apache.airavata.model.status.JobState;
import org.apache.airavata.model.status.JobStatus;
import org.apache.thrift.TException;
@@ -36,31 +38,47 @@ public class StatusMonitor {
Map<String, JobModel> jobModelMap = new HashMap<>();
Map<String, ExperimentModel> experimentModelMap = new HashMap<>();
- for (String experiment : experiments) {
- experimentModelMap.put(experiment,
airavataClient.getExperiment(authzToken, experiment));
- }
while(experiments.size() > jobModelMap.size()) {
+ System.out.println("Running a monitoring round....");
+
for (String experiment : experiments) {
- if (jobModelMap.containsKey(experiment)) {
- continue;
- }
- List<JobModel> jobDetails =
airavataClient.getJobDetails(authzToken, experiment);
- if (jobDetails.size() > 0) {
- jobModelMap.put(experiment, jobDetails.get(0));
+
+ try {
+ if (jobModelMap.containsKey(experiment)) {
+ continue;
+ }
+ List<JobModel> jobDetails =
airavataClient.getJobDetails(authzToken, experiment);
+ if (jobDetails.size() > 0) {
+ jobModelMap.put(experiment, jobDetails.get(0));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("Error while monitoring experiment " +
experiment);
}
}
try {
- Thread.sleep(1000);
+ Thread.sleep(20*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
+ for (String experiment : experiments) {
+ experimentModelMap.put(experiment,
airavataClient.getExperiment(authzToken, experiment));
+ }
+
long totalTime = 0;
for (String experiment : experiments) {
- totalTime += jobModelMap.get(experiment).getCreationTime() -
experimentModelMap.get(experiment).getCreationTime();
+ long jobSubmittedTime = jobModelMap.get(experiment)
+ .getJobStatuses().stream().filter(st -> st.getJobState()
== JobState.SUBMITTED).findFirst()
+ .get().getTimeOfStateChange();
+ long expExecutedTime = experimentModelMap.get(experiment)
+ .getExperimentStatus().stream().filter(es -> es.getState()
== ExperimentState.EXECUTING).findFirst()
+ .get().getTimeOfStateChange();
+ System.out.println("Experiment " + experiment + " executed " +
expExecutedTime + " job submitted " + jobSubmittedTime);
+ totalTime += jobSubmittedTime - expExecutedTime;
}
System.out.println("All jobs created");
System.out.println("Average time " + (totalTime
*1.0/experiments.size())/1000 + " s");
diff --git a/tools/load-client/src/main/resources/conf/load-config.yml
b/tools/load-client/src/main/resources/conf/load-config.yml
index 8ca0dd8..2d872e9 100644
--- a/tools/load-client/src/main/resources/conf/load-config.yml
+++ b/tools/load-client/src/main/resources/conf/load-config.yml
@@ -19,6 +19,6 @@ configurations:
nodeCount: 1
physicalMemory: 512
- concurrentUsers: 1
- iterationsPerUser: 2
+ concurrentUsers: 10
+ iterationsPerUser: 20
randomMSDelayWithinSubmissions: 100