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]
