[
https://issues.apache.org/jira/browse/GEODE-2632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973056#comment-15973056
]
ASF GitHub Bot commented on GEODE-2632:
---------------------------------------
Github user galen-pivotal commented on a diff in the pull request:
https://github.com/apache/geode/pull/450#discussion_r112005541
--- Diff:
geode-core/src/jmh/java/org/apache/geode/internal/cache/tier/sockets/command/ClientCachePutBench.java
---
@@ -0,0 +1,233 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license
+ * agreements. See the NOTICE file distributed with this work for
additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
ANY KIND, either express
+ * or implied. See the License for the specific language governing
permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.internal.cache.tier.sockets.command;
+
+import static java.lang.System.*;
+import static java.util.concurrent.TimeUnit.*;
+import static org.apache.commons.io.FileUtils.*;
+import static org.apache.commons.lang.StringUtils.*;
+import static org.apache.geode.cache.client.ClientRegionShortcut.*;
+import static org.apache.geode.distributed.AbstractLauncher.Status.*;
+import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.internal.DistributionConfig.*;
+import static org.apache.geode.internal.AvailablePort.*;
+import static org.apache.geode.test.dunit.NetworkUtils.*;
+import static org.assertj.core.api.Assertions.*;
+import static org.awaitility.Awaitility.*;
+
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.distributed.ServerLauncher;
+import org.apache.geode.internal.process.ProcessStreamReader;
+import org.junit.rules.TemporaryFolder;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Benchmark that measures throughput of single-threaded client performing
puts to a loner server.
+ * <p>
+ * 100 random keys and values are generated during setup and the client
reuses these in order,
+ * looping back around after 100 puts.
+ */
+@Measurement(iterations = 3, time = 2, timeUnit = MINUTES)
+@Warmup(iterations = 1, time = 1, timeUnit = MINUTES)
+@Fork(3)
+@BenchmarkMode(Mode.Throughput)
+@OutputTimeUnit(TimeUnit.SECONDS)
+@State(Scope.Thread)
+@SuppressWarnings("unused")
+public class ClientCachePutBench {
+
+ static final String CLASS_NAME =
ClientCachePutBench.class.getSimpleName();
+ static final String PACKAGE_NAME =
+ replace(ClientCachePutBench.class.getPackage().getName(), ".", "/");
+ static final String REGION_NAME = CLASS_NAME + "-region";
+ static final String SERVER_XML_NAME = "/" + PACKAGE_NAME + "/" +
CLASS_NAME + "-server.xml";
+ static final long PROCESS_READER_TIMEOUT = 60 * 1000;
+ static final int NUMBER_OF_KEYS = 100;
+ static final int NUMBER_OF_VALUES = 100;
+
+ @State(Scope.Benchmark)
+ public static class ClientState {
+
+ Region<String, String> region;
+
+ String[] keys;
+ String[] values;
+
+ private int keyIndex = -1;
+ private int valueIndex = -1;
+
+ private Process process;
+ private volatile ProcessStreamReader processOutReader;
+ private volatile ProcessStreamReader processErrReader;
+
+ private int serverPort;
+ private ServerLauncher launcher;
+ private File serverDirectory;
+ private ClientCache clientCache;
+
+ private TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Setup(Level.Trial)
+ public void startServer() throws Exception {
+ System.out.println("\n" + "[ClientCachePutBench] startServer");
+
+ Random random = new Random(nanoTime());
+ this.keys = createStrings("KEY-", NUMBER_OF_KEYS, random);
+ this.values = createStrings("VAL-", NUMBER_OF_VALUES, random);
+
+ this.temporaryFolder.create();
+ this.serverDirectory = this.temporaryFolder.getRoot();
+
+ this.serverPort = getRandomAvailablePort(SOCKET);
+ this.process = startServerProcess(this.serverDirectory,
this.serverPort);
+
+ try {
+ startProcessReaders(this.process);
+
+ ServerLauncher serverLauncher = new ServerLauncher.Builder()
+
.setWorkingDirectory(this.serverDirectory.getAbsolutePath()).build();
+
+ await("Starting server in " + this.serverDirectory).atMost(2,
MINUTES)
+ .until(() ->
assertThat(serverLauncher.status().getStatus()).isEqualTo(ONLINE));
+
+ this.clientCache = new ClientCacheFactory().set(LOG_LEVEL, "warn")
+ .addPoolServer(getIPLiteral(), this.serverPort).create();
+ this.region =
+ this.clientCache.<String,
String>createClientRegionFactory(PROXY).create(REGION_NAME);
+
+ } finally {
+ stopProcessReaders(PROCESS_READER_TIMEOUT);
--- End diff --
I may be misreading this, but are we tearing down the process readers
before we actually start the benchmark?
> Integrated Security performance improvements
> --------------------------------------------
>
> Key: GEODE-2632
> URL: https://issues.apache.org/jira/browse/GEODE-2632
> Project: Geode
> Issue Type: Improvement
> Components: security
> Reporter: Jinmei Liao
> Assignee: Kirk Lund
> Labels: performance
>
> There is a security check in Put65.cmdExecute() that, if removed, improved
> the performance.
> The expense of this security call needs to be reduced in order to get the
> performance back.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)