[ https://issues.apache.org/jira/browse/GEODE-6084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Smith updated GEODE-6084: ----------------------------- Description: We currently have a test PartitionedPutBenchmark class, but this has all threads updating the same integer key. We need to turn this into a real, reasonable benchmark of puts for Geode. This is the configuration we want to go for: *Workload time* As long as we need to get reasonable stddev numbers, targeting around 5 minutes or less. *Topology* Client/server, with single hop enabled and no SSL *Data* * PDX object with around a 1K serialized size. * Uniformly and randomly accessed/updated * as many entries as we can reasonably populate for a 5 minute test. Long or small string keys. * The data should be pre-populated before the workload starts. *Scale* * 4 servers, enough clients and threads to be utilizing 50-100% of the critical resource (CPU, network?) *Region Config* Create a test for both 1. Partitioned Region with redundancy 1 2. Replicated Regions *Geode Tuning* We should use Geode and JVM tuning parameters tuned for performance. This includes *Geode properties* {noformat} eviction-heap-percentage=65 critical-heap-percentage=90 archive-disk-space-limit=150 archive-file-size-limit=10 conserve-sockets=false enable-time-statistics=true jmx-manager=true jmx-manager-port=1099 jmx-manager-start=true jmx-manager-update-rate=2000 locator-wait-time=120 log-disk-space-limit=100 log-file-size-limit=10 log-level=config remove-unresponsive-client=true statistic-archive-file=XXXX statistic-sample-rate=1000 statistic-sampling-enabled=true log-file=XXXX distributed-system-id=0 {noformat} *JVM flags* {noformat} -XX:CMSInitiatingOccupancyFraction=60 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=1M -XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=32768 '-XX:OnOutOfMemoryError='\''kill -9 %p'\''' -XX:+UseNUMA -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark -server -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 -Dgemfire.OSProcess.ENABLE_OUTPUT_REDIRECTION=true -Dgemfire.launcher.registerSignalHandlers=true {noformat} was: We currently have a test PartitionedPutBenchmark class, but this has all threads updating the same integer key. We need to turn this into a real, reasonable benchmark of puts for Geode. This is the configuration we want to go for: *Workload time* As long as we need to get reasonable stddev numbers, targeting around 5 minutes or less. *Topology* Client/server, with single hop enabled and no SSL *Data* * PDX object with around a 1K serialized size. * Uniformly and randomly accessed/updated * as many entries as we can reasonably populate for a 5 minute test. Long or small string keys. * The data should be pre-populated before the workload starts. *Scale* * 4 servers, enough clients and threads to be utilizing 50-100% of the critical resource (CPU, network?) *Region Config* Create a test for both 1. Partitioned Region with redundancy 1 2. Replicated Regions *Geode Tuning* We should use Geode and JVM tuning parameters tuned for performance. This includes *Geode properties* eviction-heap-percentage=65 critical-heap-percentage=90 archive-disk-space-limit=150 archive-file-size-limit=10 conserve-sockets=false enable-time-statistics=true jmx-manager=true jmx-manager-port=1099 jmx-manager-start=true jmx-manager-update-rate=2000 locator-wait-time=120 log-disk-space-limit=100 log-file-size-limit=10 log-level=config remove-unresponsive-client=true statistic-archive-file=XXXX statistic-sample-rate=1000 statistic-sampling-enabled=true log-file=XXXX distributed-system-id=0 *JVM flags* {noformat} -XX:CMSInitiatingOccupancyFraction=60 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=1M -XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=32768 '-XX:OnOutOfMemoryError='\''kill -9 %p'\''' -XX:+UseNUMA -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark -server -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 -Dgemfire.OSProcess.ENABLE_OUTPUT_REDIRECTION=true -Dgemfire.launcher.registerSignalHandlers=true {noformat} > Create real put benchmark for PDX values > ---------------------------------------- > > Key: GEODE-6084 > URL: https://issues.apache.org/jira/browse/GEODE-6084 > Project: Geode > Issue Type: New Feature > Components: benchmarks > Reporter: Dan Smith > Priority: Major > Labels: 3_points > > We currently have a test PartitionedPutBenchmark class, but this has all > threads updating the same integer key. We need to turn this into a real, > reasonable benchmark of puts for Geode. > This is the configuration we want to go for: > *Workload time* > As long as we need to get reasonable stddev numbers, targeting around 5 > minutes or less. > *Topology* > Client/server, with single hop enabled and no SSL > *Data* > * PDX object with around a 1K serialized size. > * Uniformly and randomly accessed/updated > * as many entries as we can reasonably populate for a 5 minute test. Long or > small string keys. > * The data should be pre-populated before the workload starts. > *Scale* > * 4 servers, enough clients and threads to be utilizing 50-100% of the > critical resource (CPU, network?) > *Region Config* > Create a test for both > 1. Partitioned Region with redundancy 1 > 2. Replicated Regions > *Geode Tuning* > We should use Geode and JVM tuning parameters tuned for performance. This > includes > > *Geode properties* > {noformat} > eviction-heap-percentage=65 > critical-heap-percentage=90 > archive-disk-space-limit=150 > archive-file-size-limit=10 > conserve-sockets=false > enable-time-statistics=true > jmx-manager=true > jmx-manager-port=1099 > jmx-manager-start=true > jmx-manager-update-rate=2000 > locator-wait-time=120 > log-disk-space-limit=100 > log-file-size-limit=10 > log-level=config > remove-unresponsive-client=true > statistic-archive-file=XXXX > statistic-sample-rate=1000 > statistic-sampling-enabled=true > log-file=XXXX > distributed-system-id=0 > {noformat} > *JVM flags* > {noformat} > -XX:CMSInitiatingOccupancyFraction=60 > -XX:+PrintGCDetails > -XX:+PrintGCTimeStamps > -XX:+PrintGCDateStamps > -XX:+PrintGCApplicationStoppedTime > -XX:+PrintGCApplicationConcurrentTime > -XX:+UseGCLogFileRotation > -XX:NumberOfGCLogFiles=20 > -XX:GCLogFileSize=1M > -XX:+UnlockDiagnosticVMOptions > -XX:ParGCCardsPerStrideChunk=32768 > '-XX:OnOutOfMemoryError='\''kill -9 %p'\''' > -XX:+UseNUMA > -XX:+UseConcMarkSweepGC > -XX:+UseCMSInitiatingOccupancyOnly > -XX:+CMSClassUnloadingEnabled > -XX:+DisableExplicitGC > -XX:+ScavengeBeforeFullGC > -XX:+CMSScavengeBeforeRemark > -server > -Djava.awt.headless=true > -Dsun.rmi.dgc.server.gcInterval=9223372036854775806 > -Dgemfire.OSProcess.ENABLE_OUTPUT_REDIRECTION=true > -Dgemfire.launcher.registerSignalHandlers=true > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)