This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit f7b2db59972de78e3e4d7bacba613e62e7d4c757
Author: Marián Macik <[email protected]>
AuthorDate: Mon May 24 23:13:13 2021 +0200

    Set CPU Affinity to 4 cores
---
 .../kie/kogito/benchmarks/framework/Commands.java    | 20 ++++++++++++++++++++
 .../kie/kogito/benchmarks/AbstractTemplateTest.java  |  4 +++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git 
a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java 
b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 6b9ca73..004af2e 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -35,6 +35,7 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.api.Assertions;
 import org.jboss.logging.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -244,6 +245,25 @@ public class Commands {
         return new RunInfo(pA, runLogA, timeToFirstOKRequest);
     }
 
+    public static void setCPUAffinity(RunInfo runInfo, int numOfCores) throws 
IOException, InterruptedException {
+        LOGGER.info("Setting CPU affinity of app to " + numOfCores + " 
core(s)");
+        String listOfCores = "0-" + (numOfCores - 1);
+        String processId = String.valueOf(runInfo.getProcess().pid());
+        ProcessBuilder pBuilder = new ProcessBuilder("taskset", "-cpa", 
listOfCores, processId);
+        pBuilder.redirectErrorStream(true);
+        Process p = pBuilder.start();
+        try (BufferedReader bufferedReader = new BufferedReader(new 
InputStreamReader(p.getInputStream()))) {
+            String newCPUAffinity = bufferedReader.lines()
+                    .filter(s -> s.contains("new affinity list"))
+                    .findFirst()
+                    .orElseThrow(() -> new RuntimeException("New CPU Affinity 
not set!"));
+            String expectedAffinityList = numOfCores == 1 ? "0" : numOfCores 
== 2 ? "0,1" : listOfCores;
+            
Assertions.assertThat(newCPUAffinity).contains(expectedAffinityList);
+            p.waitFor();
+        }
+        Assertions.assertThat(p.exitValue()).isEqualTo(0);
+    }
+
     public static void cleanDirOrFile(String... path) {
         for (String s : path) {
             try {
diff --git 
a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java 
b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 36afca6..a8b9b11 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -37,6 +37,7 @@ import static 
org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
 import static org.kie.kogito.benchmarks.framework.Commands.getRSSkB;
 import static org.kie.kogito.benchmarks.framework.Commands.parsePort;
 import static org.kie.kogito.benchmarks.framework.Commands.processStopper;
+import static org.kie.kogito.benchmarks.framework.Commands.setCPUAffinity;
 import static org.kie.kogito.benchmarks.framework.Commands.startApp;
 import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
 import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
@@ -51,7 +52,7 @@ import static 
org.kie.kogito.benchmarks.framework.Logs.writeReport;
 
 public abstract class AbstractTemplateTest {
 
-    private static final Logger LOGGER = 
Logger.getLogger(StartStopTest.class.getName());
+    private static final Logger LOGGER = 
Logger.getLogger(AbstractTemplateTest.class.getName());
 
     public static final int START_STOP_ITERATIONS = 3;
     public static final String LOCALHOST = "http://localhost:8080";;
@@ -211,6 +212,7 @@ public abstract class AbstractTemplateTest {
 
             // Start the App
             RunInfo runInfo = startApp(app, whatIDidReport);
+            setCPUAffinity(runInfo, 4);
             pA = runInfo.getProcess();
             runLogA = runInfo.getRunLog();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to