Browse Source

Merge branch 'master' into actframework

Gelin Luo 8 years ago
parent
commit
8dc468de7f

+ 1 - 1
deployment/vagrant-common/bootstrap.sh

@@ -90,7 +90,7 @@ if [ ! -e "~/.firstboot" ]; then
   #else
     # If there is no synced folder, clone the project
     export FWROOT="/home/vagrant/FrameworkBenchmarks"
-    echo FWROOT="/home/vagrant/FrameworkBenchmarks" >> ~/.bashrc
+    echo `export FWROOT="/home/vagrant/FrameworkBenchmarks"` >> ~/.bashrc
     echo "Cloning project from $GH_REPO $GH_BRANCH"
     git config --global core.autocrlf input
     git clone -b ${GH_BRANCH} https://github.com/${GH_REPO}.git $FWROOT

+ 1 - 1
frameworks/Ruby/rack-sequel/Makefile

@@ -1,2 +1,2 @@
 json: benchmark_config.yaml
-	ruby -r json -r yaml -e 'puts JSON.pretty_generate(YAML.load(ARGF.read))' <benchmark_config.yaml >benchmark_config.json
+	ruby benchmark_config.rb benchmark_config.yaml >benchmark_config.json

+ 0 - 46
frameworks/Ruby/rack-sequel/benchmark_config.json

@@ -48,52 +48,6 @@
         "versus": null,
         "notes": ""
       },
-      "puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Stripped",
-        "classification": "Micro",
-        "database": "MySQL",
-        "framework": "rack-sequel",
-        "language": "Ruby",
-        "orm": "Micro",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "rack-sequel-puma-jruby",
-        "versus": "rack-puma-jruby",
-        "notes": ""
-      },
-      "postgres-puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Stripped",
-        "classification": "Micro",
-        "database": "Postgres",
-        "framework": "rack-sequel",
-        "language": "Ruby",
-        "orm": "Micro",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "rack-sequel-postgres-puma-jruby",
-        "versus": null,
-        "notes": ""
-      },
       "passenger-mri": {
         "setup_file": "run_mri_passenger",
         "json_url": "/json",

+ 8 - 0
frameworks/Ruby/rack-sequel/benchmark_config.rb

@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+require 'json'
+require 'yaml'
+
+yaml = YAML.load(ARGF.read)
+yaml["tests"][0].delete_if { |_, v| v["disabled"] }
+puts JSON.pretty_generate(yaml)

+ 2 - 0
frameworks/Ruby/rack-sequel/benchmark_config.yaml

@@ -34,6 +34,7 @@ tests:
       platform: JRuby
       display_name: rack-sequel-puma-jruby
       versus: rack-puma-jruby
+      disabled: true
     postgres-puma-jruby:
       <<: *default
       setup_file: run_jruby_puma
@@ -41,6 +42,7 @@ tests:
       platform: JRuby
       display_name: rack-sequel-postgres-puma-jruby
       versus: ~
+      disabled: true
     passenger-mri:
       <<: *default
       setup_file: run_mri_passenger

+ 6 - 12
frameworks/Ruby/rack-sequel/config/java_tune.sh

@@ -2,23 +2,17 @@
 stack_size=1
 cache_size=240
 meta_size=192
-
-# Factor in Ruby's per-thread overhead...
-avail_mem=$(awk '/^MemAvailable/ { print int(0.7 * $2 / 1024) - ( \
-  $ENVIRON["MAX_CONCURRENCY"] * $ENVIRON["THREAD_FACTOR"] \
-); exit }' /proc/meminfo)
-
-# ...as well as Java's per-thread stack size.
-heap_size=$(( avail_mem - meta_size - cache_size - (
-  stack_size * MAX_CONCURRENCY * THREAD_FACTOR
-) ))
+avail_mem=$(awk '/^MemAvailable/ { print int(0.6 * $2 / 1024); exit }' /proc/meminfo)
+heap_size=$(( avail_mem - meta_size - cache_size - (stack_size * MAX_CONCURRENCY * THREAD_FACTOR) ))
 
 JRUBY_OPTS="-J-server -J-XX:+AggressiveOpts -J-Djava.net.preferIPv4Stack=true"
-JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
-#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=100"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
+JRUBY_OPTS="$JRUBY_OPTS -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:+UseStringDeduplication"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xms${heap_size}m -J-Xmx${heap_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xss${stack_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:MaxMetaspaceSize=${meta_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:ReservedCodeCacheSize=${cache_size}m"
+#JRUBY_OPTS="$JRUBY_OPTS -Xcompile.invokedynamic=true"
 
 export JRUBY_OPTS

+ 1 - 1
frameworks/Ruby/roda-sequel/Makefile

@@ -1,2 +1,2 @@
 json: benchmark_config.yaml
-	ruby -r json -r yaml -e 'puts JSON.pretty_generate(YAML.load(ARGF.read))' <benchmark_config.yaml >benchmark_config.json
+	ruby benchmark_config.rb benchmark_config.yaml >benchmark_config.json

+ 0 - 46
frameworks/Ruby/roda-sequel/benchmark_config.json

@@ -48,52 +48,6 @@
         "versus": "rack-sequel-postgres-puma-mri",
         "notes": ""
       },
-      "puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Micro",
-        "database": "MySQL",
-        "framework": "roda-sequel",
-        "language": "Ruby",
-        "orm": "Full",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "roda-sequel-puma-jruby",
-        "versus": "rack-sequel-puma-jruby",
-        "notes": ""
-      },
-      "postgres-puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Micro",
-        "database": "Postgres",
-        "framework": "roda-sequel",
-        "language": "Ruby",
-        "orm": "Full",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "roda-sequel-postgres-puma-jruby",
-        "versus": "rack-sequel-postgres-puma-jruby",
-        "notes": ""
-      },
       "passenger-mri": {
         "setup_file": "run_mri_passenger",
         "json_url": "/json",

+ 8 - 0
frameworks/Ruby/roda-sequel/benchmark_config.rb

@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+require 'json'
+require 'yaml'
+
+yaml = YAML.load(ARGF.read)
+yaml["tests"][0].delete_if { |_, v| v["disabled"] }
+puts JSON.pretty_generate(yaml)

+ 2 - 0
frameworks/Ruby/roda-sequel/benchmark_config.yaml

@@ -34,6 +34,7 @@ tests:
       platform: JRuby
       display_name: roda-sequel-puma-jruby
       versus: rack-sequel-puma-jruby
+      disabled: true
     postgres-puma-jruby:
       <<: *default
       setup_file: run_jruby_puma
@@ -41,6 +42,7 @@ tests:
       platform: JRuby
       display_name: roda-sequel-postgres-puma-jruby
       versus: rack-sequel-postgres-puma-jruby
+      disabled: true
     passenger-mri:
       <<: *default
       setup_file: run_mri_passenger

+ 6 - 12
frameworks/Ruby/roda-sequel/config/java_tune.sh

@@ -2,23 +2,17 @@
 stack_size=1
 cache_size=240
 meta_size=192
-
-# Factor in Ruby's per-thread overhead...
-avail_mem=$(awk '/^MemAvailable/ { print int(0.7 * $2 / 1024) - ( \
-  $ENVIRON["MAX_CONCURRENCY"] * $ENVIRON["THREAD_FACTOR"] \
-); exit }' /proc/meminfo)
-
-# ...as well as Java's per-thread stack size.
-heap_size=$(( avail_mem - meta_size - cache_size - (
-  stack_size * MAX_CONCURRENCY * THREAD_FACTOR
-) ))
+avail_mem=$(awk '/^MemAvailable/ { print int(0.6 * $2 / 1024); exit }' /proc/meminfo)
+heap_size=$(( avail_mem - meta_size - cache_size - (stack_size * MAX_CONCURRENCY * THREAD_FACTOR) ))
 
 JRUBY_OPTS="-J-server -J-XX:+AggressiveOpts -J-Djava.net.preferIPv4Stack=true"
-JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
-#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=100"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
+JRUBY_OPTS="$JRUBY_OPTS -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:+UseStringDeduplication"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xms${heap_size}m -J-Xmx${heap_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xss${stack_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:MaxMetaspaceSize=${meta_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:ReservedCodeCacheSize=${cache_size}m"
+#JRUBY_OPTS="$JRUBY_OPTS -Xcompile.invokedynamic=true"
 
 export JRUBY_OPTS

+ 1 - 1
frameworks/Ruby/sinatra-sequel/Makefile

@@ -1,2 +1,2 @@
 json: benchmark_config.yaml
-	ruby -r json -r yaml -e 'puts JSON.pretty_generate(YAML.load(ARGF.read))' <benchmark_config.yaml >benchmark_config.json
+	ruby benchmark_config.rb benchmark_config.yaml >benchmark_config.json

+ 0 - 46
frameworks/Ruby/sinatra-sequel/benchmark_config.json

@@ -48,52 +48,6 @@
         "versus": "rack-sequel-postgres-puma-mri",
         "notes": ""
       },
-      "puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Micro",
-        "database": "MySQL",
-        "framework": "sinatra-sequel",
-        "language": "Ruby",
-        "orm": "Full",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "sinatra-sequel-puma-jruby",
-        "versus": "rack-sequel-puma-jruby",
-        "notes": ""
-      },
-      "postgres-puma-jruby": {
-        "setup_file": "run_jruby_puma",
-        "json_url": "/json",
-        "db_url": "/db",
-        "query_url": "/queries?queries=",
-        "fortune_url": "/fortunes",
-        "update_url": "/updates?queries=",
-        "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Micro",
-        "database": "Postgres",
-        "framework": "sinatra-sequel",
-        "language": "Ruby",
-        "orm": "Full",
-        "platform": "JRuby",
-        "webserver": "Puma",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "sinatra-sequel-postgres-puma-jruby",
-        "versus": "rack-sequel-postgres-puma-jruby",
-        "notes": ""
-      },
       "passenger-mri": {
         "setup_file": "run_mri_passenger",
         "json_url": "/json",

+ 8 - 0
frameworks/Ruby/sinatra-sequel/benchmark_config.rb

@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+require 'json'
+require 'yaml'
+
+yaml = YAML.load(ARGF.read)
+yaml["tests"][0].delete_if { |_, v| v["disabled"] }
+puts JSON.pretty_generate(yaml)

+ 2 - 0
frameworks/Ruby/sinatra-sequel/benchmark_config.yaml

@@ -34,6 +34,7 @@ tests:
       platform: JRuby
       display_name: sinatra-sequel-puma-jruby
       versus: rack-sequel-puma-jruby
+      disabled: true
     postgres-puma-jruby:
       <<: *default
       setup_file: run_jruby_puma
@@ -41,6 +42,7 @@ tests:
       platform: JRuby
       display_name: sinatra-sequel-postgres-puma-jruby
       versus: rack-sequel-postgres-puma-jruby
+      disabled: true
     passenger-mri:
       <<: *default
       setup_file: run_mri_passenger

+ 6 - 12
frameworks/Ruby/sinatra-sequel/config/java_tune.sh

@@ -2,23 +2,17 @@
 stack_size=1
 cache_size=240
 meta_size=192
-
-# Factor in Ruby's per-thread overhead...
-avail_mem=$(awk '/^MemAvailable/ { print int(0.7 * $2 / 1024) - ( \
-  $ENVIRON["MAX_CONCURRENCY"] * $ENVIRON["THREAD_FACTOR"] \
-); exit }' /proc/meminfo)
-
-# ...as well as Java's per-thread stack size.
-heap_size=$(( avail_mem - meta_size - cache_size - (
-  stack_size * MAX_CONCURRENCY * THREAD_FACTOR
-) ))
+avail_mem=$(awk '/^MemAvailable/ { print int(0.6 * $2 / 1024); exit }' /proc/meminfo)
+heap_size=$(( avail_mem - meta_size - cache_size - (stack_size * MAX_CONCURRENCY * THREAD_FACTOR) ))
 
 JRUBY_OPTS="-J-server -J-XX:+AggressiveOpts -J-Djava.net.preferIPv4Stack=true"
-JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
-#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=100"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
+JRUBY_OPTS="$JRUBY_OPTS -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:+UseStringDeduplication"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xms${heap_size}m -J-Xmx${heap_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xss${stack_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:MaxMetaspaceSize=${meta_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:ReservedCodeCacheSize=${cache_size}m"
+#JRUBY_OPTS="$JRUBY_OPTS -Xcompile.invokedynamic=true"
 
 export JRUBY_OPTS

+ 6 - 12
frameworks/Ruby/sinatra/config/java_tune.sh

@@ -2,23 +2,17 @@
 stack_size=1
 cache_size=240
 meta_size=192
-
-# Factor in Ruby's per-thread overhead...
-avail_mem=$(awk '/^MemAvailable/ { print int(0.7 * $2 / 1024) - ( \
-  $ENVIRON["MAX_CONCURRENCY"] * $ENVIRON["THREAD_FACTOR"] \
-); exit }' /proc/meminfo)
-
-# ...as well as Java's per-thread stack size.
-heap_size=$(( avail_mem - meta_size - cache_size - (
-  stack_size * MAX_CONCURRENCY * THREAD_FACTOR
-) ))
+avail_mem=$(awk '/^MemAvailable/ { print int(0.6 * $2 / 1024); exit }' /proc/meminfo)
+heap_size=$(( avail_mem - meta_size - cache_size - (stack_size * MAX_CONCURRENCY * THREAD_FACTOR) ))
 
 JRUBY_OPTS="-J-server -J-XX:+AggressiveOpts -J-Djava.net.preferIPv4Stack=true"
-JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
-#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=100"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseSerialGC"
+JRUBY_OPTS="$JRUBY_OPTS -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC"
+#JRUBY_OPTS="$JRUBY_OPTS -J-XX:+UseG1GC -J-XX:+UseStringDeduplication"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xms${heap_size}m -J-Xmx${heap_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-Xss${stack_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:MaxMetaspaceSize=${meta_size}m"
 JRUBY_OPTS="$JRUBY_OPTS -J-XX:ReservedCodeCacheSize=${cache_size}m"
+#JRUBY_OPTS="$JRUBY_OPTS -Xcompile.invokedynamic=true"
 
 export JRUBY_OPTS

+ 2 - 2
toolset/setup/linux/languages/ruby/ruby-2.2.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends llvm-dev rvm
+fw_depends llvm-dev libjemalloc-dev rvm
 
 fw_installed ruby-2.2 && return 0
 
@@ -8,7 +8,7 @@ fw_installed ruby-2.2 && return 0
 # update this when it changes
 MRI_VERSION=2.2.6
 
-rvm install $MRI_VERSION
+rvm install $MRI_VERSION -C --with-jemalloc
 
 rvm $MRI_VERSION do gem install bundler -v 1.14.3
 

+ 2 - 2
toolset/setup/linux/languages/ruby/ruby-2.4.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends llvm-dev rvm
+fw_depends llvm-dev libjemalloc-dev rvm
 
 fw_installed ruby-2.4 && return 0
 
@@ -8,7 +8,7 @@ fw_installed ruby-2.4 && return 0
 # update this when it changes
 MRI_VERSION=2.4.0
 
-rvm install $MRI_VERSION
+rvm install $MRI_VERSION -C --with-jemalloc
 
 rvm $MRI_VERSION do gem install bundler -v 1.14.3