├── .gitignore
├── Gemfile
├── LICENSE
├── README.md
├── barrage.gemspec
├── barrage.jpg
├── bin
└── barrage
├── lib
├── barrage.rb
└── barrage
│ ├── commandline.rb
│ ├── cpu.rb
│ ├── dstat.rb
│ ├── gnuplot_plotter.rb
│ ├── imgur.rb
│ ├── memory.rb
│ ├── network.rb
│ ├── program.rb
│ └── version.rb
├── playbooks
└── haywire
│ ├── README.md
│ ├── config.yaml
│ ├── hosts
│ ├── playbook.yaml
│ └── template.erb
└── tools
├── barrage
└── samples
│ └── stats_1444187956.csv
└── wrk
└── samples
└── out.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | *.rbc
3 | /.config
4 | /coverage/
5 | /InstalledFiles
6 | /pkg/
7 | /spec/reports/
8 | /test/tmp/
9 | /test/version_tmp/
10 | /tmp/
11 |
12 | ## Specific to RubyMotion:
13 | .dat*
14 | .repl_history
15 | build/
16 |
17 | ## Documentation cache and generated files:
18 | /.yardoc/
19 | /_yardoc/
20 | /doc/
21 | /rdoc/
22 |
23 | ## Environment normalisation:
24 | /.bundle/
25 | /vendor/bundle
26 | /lib/bundler/man/
27 |
28 | # for a library or gem, you might want to ignore these files since the code is
29 | # intended to run in multiple environments; otherwise, check them in:
30 | # Gemfile.lock
31 | # .ruby-version
32 | # .ruby-gemset
33 |
34 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35 | .rvmrc
36 | output
37 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | # Specify your gem's dependencies in barrage.gemspec
4 | gemspec
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
203 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Barrage
3 | Barrage is a benchmarking tool and has the goal to fill the following roles.
4 |
5 | - Orchestrate running the benchmark on the server and client(s).
6 | - Collect benchmark statistics (requests per second and latency distribution).
7 | - Collect hardware and OS statistics (CPU, memory, disk, network, etc).
8 | - Generate graphs.
9 |
10 | There are 3 system roles in Barrage.
11 | - Orchestrator
12 | - Server
13 | - Clients
14 |
15 | # Ideas
16 | My initial thought is Barrage will have an agent and orchestrator mode. Once the benchmark run is complete it will post the benchmark details to a Gist on GitHub including the graphs.
17 |
18 | # Prerequisites
19 | - **Orchestrator**
20 | Ubuntu `subo apt-get install ansible`
21 | Mac `brew install ansible`
22 |
23 | - **Server**
24 | Ubuntu
25 | ```
26 | sudo apt-get install dstat gnuplot xclip
27 | gem install bundler
28 | ```
29 |
30 | # Installing
31 | ```
32 | gem install barrage_bench
33 | ```
34 |
35 | # Running
36 | ```
37 | barrage benchmark playbooks/haywire
38 | ```
39 |
40 | # Available playbooks
41 | [Haywire](playbooks/haywire)
42 |
--------------------------------------------------------------------------------
/barrage.gemspec:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 | lib = File.expand_path('../lib', __FILE__)
3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4 | require 'barrage/version'
5 |
6 | Gem::Specification.new do |spec|
7 | spec.name = "barrage_bench"
8 | spec.summary = 'A benchmarking tool to make benchmarking and collecting statistics from the run and system hardware simple'
9 | spec.description = 'see summary'
10 | spec.version = Barrage::VERSION
11 | spec.authors = ["kellabyte"]
12 | spec.email = ["kell.sommers@gmail.com"]
13 | spec.homepage = "http://github.com/kellabyte/barrage"
14 | spec.license = "Apache 2.0"
15 |
16 | spec.files = `git ls-files -z`.split("\x0")
17 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18 | spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19 | spec.require_paths = ["lib"]
20 |
21 | spec.add_runtime_dependency 'thor'
22 | spec.add_runtime_dependency 'gnuplot'
23 | spec.add_runtime_dependency 'imgurr'
24 | spec.add_runtime_dependency 'erubis'
25 |
26 | spec.add_development_dependency "bundler", "~> 1.7"
27 | spec.add_development_dependency "rake", "~> 10.0"
28 | end
29 |
--------------------------------------------------------------------------------
/barrage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kellabyte/barrage/a74031c7ec2e458ebbb24d4f0908a10d5f1ef27f/barrage.jpg
--------------------------------------------------------------------------------
/bin/barrage:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require 'barrage'
3 | Barrage::Program.run(ARGV)
--------------------------------------------------------------------------------
/lib/barrage.rb:
--------------------------------------------------------------------------------
1 | module Barrage
2 | class Error < StandardError; end
3 | end
4 |
5 | require "barrage/version"
6 | require "barrage/program"
--------------------------------------------------------------------------------
/lib/barrage/commandline.rb:
--------------------------------------------------------------------------------
1 | require "erubis"
2 | require "thor"
3 | require "imgurr"
4 | require_relative "dstat"
5 | require_relative "gnuplot_plotter"
6 | require_relative "imgur"
7 |
8 | class Commandline < Thor
9 | @@dstat_pid = 0
10 | def self.dstat_pid
11 | @@dstat_pid
12 | end
13 | @@unique_id = ""
14 | def self.unique_id
15 | @@unique_id
16 | end
17 |
18 | @@dstat_file = ""
19 | def self.dstat_file
20 | @@dstat_file
21 | end
22 |
23 | @@image_file = ""
24 | def self.image_file
25 | @@image_file
26 | end
27 |
28 | desc "capture", "Capture and plot dstat output"
29 | def capture
30 | @@unique_id = "#{Time.now.getutc.to_i}"
31 | @@dstat_file = "output/stats_#{@@unique_id}.csv"
32 | @@image_file = "output/results_#{@@unique_id}.png"
33 | Dir.mkdir("output") unless File.exists?("output")
34 |
35 | @@dstat_pid = Dstat.run(@@dstat_file)
36 | puts "\nPress CTRL-C to exit\n\n"
37 | trap("INT") { Commandline.kill(@@dstat_pid) }
38 | Signal.trap("TERM") { Commandline.kill(@@dstat_pid) }
39 | $stdin.read
40 | end
41 |
42 | desc "plot [FILE]", "Plot graphs from dstat [FILE]"
43 | def plot(file)
44 | @@dstat_file = file
45 | @@image_file = "#{File.dirname(file)}/#{File.basename(file,'.*')}.png"
46 | Commandline.plot
47 | Commandline.upload
48 | end
49 |
50 | desc "benchmark [PLAYBOOK PATH]", "Playbook benchmark to run"
51 | def benchmark(path)
52 | inventory_file = File.join(path, "hosts")
53 | playbook_file = File.join(path, "playbook.yaml")
54 | unique_id = "#{Time.now.getutc.to_i}"
55 |
56 | output = ""
57 | IO.popen("ansible-playbook -vvvv -k -i #{inventory_file} #{playbook_file}") do |io|
58 | while (line = io.gets) do
59 | output.concat(line)
60 | end
61 | end
62 |
63 | locals = { output:output }
64 | input = File.read("#{path}/template.erb")
65 | result = Erubis::Eruby.new(input).result(locals)
66 | puts result
67 |
68 | Dir.mkdir("#{path}/results/") unless File.exists?("#{path}/results/")
69 | File.write("#{path}/results/#{unique_id}.md", result)
70 | end
71 |
72 | private
73 |
74 | def self.plot
75 | puts "Plotting..."
76 | GnuPlotPlotter.plot(Commandline.dstat_file, Commandline.image_file)
77 | end
78 |
79 | def self.upload
80 | puts "Uploading..."
81 | Imgur.upload(@@image_file)
82 | end
83 |
84 | def self.kill(pid)
85 | if pid > 0
86 | Process.kill "QUIT", pid
87 | end
88 |
89 | plot
90 | upload
91 | exit(0)
92 | end
93 | end
94 |
--------------------------------------------------------------------------------
/lib/barrage/cpu.rb:
--------------------------------------------------------------------------------
1 | require "gnuplot"
2 | require_relative 'dstat'
3 |
4 | class CPU
5 | def self.perform(file, plot)
6 | plot.title "CPU Usage"
7 | plot.xlabel "time (seconds)"
8 | plot.ylabel "percent"
9 | #plot.yrange "[0:100]"
10 | plot.pointsize "0.5"
11 |
12 | parsed = Dstat.parse(file, 1)
13 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
14 | ds.title = "usr"
15 | ds.with = "filledcurve linetype 7"
16 | ds.linewidth = 2
17 | end
18 |
19 | parsed = Dstat.parse(file, 2)
20 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
21 | ds.title = "sys"
22 | ds.with = "filledcurve linetype 3"
23 | ds.linewidth = 2
24 | end
25 |
26 | parsed = Dstat.parse(file, 4)
27 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
28 | ds.title = "iowait"
29 | ds.with = "filledcurve linetype 5"
30 | ds.linewidth = 2
31 | end
32 | end
33 | end
34 |
--------------------------------------------------------------------------------
/lib/barrage/dstat.rb:
--------------------------------------------------------------------------------
1 | require "csv"
2 |
3 | class Dstat
4 | def self.run(dstat_file)
5 | pid = fork do
6 | cmd = "dstat -tcmrd --disk-util -ny --output #{dstat_file}"
7 | exec(cmd)
8 | end
9 | return pid
10 | end
11 |
12 | def self.parse(file, column)
13 | time = []
14 | values = []
15 |
16 | start_parsing = false
17 | count = 0
18 | CSV.foreach(file) do |row|
19 |
20 | if start_parsing
21 | time.push(count - 7)
22 | values.push(row[column])
23 | end
24 |
25 | if !start_parsing && count == 7
26 | start_parsing = true
27 | end
28 |
29 | count += 1
30 | end
31 |
32 | return time, values
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/lib/barrage/gnuplot_plotter.rb:
--------------------------------------------------------------------------------
1 | require "gnuplot"
2 | require "csv"
3 |
4 | class GnuPlotPlotter
5 | def self.percentile(values, percentile)
6 | values_sorted = values.sort
7 | k = (percentile*(values_sorted.length-1)+1).floor - 1
8 | f = (percentile*(values_sorted.length-1)+1).modulo(1)
9 |
10 | return values_sorted[k] + (f * (values_sorted[k+1] - values_sorted[k]))
11 | end
12 |
13 | def self.template(plot)
14 | plot.multiplot "layout 2,2"
15 | plot.object '1 rectangle from screen 0,0 to screen 3,3 fillcolor rgb"black" behind'
16 | plot.object '1 rect from graph 0, 0, 0 to graph 1, 1, 0'
17 | plot.object '1 behind lw 1.0 fc rgb "#000000" fillstyle solid 1.00 border lt -1'
18 | plot.key 'outside top center horizontal Right noreverse enhanced autotitles nobox'
19 | plot.key 'samplen 1 spacing 1.0 font "Verdana,16" textcolor rgb "#000000"'
20 | plot.style "fill transparent solid 0.2"
21 | plot.grid
22 | end
23 |
24 | def self.plot(csv_file, image_file)
25 | Gnuplot.open do |gp|
26 | Gnuplot::Plot.new(gp) do |plot|
27 | plot.term "png truecolor enhanced fontscale 1.0 size 1920, 1080 font 'Verdana,16'"
28 | plot.output image_file
29 | self.template(plot)
30 | CPU.perform(csv_file, plot)
31 | end
32 |
33 | Gnuplot::Plot.new(gp) do |plot|
34 | self.template(plot)
35 | Memory.perform(csv_file, plot)
36 | end
37 |
38 | Gnuplot::Plot.new(gp) do |plot|
39 | self.template(plot)
40 | Network.perform(csv_file, plot)
41 | end
42 | end
43 | end
44 | end
45 |
--------------------------------------------------------------------------------
/lib/barrage/imgur.rb:
--------------------------------------------------------------------------------
1 | require "imgurr"
2 |
3 | class Imgur
4 | def self.upload(file)
5 | output = `imgurr upload #{file}`
6 | puts "#{output.split(" ")[1]}"
7 | end
8 | end
9 |
10 |
--------------------------------------------------------------------------------
/lib/barrage/memory.rb:
--------------------------------------------------------------------------------
1 | require "gnuplot"
2 | require_relative 'dstat'
3 |
4 | class Memory
5 | def self.perform(file, plot)
6 | plot.title "Memory Usage"
7 | plot.xlabel "time (seconds)"
8 | plot.ylabel "memory (megabytes)"
9 |
10 | parsed = Dstat.parse(file, 7)
11 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
12 | ds.title = "used"
13 | ds.with = "filledcurve linetype 7"
14 | ds.linewidth = 2
15 | ds.using = "1:(\$2 / 1024**2)"
16 | end
17 |
18 | parsed = Dstat.parse(file, 8)
19 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
20 | ds.title = "buffered"
21 | ds.with = "filledcurve linetype 3"
22 | ds.linewidth = 2
23 | ds.using = "1:(\$2 / 1024**2)"
24 | end
25 |
26 | parsed = Dstat.parse(file, 9)
27 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
28 | ds.title = "cached"
29 | ds.with = "filledcurve linetype 5"
30 | ds.linewidth = 2
31 | ds.using = "1:(\$2 / 1024**2)"
32 | end
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/lib/barrage/network.rb:
--------------------------------------------------------------------------------
1 | require "gnuplot"
2 | require_relative 'dstat'
3 |
4 | class Network
5 | def self.perform(file, plot)
6 | plot.title "Network throughput"
7 | plot.xlabel "time (seconds)"
8 | plot.ylabel "throughput (mbps)"
9 |
10 | parsed = Dstat.parse(file, 16)
11 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
12 | ds.title = "received"
13 | ds.with = "filledcurve linetype 7"
14 | ds.linewidth = 2
15 | ds.using = "1:(\$2 / 125000)"
16 | end
17 |
18 | parsed = Dstat.parse(file, 17)
19 | plot.data << Gnuplot::DataSet.new( [parsed[0], parsed[1]] ) do |ds|
20 | ds.title = "sent"
21 | ds.with = "filledcurve linetype 3"
22 | ds.linewidth = 2
23 | ds.using = "1:(\$2 / 125000)"
24 | end
25 | end
26 | end
27 |
--------------------------------------------------------------------------------
/lib/barrage/program.rb:
--------------------------------------------------------------------------------
1 | require "thor"
2 | require_relative "commandline"
3 | require_relative "gnuplot_plotter"
4 | require_relative "cpu"
5 | require_relative "memory"
6 | require_relative "network"
7 |
8 | module Barrage
9 | class Program
10 | def self.run(argv)
11 | Commandline.start(argv)
12 |
13 | if argv.size > 0 && argv.first != "--help"
14 | Dir.mkdir 'output' unless Dir.exist?('output')
15 |
16 | $stdin.read unless argv.first == "plot" || argv.first == "benchmark"
17 | end
18 | end
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/lib/barrage/version.rb:
--------------------------------------------------------------------------------
1 | module Barrage
2 | VERSION = '0.0.2'
3 | end
4 |
--------------------------------------------------------------------------------
/playbooks/haywire/README.md:
--------------------------------------------------------------------------------
1 | # Haywire barrage benchmark
2 | This playbook does the following sequence:
3 |
4 | #### Server
5 | - Git clone Haywire and its dependencies.
6 | - Compile Haywire and it's dependencies.
7 | - Starts Haywire and listens for HTTP connections.
8 |
9 | #### Client
10 | - Git clone Haywire and its dependencies.
11 | - Compile Haywire and it's dependencies (comes with benchmark tools).
12 | - Run benchmark
13 |
14 | ### Server
15 | - Kills the Haywire process.
16 |
17 | # Configuration
18 | You need to edit the following files to fit your environment.
19 | - `playbooks/haywire/hosts`
20 | - `playbooks/haywire/config.yaml`
21 |
22 | # Running the benchmark
23 | `barrage benchmark playbooks/haywire`
24 |
--------------------------------------------------------------------------------
/playbooks/haywire/config.yaml:
--------------------------------------------------------------------------------
1 | # Server
2 | server_user: user
3 | server_sudo: no
4 | server_ip: "{{ hostvars[groups['server'][0]].inventory_hostname }}"
5 | server_files_destination: ~/barrage_benchmark
6 | server_port: 8000
7 | server_threads: 8
8 |
9 | # Client
10 | client_user: user
11 | client_sudo: no
12 | client_files_destination: ~/barrage_benchmark
13 | client_duration: 60s
14 |
--------------------------------------------------------------------------------
/playbooks/haywire/hosts:
--------------------------------------------------------------------------------
1 | [server]
2 | 127.0.0.1
3 |
4 | [client]
5 | 127.0.0.1
6 |
--------------------------------------------------------------------------------
/playbooks/haywire/playbook.yaml:
--------------------------------------------------------------------------------
1 | - hosts: server
2 | vars_files:
3 | - config.yaml
4 |
5 | user: "{{ server_user }}"
6 | sudo: "{{ server_sudo }}"
7 | gather_facts: no
8 |
9 | tasks:
10 | - name: Clone Barrage
11 | git: repo=https://github.com/kellabyte/barrage.git
12 | dest={{ server_files_destination }}/barrage
13 | - name: Install Barrage
14 | command: chdir={{ server_files_destination }}/barrage bundle install
15 | - name: Clone Haywire
16 | git: repo=https://github.com/kellabyte/haywire.git
17 | dest={{ server_files_destination }}/haywire
18 | - name: Compile Haywire dependencies
19 | command: chdir={{ server_files_destination }}/haywire ./compile_dependencies.sh
20 | - name: Compile Haywire
21 | command: chdir={{ server_files_destination }}/haywire ./compile_make.sh
22 | - name: Run Haywire
23 | command: chdir={{ server_files_destination }}/haywire ./build/hello_world --port {{ server_port }} --threads {{ server_threads }} &
24 | async: 31536000
25 | poll: 0
26 | - name: Create a unique ID
27 | shell: echo "`date +"%Y%m%d%H%M%S"`-$(cat /dev/urandom | tr -cd [:alpha:] | tr '[:upper:]' '[:lower:]' | head -c 4)"
28 | register: unique_id
29 | - name: Creates output directory
30 | file: path={{ server_files_destination }}/barrage/output/ state=directory
31 | - name: Run Barrage capture
32 | shell: dstat -tcmrd --disk-util -ny --output {{ server_files_destination }}/barrage/output/{{ unique_id.stdout }}.csv >/dev/null 2>&1 &
33 |
34 | - hosts: client
35 | vars_files:
36 | - config.yaml
37 |
38 | user: "{{ client_user }}"
39 | sudo: "{{ client_sudo }}"
40 | gather_facts: no
41 |
42 | tasks:
43 | - name: Clone Haywire
44 | git: repo=https://github.com/kellabyte/haywire.git
45 | dest={{ client_files_destination }}/haywire
46 | - name: Compile Haywire dependencies
47 | command: chdir={{ client_files_destination }}/haywire ./compile_dependencies.sh
48 | - pause: seconds=10
49 | - name: Run Wrk benchmark
50 | command: chdir={{ client_files_destination }}/haywire/benchmark ../bin/wrk/wrk --latency -d {{ client_duration }} -t 8 -c 256 http://{{ server_ip }}:{{ server_port }}
51 | - pause: seconds=10
52 | - name: Run Wrk pipelining benchmark
53 | command: chdir={{ client_files_destination }}/haywire/benchmark ../bin/wrk/wrk --script ./pipelined_get.lua --latency -d {{ client_duration }} -t 8 -c 32 http://{{ server_ip }}:{{ server_port }} -- 64
54 |
55 | - hosts: server
56 | vars_files:
57 | - config.yaml
58 |
59 | user: "{{ server_user }}"
60 | sudo: "{{ server_sudo }}"
61 | gather_facts: no
62 |
63 | tasks:
64 | - pause: seconds=10
65 | - name: Kill dstat
66 | command: pkill -f dstat
67 | - name: Kill Haywire
68 | command: killall hello_world
69 | - name: Run Barrage plot
70 | shell: chdir={{ server_files_destination }}/barrage bundle exec bin/barrage plot output/{{ unique_id.stdout }}.csv
71 |
--------------------------------------------------------------------------------
/playbooks/haywire/template.erb:
--------------------------------------------------------------------------------
1 | <%=output.match(/Requests\/sec: (.*)\\n/)[1].to_i%>
2 |
" />
3 |
--------------------------------------------------------------------------------
/tools/barrage/samples/stats_1444187956.csv:
--------------------------------------------------------------------------------
1 | "Dstat 0.7.2 CSV output"
2 | "Author:","Dag Wieers ",,,,"URL:","http://dag.wieers.com/home-made/dstat/"
3 | "Host:","skynet1",,,,"User:","kelly"
4 | "Cmdline:","dstat -tcmrd --disk-util -ny --output output/stats_1444187956.csv",,,,"Date:","06 Oct 2015 23:19:16 EDT"
5 |
6 | "system","total cpu usage",,,,,,"memory usage",,,,"io/total",,"dsk/total",,"sda","net/total",,"system",
7 | "time","usr","sys","idl","wai","hiq","siq","used","buff","cach","free","read","writ","read","writ","util","recv","send","int","csw"
8 | 06-10 23:19:16,0.154,0.038,99.795,0.004,0.000,0.008,744800256.0,531689472.0,4736708608.0,19269640192.0,0.073,0.522,875.492,144936.595,0.070,0.0,0.0,70.636,88.497
9 | 06-10 23:19:17,0.0,0.0,100.0,0.0,0.0,0.0,744792064.0,531689472.0,4736708608.0,19269648384.0,0.0,0.0,0.0,0.0,0.0,648.0,1454.0,41.0,68.0
10 | 06-10 23:19:18,0.125,0.125,99.751,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,426.0,732.0,85.0,125.0
11 | 06-10 23:19:19,0.0,0.0,100.0,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,928.0,596.0,48.0,66.0
12 | 06-10 23:19:20,0.0,0.0,100.0,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,770.0,766.0,45.0,69.0
13 | 06-10 23:19:21,0.125,0.0,99.875,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,14.0,0.0,61440.0,0.0,246.0,666.0,52.0,48.0
14 | 06-10 23:19:22,0.0,0.0,100.0,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,2.0,0.0,36864.0,0.0,140.0,612.0,54.0,78.0
15 | 06-10 23:19:23,0.125,0.0,99.875,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,864.0,748.0,81.0,120.0
16 | 06-10 23:19:24,0.0,0.0,100.0,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,41.0,59.0
17 | 06-10 23:19:25,0.0,0.0,100.0,0.0,0.0,0.0,744894464.0,531689472.0,4736712704.0,19269541888.0,0.0,0.0,0.0,0.0,0.0,140.0,674.0,33.0,42.0
18 | 06-10 23:19:26,0.125,0.0,99.875,0.0,0.0,0.0,744919040.0,531689472.0,4736712704.0,19269517312.0,0.0,0.0,0.0,0.0,0.0,1314.0,1838.0,151.0,289.0
19 | 06-10 23:19:27,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,16.0,0.0,118784.0,0.0,140.0,596.0,82.0,87.0
20 | 06-10 23:19:28,0.125,0.0,99.875,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,426.0,748.0,74.0,121.0
21 | 06-10 23:19:29,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,578.0,596.0,52.0,83.0
22 | 06-10 23:19:30,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,56.0,89.0
23 | 06-10 23:19:31,0.125,0.0,99.875,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,47.0,74.0
24 | 06-10 23:19:32,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,2.0,0.0,12288.0,0.0,578.0,596.0,58.0,98.0
25 | 06-10 23:19:33,0.125,0.0,99.875,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,1.0,0.0,4096.0,0.0,426.0,748.0,84.0,133.0
26 | 06-10 23:19:34,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,140.0,612.0,62.0,103.0
27 | 06-10 23:19:35,0.0,0.0,100.0,0.0,0.0,0.0,745095168.0,531689472.0,4736712704.0,19269341184.0,0.0,0.0,0.0,0.0,0.0,1002.0,702.0,56.0,89.0
28 | 06-10 23:19:36,13.208,2.390,80.126,0.0,0.0,4.277,746016768.0,531689472.0,4736712704.0,19268419584.0,0.0,0.0,0.0,0.0,0.0,19133096.0,66383132.0,6400.0,6158.0
29 | 06-10 23:19:37,36.829,7.161,45.780,0.128,0.0,10.102,746573824.0,531689472.0,4736712704.0,19267862528.0,0.0,2.0,0.0,12288.0,0.400,51701984.0,178308142.0,16498.0,14828.0
30 | 06-10 23:19:38,37.500,7.197,44.823,0.0,0.0,10.480,746639360.0,531689472.0,4736712704.0,19267796992.0,0.0,0.0,0.0,0.0,0.0,51604143.0,177415714.0,16506.0,15349.0
31 | 06-10 23:19:39,39.549,7.885,42.053,0.0,0.0,10.513,747065344.0,531689472.0,4736712704.0,19267371008.0,0.0,1.0,0.0,4096.0,0.0,53542108.0,183442474.0,16219.0,14560.0
32 | 06-10 23:19:40,34.180,9.530,44.473,0.0,0.0,11.817,747294720.0,531689472.0,4736712704.0,19267141632.0,0.0,0.0,0.0,0.0,0.0,52091598.0,178479668.0,16400.0,15320.0
33 | 06-10 23:19:41,35.868,8.872,43.093,0.0,0.0,12.167,747458560.0,531689472.0,4736712704.0,19266977792.0,0.0,0.0,0.0,0.0,0.0,52695380.0,180312270.0,16648.0,15777.0
34 | 06-10 23:19:42,36.178,8.408,43.694,0.0,0.0,11.720,747552768.0,531689472.0,4736716800.0,19266879488.0,0.0,0.0,0.0,0.0,0.0,52276560.0,178198056.0,16503.0,15371.0
35 | 06-10 23:19:43,36.456,8.354,43.671,0.0,0.0,11.519,746668032.0,531689472.0,4736716800.0,19267764224.0,0.0,2.0,0.0,12288.0,0.400,52222578.0,177708428.0,16676.0,15429.0
36 | 06-10 23:19:44,35.659,8.398,43.282,0.0,0.0,12.661,746893312.0,531689472.0,4736716800.0,19267538944.0,0.0,0.0,0.0,0.0,0.0,52897512.0,179971696.0,17173.0,16771.0
37 | 06-10 23:19:45,37.469,9.023,42.356,0.0,0.0,11.153,746401792.0,531689472.0,4736716800.0,19268030464.0,0.0,2.0,0.0,8192.0,0.0,52911954.0,180202690.0,16880.0,15867.0
38 | 06-10 23:19:46,36.573,8.312,42.711,0.0,0.0,12.404,747089920.0,531689472.0,4736716800.0,19267342336.0,0.0,0.0,0.0,0.0,0.0,53140474.0,181073314.0,16828.0,16102.0
39 | 06-10 23:19:47,33.979,8.398,44.057,0.0,0.0,13.566,746369024.0,531689472.0,4736716800.0,19268063232.0,0.0,0.0,0.0,0.0,0.0,52555292.0,178811840.0,16055.0,14608.0
40 | 06-10 23:19:48,36.181,8.668,42.588,0.0,0.0,12.563,747646976.0,531689472.0,4736716800.0,19266785280.0,0.0,0.0,0.0,0.0,0.0,52556674.0,178364584.0,16237.0,14949.0
41 | 06-10 23:19:49,36.929,8.503,42.259,0.0,0.0,12.310,748236800.0,531689472.0,4736716800.0,19266195456.0,0.0,2.0,0.0,20480.0,0.400,53295354.0,180727160.0,16088.0,14638.0
42 | 06-10 23:19:50,35.714,8.418,43.112,0.0,0.0,12.755,746565632.0,531689472.0,4736716800.0,19267866624.0,0.0,0.0,0.0,0.0,0.0,52480002.0,177810448.0,16583.0,15802.0
43 | 06-10 23:19:51,36.607,8.546,41.964,0.0,0.0,12.883,747155456.0,531689472.0,4736716800.0,19267276800.0,0.0,3.0,0.0,12288.0,0.0,53308658.0,180836498.0,16611.0,15672.0
44 | 06-10 23:19:52,36.090,9.524,41.228,0.0,0.0,13.158,747220992.0,531689472.0,4736716800.0,19267211264.0,0.0,0.0,0.0,0.0,0.0,53221758.0,180340496.0,16616.0,15688.0
45 | 06-10 23:19:53,36.444,9.584,40.984,0.0,0.0,12.989,747282432.0,531689472.0,4736716800.0,19267149824.0,0.0,0.0,0.0,0.0,0.0,53370422.0,180873650.0,16724.0,16006.0
46 | 06-10 23:19:54,38.319,8.900,41.409,0.0,0.0,11.372,747282432.0,531689472.0,4736716800.0,19267149824.0,0.0,2.0,0.0,12288.0,0.400,52306300.0,176605914.0,16870.0,16014.0
47 | 06-10 23:19:55,34.839,9.290,42.581,0.0,0.0,13.290,746692608.0,531689472.0,4736716800.0,19267739648.0,0.0,0.0,0.0,0.0,0.0,52699450.0,177586306.0,16941.0,16676.0
48 | 06-10 23:19:56,37.197,8.790,40.510,0.0,0.0,13.503,746889216.0,531689472.0,4736716800.0,19267543040.0,0.0,0.0,0.0,0.0,0.0,53868820.0,181601882.0,16396.0,15892.0
49 | 06-10 23:19:57,36.466,9.148,41.855,0.0,0.0,12.531,747610112.0,531689472.0,4736716800.0,19266822144.0,0.0,1.0,0.0,4096.0,0.0,52439518.0,176862732.0,16566.0,15773.0
50 | 06-10 23:19:58,33.877,10.163,41.907,0.0,0.0,14.053,746364928.0,531689472.0,4736716800.0,19268067328.0,0.0,0.0,0.0,0.0,0.0,52262734.0,175882138.0,16786.0,15872.0
51 | 06-10 23:19:59,37.312,8.668,41.709,0.0,0.0,12.312,746954752.0,531689472.0,4736716800.0,19267477504.0,0.0,2.0,0.0,12288.0,0.400,52427206.0,176778646.0,16796.0,16012.0
52 | 06-10 23:20:00,34.923,9.278,42.268,0.0,0.0,13.531,746496000.0,531689472.0,4736716800.0,19267936256.0,0.0,0.0,0.0,0.0,0.0,52945450.0,178411796.0,16728.0,16326.0
53 | 06-10 23:20:01,36.443,9.204,42.289,0.0,0.0,12.065,746954752.0,531689472.0,4736716800.0,19267477504.0,0.0,0.0,0.0,0.0,0.0,51782530.0,174472856.0,16538.0,15434.0
54 | 06-10 23:20:02,35.101,9.596,41.162,0.0,0.0,14.141,746696704.0,531689472.0,4736753664.0,19267698688.0,0.0,0.0,0.0,0.0,0.0,52694288.0,177834564.0,16936.0,16641.0
55 | 06-10 23:20:03,36.020,8.564,42.317,0.0,0.0,13.098,746926080.0,531689472.0,4736753664.0,19267469312.0,0.0,3.0,0.0,45056.0,0.0,52306028.0,176701858.0,16836.0,16292.0
56 | 06-10 23:20:04,35.287,9.554,43.312,0.127,0.0,11.720,747319296.0,531689472.0,4736753664.0,19267076096.0,0.0,2.0,0.0,24576.0,0.400,51700336.0,174353372.0,16587.0,15608.0
57 | 06-10 23:20:05,33.929,9.056,42.474,0.0,0.0,14.541,746950656.0,531689472.0,4736753664.0,19267444736.0,0.0,0.0,0.0,0.0,0.0,52358942.0,176201108.0,16651.0,15871.0
58 | 06-10 23:20:06,35.623,8.906,42.366,0.0,0.0,13.104,746590208.0,531689472.0,4736753664.0,19267805184.0,0.0,0.0,0.0,0.0,0.0,52541526.0,177262546.0,16817.0,16278.0
59 | 06-10 23:20:07,37.389,8.238,42.839,0.0,0.0,11.534,747139072.0,531689472.0,4736757760.0,19267252224.0,0.0,0.0,0.0,0.0,0.0,52191440.0,175825532.0,16476.0,15502.0
60 | 06-10 23:20:08,35.939,9.079,40.984,0.0,0.0,13.997,746844160.0,531689472.0,4736757760.0,19267547136.0,0.0,0.0,0.0,0.0,0.0,53109080.0,179172364.0,17030.0,16921.0
61 | 06-10 23:20:09,34.097,8.015,43.639,0.0,0.0,14.249,747528192.0,531689472.0,4736757760.0,19266863104.0,0.0,7.0,0.0,32768.0,0.400,51502998.0,173576764.0,16445.0,15663.0
62 | 06-10 23:20:10,36.882,8.619,41.191,0.0,0.0,13.308,746708992.0,531689472.0,4736757760.0,19267682304.0,0.0,0.0,0.0,0.0,0.0,53395492.0,179974252.0,16360.0,15486.0
63 | 06-10 23:20:11,37.875,8.625,40.625,0.0,0.0,12.875,746676224.0,531689472.0,4736757760.0,19267715072.0,0.0,0.0,0.0,0.0,0.0,53152012.0,179393768.0,16870.0,16501.0
64 | 06-10 23:20:12,36.398,8.438,42.443,0.0,0.0,12.720,746610688.0,531689472.0,4736757760.0,19267780608.0,0.0,0.0,0.0,0.0,0.0,52287506.0,176121338.0,16155.0,15178.0
65 | 06-10 23:20:13,36.943,8.917,40.255,0.0,0.0,13.885,746577920.0,531689472.0,4736757760.0,19267813376.0,0.0,0.0,0.0,0.0,0.0,54519614.0,183430418.0,15754.0,14800.0
66 | 06-10 23:20:14,35.496,9.288,41.730,0.0,0.0,13.486,747360256.0,531693568.0,4736757760.0,19267026944.0,0.0,2.0,0.0,20480.0,0.400,52950272.0,178322000.0,16297.0,15302.0
67 | 06-10 23:20:15,36.317,9.591,40.793,0.0,0.0,13.299,746541056.0,531693568.0,4736757760.0,19267846144.0,0.0,3.0,0.0,12288.0,0.0,53923328.0,181667350.0,16369.0,15607.0
68 | 06-10 23:20:16,38.119,8.513,41.804,0.0,0.0,11.563,747130880.0,531693568.0,4736757760.0,19267256320.0,0.0,0.0,0.0,0.0,0.0,53249456.0,179622740.0,15897.0,14430.0
69 | 06-10 23:20:17,37.312,8.668,41.457,0.0,0.0,12.563,746901504.0,531693568.0,4736757760.0,19267485696.0,0.0,0.0,0.0,0.0,0.0,52791490.0,178015080.0,16680.0,16135.0
70 | 06-10 23:20:18,37.674,9.102,42.099,0.0,0.0,11.125,745693184.0,531693568.0,4736757760.0,19268694016.0,0.0,0.0,0.0,0.0,0.0,52616830.0,177312234.0,16295.0,15151.0
71 | 06-10 23:20:19,35.623,8.779,43.003,0.0,0.0,12.595,746643456.0,531693568.0,4736757760.0,19267743744.0,0.0,2.0,0.0,12288.0,0.400,52177298.0,175810896.0,16070.0,14955.0
72 | 06-10 23:20:20,35.949,8.228,43.544,0.0,0.0,12.278,746446848.0,531693568.0,4736757760.0,19267940352.0,0.0,0.0,0.0,0.0,0.0,51230056.0,172595344.0,16654.0,15822.0
73 | 06-10 23:20:21,35.615,8.238,42.205,0.0,0.0,13.942,747495424.0,531693568.0,4736757760.0,19266891776.0,0.0,1.0,0.0,4096.0,0.0,52445212.0,176741434.0,16724.0,15993.0
74 | 06-10 23:20:22,36.444,9.962,40.605,0.0,0.0,12.989,746708992.0,531693568.0,4736757760.0,19267678208.0,0.0,0.0,0.0,0.0,0.0,53550662.0,180728474.0,16496.0,15754.0
75 | 06-10 23:20:23,37.074,9.710,42.623,0.0,0.0,10.593,747003904.0,531693568.0,4736757760.0,19267383296.0,0.0,0.0,0.0,0.0,0.0,51887674.0,174941914.0,16764.0,16057.0
76 | 06-10 23:20:24,37.610,8.931,41.509,0.0,0.0,11.950,746708992.0,531693568.0,4736757760.0,19267678208.0,0.0,0.0,0.0,0.0,0.0,52653878.0,177678526.0,16789.0,16253.0
77 | 06-10 23:20:25,35.787,8.122,43.909,0.0,0.0,12.183,747139072.0,531693568.0,4736757760.0,19267248128.0,0.0,2.0,0.0,16384.0,0.400,51295814.0,172763120.0,16390.0,15396.0
78 | 06-10 23:20:26,34.772,9.264,43.401,0.0,0.0,12.563,746704896.0,531693568.0,4736757760.0,19267682304.0,0.0,0.0,0.0,0.0,0.0,51614898.0,173687996.0,16085.0,14689.0
79 | 06-10 23:20:27,36.157,9.229,42.099,0.0,0.0,12.516,747491328.0,531693568.0,4736757760.0,19266895872.0,0.0,3.0,0.0,12288.0,0.0,52514540.0,176792610.0,16851.0,16160.0
80 | 06-10 23:20:28,37.235,9.091,40.847,0.0,0.0,12.827,747233280.0,531693568.0,4736757760.0,19267153920.0,0.0,0.0,0.0,0.0,0.0,52958486.0,178318598.0,16704.0,15927.0
81 | 06-10 23:20:29,36.272,9.194,41.814,0.0,0.0,12.720,747102208.0,531693568.0,4736757760.0,19267284992.0,0.0,0.0,0.0,0.0,0.0,52427726.0,176709514.0,16418.0,15752.0
82 | 06-10 23:20:30,36.329,8.608,42.911,0.0,0.0,12.152,747102208.0,531693568.0,4736757760.0,19267284992.0,0.0,0.0,0.0,0.0,0.0,51914380.0,174730798.0,16670.0,15867.0
83 | 06-10 23:20:31,35.132,10.038,42.033,0.0,0.0,12.798,746446848.0,531693568.0,4736757760.0,19267940352.0,0.0,2.0,0.0,12288.0,0.400,52113996.0,175359892.0,16782.0,16237.0
84 | 06-10 23:20:32,38.806,8.955,40.672,0.0,0.0,11.567,746246144.0,531693568.0,4736761856.0,19268136960.0,0.0,0.0,0.0,0.0,0.0,53077070.0,178800014.0,16538.0,15785.0
85 | 06-10 23:20:33,35.377,8.812,42.656,0.0,0.0,13.155,746835968.0,531693568.0,4736761856.0,19267547136.0,0.0,2.0,0.0,8192.0,0.0,52437928.0,176402730.0,16507.0,15446.0
86 | 06-10 23:20:34,36.431,10.657,40.892,0.0,0.0,12.020,746246144.0,531693568.0,4736761856.0,19268136960.0,0.0,0.0,0.0,0.0,0.0,52840798.0,177981138.0,16667.0,15806.0
87 | 06-10 23:20:35,35.768,9.194,41.688,0.0,0.0,13.350,746344448.0,531693568.0,4736761856.0,19268038656.0,0.0,0.0,0.0,0.0,0.0,52762892.0,177815974.0,16083.0,15144.0
88 | 06-10 23:20:36,35.488,8.745,42.205,0.0,0.0,13.561,746901504.0,531693568.0,4736761856.0,19267481600.0,0.0,0.0,0.0,0.0,0.0,52416670.0,176839570.0,16807.0,16295.0
89 | 06-10 23:20:37,35.975,9.560,42.013,0.0,0.0,12.453,746381312.0,531693568.0,4736761856.0,19268001792.0,0.0,2.0,0.0,20480.0,0.400,52344888.0,176590862.0,16679.0,15864.0
90 | 06-10 23:20:38,37.848,8.354,42.152,0.0,0.0,11.646,746479616.0,531693568.0,4736761856.0,19267903488.0,0.0,0.0,0.0,0.0,0.0,52644508.0,177233608.0,16596.0,15697.0
91 | 06-10 23:20:39,37.594,9.774,39.975,0.0,0.0,12.657,745852928.0,531693568.0,4736761856.0,19268530176.0,0.0,3.0,0.0,12288.0,0.0,54014596.0,182120512.0,16071.0,14972.0
92 | 06-10 23:20:40,33.718,9.487,44.231,0.0,0.0,12.564,746639360.0,531693568.0,4736761856.0,19267743744.0,0.0,0.0,0.0,0.0,0.0,51461488.0,173168844.0,16263.0,15086.0
93 | 06-10 23:20:41,37.625,9.125,41.875,0.0,0.0,11.375,746803200.0,531693568.0,4736761856.0,19267579904.0,0.0,0.0,0.0,0.0,0.0,52316076.0,176369360.0,16124.0,14813.0
94 | 06-10 23:20:42,33.501,10.414,43.162,0.0,0.0,12.923,746180608.0,531693568.0,4736761856.0,19268202496.0,0.0,0.0,0.0,0.0,0.0,51662492.0,173865228.0,15964.0,14533.0
95 | 06-10 23:20:43,35.939,8.701,42.119,0.0,0.0,13.241,747290624.0,531697664.0,4736761856.0,19267088384.0,0.0,2.0,0.0,12288.0,0.400,52464438.0,176737660.0,16276.0,15198.0
96 | 06-10 23:20:44,33.972,9.451,43.167,0.0,0.0,13.410,746405888.0,531697664.0,4736761856.0,19267973120.0,0.0,0.0,0.0,0.0,0.0,52041170.0,175419550.0,16356.0,15529.0
97 | 06-10 23:20:45,35.544,9.262,42.428,0.0,0.0,12.766,746340352.0,531697664.0,4736761856.0,19268038656.0,0.0,1.0,0.0,4096.0,0.0,51910718.0,175167260.0,16485.0,15356.0
98 | 06-10 23:20:46,36.432,9.673,41.960,0.0,0.0,11.935,746995712.0,531697664.0,4736761856.0,19267383296.0,0.0,0.0,0.0,0.0,0.0,52562154.0,176970572.0,16124.0,14956.0
99 | 06-10 23:20:47,34.821,9.821,41.837,0.0,0.0,13.520,746799104.0,531697664.0,4736761856.0,19267579904.0,0.0,0.0,0.0,0.0,0.0,53160830.0,179163096.0,16294.0,15513.0
100 | 06-10 23:20:48,35.496,9.288,43.130,0.0,0.0,12.087,746536960.0,531697664.0,4736761856.0,19267842048.0,0.0,2.0,0.0,12288.0,0.400,51779650.0,174456568.0,16869.0,16286.0
101 | 06-10 23:20:49,35.390,9.698,42.317,0.0,0.0,12.594,746373120.0,531697664.0,4736761856.0,19268005888.0,0.0,0.0,0.0,0.0,0.0,52320362.0,176142294.0,15991.0,14669.0
102 | 06-10 23:20:50,34.655,9.079,43.095,0.0,0.0,13.171,746143744.0,531697664.0,4736761856.0,19268235264.0,0.0,0.0,0.0,0.0,0.0,52071686.0,175474430.0,16636.0,15822.0
103 | 06-10 23:20:51,37.327,9.206,41.110,0.0,0.0,12.358,746766336.0,531697664.0,4736761856.0,19267612672.0,0.0,1.0,0.0,4096.0,0.0,53362432.0,179784060.0,16348.0,15450.0
104 | 06-10 23:20:52,36.181,8.668,42.714,0.0,0.0,12.437,746602496.0,531697664.0,4736761856.0,19267776512.0,0.0,0.0,0.0,0.0,0.0,51496708.0,173345848.0,16893.0,16542.0
105 | 06-10 23:20:53,35.570,8.987,41.392,0.0,0.0,14.051,746143744.0,531697664.0,4736761856.0,19268235264.0,0.0,0.0,0.0,0.0,0.0,53157106.0,179288562.0,16707.0,16066.0
106 | 06-10 23:20:54,35.159,8.535,43.185,0.127,0.0,12.994,746536960.0,531697664.0,4736761856.0,19267842048.0,0.0,2.0,0.0,12288.0,0.400,51885842.0,174576920.0,16643.0,15758.0
107 | 06-10 23:20:55,34.234,9.653,42.857,0.0,0.0,13.256,747094016.0,531697664.0,4736761856.0,19267284992.0,0.0,0.0,0.0,0.0,0.0,52332254.0,176421796.0,16822.0,16088.0
108 | 06-10 23:20:56,32.905,10.283,42.931,0.0,0.0,13.882,746536960.0,531697664.0,4736761856.0,19267842048.0,0.0,0.0,0.0,0.0,0.0,52258208.0,176019080.0,16751.0,16178.0
109 | 06-10 23:20:57,34.478,8.906,42.621,0.0,0.0,13.995,746930176.0,531697664.0,4736761856.0,19267448832.0,0.0,1.0,0.0,4096.0,0.0,52324752.0,176406984.0,16290.0,15192.0
110 | 06-10 23:20:58,35.332,8.546,42.474,0.0,0.0,13.648,746893312.0,531697664.0,4736765952.0,19267481600.0,0.0,0.0,0.0,0.0,0.0,52513240.0,176808114.0,16114.0,15019.0
111 | 06-10 23:20:59,36.809,8.920,41.834,0.0,0.0,12.437,746790912.0,531697664.0,4736765952.0,19267584000.0,0.0,2.0,0.0,12288.0,0.400,52269398.0,176117170.0,16790.0,16218.0
112 | 06-10 23:21:00,34.224,10.433,42.112,0.0,0.0,13.232,746758144.0,531697664.0,4736765952.0,19267616768.0,0.0,0.0,0.0,0.0,0.0,52663820.0,177356902.0,16762.0,16086.0
113 | 06-10 23:21:01,35.930,10.050,41.080,0.0,0.0,12.940,746430464.0,531697664.0,4736765952.0,19267944448.0,0.0,0.0,0.0,0.0,0.0,53344102.0,179914406.0,16149.0,14997.0
114 | 06-10 23:21:02,35.750,9.500,42.250,0.0,0.0,12.500,746233856.0,531697664.0,4736765952.0,19268141056.0,0.0,0.0,0.0,0.0,0.0,51981880.0,175143226.0,16561.0,15731.0
115 | 06-10 23:21:03,37.079,8.614,42.447,0.0,0.0,11.860,745938944.0,531697664.0,4736765952.0,19268435968.0,0.0,2.0,0.0,8192.0,0.0,51831844.0,174668898.0,16212.0,14971.0
116 | 06-10 23:21:04,33.163,8.673,43.367,0.0,0.0,14.796,746758144.0,531697664.0,4736765952.0,19267616768.0,0.0,0.0,0.0,0.0,0.0,51752892.0,174415016.0,16411.0,15564.0
117 | 06-10 23:21:05,36.629,9.759,40.938,0.0,0.0,12.674,746856448.0,531701760.0,4736765952.0,19267514368.0,0.0,2.0,0.0,20480.0,0.400,53478924.0,180199738.0,16723.0,16099.0
118 | 06-10 23:21:06,35.696,8.861,42.152,0.0,0.0,13.291,746528768.0,531701760.0,4736765952.0,19267842048.0,0.0,0.0,0.0,0.0,0.0,52467210.0,176522942.0,16739.0,16037.0
119 | 06-10 23:21:07,35.642,9.068,41.688,0.0,0.0,13.602,746725376.0,531701760.0,4736765952.0,19267645440.0,0.0,0.0,0.0,0.0,0.0,52458360.0,176782476.0,16994.0,16772.0
120 | 06-10 23:21:08,37.703,9.988,41.448,0.0,0.0,10.861,746561536.0,531701760.0,4736765952.0,19267809280.0,0.0,0.0,0.0,0.0,0.0,52493598.0,176978094.0,16726.0,16059.0
121 | 06-10 23:21:09,34.003,11.292,41.531,0.0,0.0,13.174,747020288.0,531701760.0,4736765952.0,19267350528.0,0.0,3.0,0.0,12288.0,0.0,52548166.0,176836330.0,16811.0,16205.0
122 | 06-10 23:21:10,36.802,8.756,42.259,0.0,0.0,12.183,746692608.0,531701760.0,4736765952.0,19267678208.0,0.0,0.0,0.0,0.0,0.0,52417806.0,176641596.0,16820.0,16166.0
123 | 06-10 23:21:11,35.375,9.0,42.125,0.0,0.0,13.500,746528768.0,531701760.0,4736765952.0,19267842048.0,0.0,2.0,0.0,12288.0,0.400,51997684.0,175176086.0,16420.0,15658.0
124 | 06-10 23:21:12,35.323,9.826,43.905,0.0,0.0,10.945,746528768.0,531701760.0,4736765952.0,19267842048.0,0.0,0.0,0.0,0.0,0.0,50453136.0,170033274.0,16393.0,15428.0
125 | 06-10 23:21:13,36.704,9.238,40.949,0.0,0.0,13.109,746172416.0,531701760.0,4736765952.0,19268198400.0,0.0,0.0,0.0,0.0,0.0,52862342.0,178143698.0,16628.0,15937.0
126 | 06-10 23:21:14,39.849,8.575,38.462,0.0,0.0,13.115,747249664.0,531701760.0,4736765952.0,19267121152.0,0.0,0.0,0.0,0.0,0.0,55550642.0,187258252.0,16296.0,15874.0
127 | 06-10 23:21:15,35.385,8.974,41.795,0.0,0.0,13.846,746860544.0,531701760.0,4736765952.0,19267510272.0,0.0,1.0,0.0,4096.0,0.0,53096560.0,178934706.0,16939.0,16573.0
128 | 06-10 23:21:16,36.170,8.636,41.802,0.0,0.0,13.392,746467328.0,531701760.0,4736765952.0,19267903488.0,0.0,0.0,0.0,0.0,0.0,52453538.0,176660510.0,16279.0,15356.0
129 | 06-10 23:21:17,36.216,9.273,41.103,0.0,0.0,13.409,747155456.0,531701760.0,4736765952.0,19267215360.0,0.0,2.0,0.0,12288.0,0.400,52944270.0,178231640.0,16828.0,16253.0
130 | 06-10 23:21:18,38.048,8.135,41.677,0.0,0.0,12.140,747089920.0,531701760.0,4736765952.0,19267280896.0,0.0,0.0,0.0,0.0,0.0,52493542.0,176791368.0,16704.0,15816.0
131 | 06-10 23:21:19,35.377,8.812,44.317,0.0,0.0,11.494,746893312.0,531701760.0,4736765952.0,19267477504.0,0.0,0.0,0.0,0.0,0.0,51005906.0,171920814.0,16170.0,15100.0
132 | 06-10 23:21:20,35.741,8.745,43.726,0.0,0.0,11.787,746532864.0,531701760.0,4736765952.0,19267837952.0,0.0,0.0,0.0,0.0,0.0,51386084.0,173316116.0,16149.0,14898.0
133 | 06-10 23:21:21,36.421,9.262,42.553,0.0,0.0,11.765,746303488.0,531701760.0,4736765952.0,19268067328.0,0.0,1.0,0.0,4096.0,0.0,51647182.0,174035474.0,16945.0,16488.0
134 | 06-10 23:21:22,36.248,10.139,41.698,0.0,0.0,11.914,746106880.0,531701760.0,4736765952.0,19268263936.0,0.0,2.0,0.0,12288.0,0.400,52677364.0,177652686.0,16924.0,16442.0
135 | 06-10 23:21:23,37.265,9.536,41.280,0.0,0.0,11.920,745644032.0,531701760.0,4736770048.0,19268722688.0,0.0,0.0,0.0,0.0,0.0,52893302.0,178175064.0,16946.0,16262.0
136 | 06-10 23:21:24,35.558,8.216,42.234,0.0,0.0,13.992,746721280.0,531701760.0,4736770048.0,19267645440.0,0.0,0.0,0.0,0.0,0.0,53125092.0,179122560.0,15746.0,14479.0
137 | 06-10 23:21:25,36.226,8.176,43.019,0.0,0.0,12.579,746131456.0,531701760.0,4736770048.0,19268235264.0,0.0,0.0,0.0,0.0,0.0,51741904.0,174393590.0,16440.0,15286.0
138 | 06-10 23:21:26,37.715,9.951,41.032,0.0,0.0,11.302,746721280.0,531701760.0,4736770048.0,19267645440.0,0.0,0.0,0.0,0.0,0.0,52301686.0,176225660.0,16805.0,15791.0
139 | 06-10 23:21:27,33.333,8.974,43.590,0.0,0.0,14.103,746364928.0,531701760.0,4736770048.0,19268001792.0,0.0,4.0,0.0,20480.0,0.400,51703450.0,174078190.0,16763.0,16007.0
140 | 06-10 23:21:28,35.516,9.446,42.695,0.0,0.0,12.343,746266624.0,531701760.0,4736770048.0,19268100096.0,0.0,0.0,0.0,0.0,0.0,52052576.0,175230776.0,16617.0,15643.0
141 | 06-10 23:21:29,35.687,8.701,41.614,0.0,0.0,13.997,746397696.0,531701760.0,4736770048.0,19267969024.0,0.0,0.0,0.0,0.0,0.0,52665160.0,177987072.0,16883.0,16390.0
142 | 06-10 23:21:30,36.730,8.805,41.258,0.0,0.0,13.208,746725376.0,531701760.0,4736770048.0,19267641344.0,0.0,0.0,0.0,0.0,0.0,52701488.0,177793744.0,17127.0,17010.0
143 | 06-10 23:21:31,35.840,10.150,41.479,0.0,0.0,12.531,746790912.0,531701760.0,4736770048.0,19267575808.0,0.0,0.0,0.0,0.0,0.0,52679124.0,177404638.0,16587.0,15580.0
144 | 06-10 23:21:32,37.750,9.250,40.500,0.0,0.0,12.500,746004480.0,531705856.0,4736765952.0,19268362240.0,0.0,2.0,0.0,20480.0,0.0,53239366.0,179611378.0,16890.0,16639.0
145 | 06-10 23:21:33,35.118,8.344,44.458,0.0,0.0,12.080,747016192.0,531705856.0,4736770048.0,19267346432.0,0.0,3.0,0.0,12288.0,0.0,50167150.0,168950644.0,15791.0,14085.0
146 | 06-10 23:21:34,36.055,9.171,40.578,0.0,0.0,14.196,746786816.0,531705856.0,4736770048.0,19267575808.0,0.0,0.0,0.0,0.0,0.0,53540880.0,180441036.0,16509.0,15995.0
147 | 06-10 23:21:35,36.364,9.343,41.793,0.0,0.0,12.500,746328064.0,531705856.0,4736770048.0,19268034560.0,0.0,0.0,0.0,0.0,0.0,52822514.0,178013558.0,16101.0,15045.0
148 | 06-10 23:21:36,24.747,6.313,59.975,0.0,0.0,8.965,745914368.0,531705856.0,4736770048.0,19268448256.0,0.0,0.0,0.0,0.0,0.0,36405806.0,122794936.0,11743.0,11208.0
149 | 06-10 23:21:37,0.0,0.125,99.875,0.0,0.0,0.0,745426944.0,531705856.0,4736770048.0,19268935680.0,0.0,0.0,0.0,0.0,0.0,578.0,596.0,63.0,86.0
150 | 06-10 23:21:38,0.125,0.0,99.751,0.125,0.0,0.0,745066496.0,531705856.0,4736770048.0,19269296128.0,0.0,2.0,0.0,12288.0,0.0,140.0,596.0,80.0,123.0
151 | 06-10 23:21:39,0.0,0.0,100.0,0.0,0.0,0.0,744771584.0,531705856.0,4736770048.0,19269591040.0,0.0,1.0,0.0,4096.0,0.0,426.0,748.0,79.0,118.0
152 | 06-10 23:21:40,0.125,0.0,99.875,0.0,0.0,0.0,744771584.0,531705856.0,4736770048.0,19269591040.0,0.0,0.0,0.0,0.0,0.0,578.0,612.0,56.0,87.0
153 | 06-10 23:21:41,0.0,0.0,100.0,0.0,0.0,0.0,744771584.0,531705856.0,4736770048.0,19269591040.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,52.0,74.0
154 | 06-10 23:21:42,0.125,0.0,99.875,0.0,0.0,0.0,744771584.0,531705856.0,4736770048.0,19269591040.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,61.0,97.0
155 | 06-10 23:21:43,0.0,0.0,100.0,0.0,0.0,0.0,744767488.0,531709952.0,4736770048.0,19269591040.0,0.0,2.0,0.0,12288.0,0.0,578.0,596.0,67.0,103.0
156 | 06-10 23:21:44,0.0,0.0,100.0,0.0,0.0,0.0,744767488.0,531709952.0,4736770048.0,19269591040.0,0.0,0.0,0.0,0.0,0.0,426.0,748.0,87.0,140.0
157 | 06-10 23:21:45,0.125,0.0,99.875,0.0,0.0,0.0,744767488.0,531709952.0,4736770048.0,19269591040.0,0.0,1.0,0.0,4096.0,0.0,140.0,596.0,53.0,76.0
158 | 06-10 23:21:46,0.0,0.0,100.0,0.0,0.0,0.0,744767488.0,531709952.0,4736770048.0,19269591040.0,0.0,0.0,0.0,0.0,0.0,140.0,612.0,69.0,110.0
159 | 06-10 23:21:47,0.125,0.125,99.750,0.0,0.0,0.0,743288832.0,531709952.0,4736770048.0,19271069696.0,0.0,0.0,0.0,0.0,0.0,1174.0,1674.0,163.0,271.0
160 | 06-10 23:21:48,0.0,0.0,100.0,0.0,0.0,0.0,743288832.0,531709952.0,4736770048.0,19271069696.0,0.0,2.0,0.0,40960.0,0.0,332.0,872.0,48.0,72.0
161 | 06-10 23:21:49,0.0,0.0,100.0,0.0,0.0,0.0,743415808.0,531709952.0,4736770048.0,19270942720.0,0.0,0.0,0.0,0.0,0.0,988.0,1956.0,84.0,124.0
162 | 06-10 23:21:50,0.125,0.0,99.875,0.0,0.0,0.0,743546880.0,531709952.0,4736774144.0,19270807552.0,0.0,0.0,0.0,0.0,0.0,2774.0,1572.0,118.0,175.0
163 | 06-10 23:21:51,0.0,0.0,100.0,0.0,0.0,0.0,743403520.0,531709952.0,4736774144.0,19270950912.0,0.0,9.0,0.0,36864.0,0.0,668.0,930.0,75.0,75.0
164 | 06-10 23:21:52,0.125,0.0,99.875,0.0,0.0,0.0,743403520.0,531709952.0,4736774144.0,19270950912.0,0.0,0.0,0.0,0.0,0.0,492.0,824.0,51.0,67.0
165 | 06-10 23:21:53,0.0,0.0,100.0,0.0,0.0,0.0,743399424.0,531714048.0,4736774144.0,19270950912.0,0.0,2.0,0.0,20480.0,0.0,578.0,596.0,51.0,72.0
166 | 06-10 23:21:54,0.0,0.0,100.0,0.0,0.0,0.0,743399424.0,531714048.0,4736774144.0,19270950912.0,0.0,0.0,0.0,0.0,0.0,426.0,748.0,90.0,131.0
167 | 06-10 23:21:55,0.125,0.0,99.875,0.0,0.0,0.0,743399424.0,531714048.0,4736774144.0,19270950912.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,40.0,54.0
168 | 06-10 23:21:56,0.0,0.125,99.875,0.0,0.0,0.0,743399424.0,531714048.0,4736774144.0,19270950912.0,0.0,0.0,0.0,0.0,0.0,1384.0,1912.0,133.0,260.0
169 | 06-10 23:21:57,0.0,0.0,100.0,0.0,0.0,0.0,743550976.0,531714048.0,4736774144.0,19270799360.0,0.0,4.0,0.0,16384.0,0.0,140.0,596.0,60.0,76.0
170 | 06-10 23:21:58,0.125,0.0,99.751,0.125,0.0,0.0,743550976.0,531714048.0,4736774144.0,19270799360.0,0.0,2.0,0.0,61440.0,0.0,140.0,612.0,64.0,103.0
171 | 06-10 23:21:59,0.0,0.0,100.0,0.0,0.0,0.0,743600128.0,531714048.0,4736774144.0,19270750208.0,0.0,0.0,0.0,0.0,0.0,864.0,748.0,90.0,137.0
172 | 06-10 23:22:00,0.0,0.0,100.0,0.0,0.0,0.0,743600128.0,531714048.0,4736774144.0,19270750208.0,0.0,0.0,0.0,0.0,0.0,140.0,596.0,42.0,68.0
173 | 06-10 23:22:01,1.905,0.544,97.551,0.0,0.0,0.0,743854080.0,531714048.0,4736778240.0,19270492160.0,0.0,0.0,0.0,0.0,0.0,2753330.0,2186360.0,23701.0,1122.0
174 | 06-10 23:22:02,0.140,0.0,99.721,0.0,0.0,0.140,743776256.0,531714048.0,4736778240.0,19270569984.0,0.0,0.0,0.0,0.0,0.0,3463942.0,2842474.0,30134.0,854.0
175 | 06-10 23:22:03,0.0,0.140,99.860,0.0,0.0,0.0,744132608.0,531718144.0,4736778240.0,19270209536.0,0.0,25.0,0.0,147456.0,0.400,3473168.0,2850068.0,30654.0,857.0
176 | 06-10 23:22:04,0.0,0.140,99.720,0.0,0.0,0.140,743866368.0,531718144.0,4736778240.0,19270475776.0,0.0,0.0,0.0,0.0,0.0,3472128.0,2849516.0,30728.0,883.0
177 | 06-10 23:22:05,0.0,0.0,100.0,0.0,0.0,0.0,744017920.0,531718144.0,4736778240.0,19270324224.0,0.0,0.0,0.0,0.0,0.0,3472982.0,2849748.0,30117.0,857.0
178 | 06-10 23:22:06,0.0,0.0,100.0,0.0,0.0,0.0,743358464.0,531718144.0,4736778240.0,19270983680.0,0.0,0.0,0.0,0.0,0.0,3464666.0,2843220.0,30254.0,848.0
179 | 06-10 23:22:07,0.0,0.140,99.860,0.0,0.0,0.0,743604224.0,531718144.0,4736778240.0,19270737920.0,0.0,0.0,0.0,0.0,0.0,3473480.0,2850580.0,30268.0,841.0
180 | 06-10 23:22:08,0.140,0.140,99.720,0.0,0.0,0.0,743612416.0,531718144.0,4736778240.0,19270729728.0,0.0,2.0,0.0,24576.0,0.0,3473286.0,2851012.0,30581.0,858.0
181 | 06-10 23:22:09,0.0,0.0,100.0,0.0,0.0,0.0,743604224.0,531718144.0,4736778240.0,19270737920.0,0.0,4.0,0.0,16384.0,0.0,3474114.0,2850966.0,30325.0,838.0
182 | 06-10 23:22:10,0.0,0.0,100.0,0.0,0.0,0.0,743649280.0,531718144.0,4736778240.0,19270692864.0,0.0,0.0,0.0,0.0,0.0,3471920.0,2849124.0,30205.0,832.0
183 | 06-10 23:22:11,2.192,0.685,96.986,0.0,0.0,0.137,743542784.0,531718144.0,4736778240.0,19270799360.0,0.0,0.0,0.0,0.0,0.0,3011228.0,2403200.0,26170.0,1352.0
184 | 06-10 23:22:12,0.0,0.0,99.860,0.0,0.0,0.140,743718912.0,531718144.0,4736778240.0,19270623232.0,0.0,0.0,0.0,0.0,0.0,3468808.0,2846698.0,31626.0,843.0
185 | 06-10 23:22:13,0.0,0.0,100.0,0.0,0.0,0.0,743845888.0,531722240.0,4736774144.0,19270496256.0,0.0,2.0,0.0,86016.0,0.400,3468098.0,2845844.0,31660.0,843.0
186 | 06-10 23:22:14,0.0,0.132,99.868,0.0,0.0,0.0,743985152.0,531722240.0,4736782336.0,19270348800.0,0.0,0.0,0.0,0.0,0.0,1654510.0,1357892.0,15178.0,517.0
187 | 06-10 23:22:15,0.0,0.0,100.0,0.0,0.0,0.0,743985152.0,531722240.0,4736782336.0,19270348800.0,0.0,22.0,0.0,90112.0,0.0,268.0,596.0,92.0,68.0
188 | 06-10 23:22:16,0.125,0.0,99.875,0.0,0.0,0.0,743858176.0,531722240.0,4736782336.0,19270475776.0,0.0,0.0,0.0,0.0,0.0,140.0,612.0,33.0,45.0
189 | 06-10 23:22:17,0.0,0.0,100.0,0.0,0.0,0.0,743858176.0,531722240.0,4736782336.0,19270475776.0,0.0,0.0,0.0,0.0,0.0,578.0,596.0,44.0,60.0
190 | 06-10 23:22:18,0.0,0.0,99.875,0.125,0.0,0.0,743854080.0,531730432.0,4736778240.0,19270475776.0,0.0,2.0,0.0,12288.0,0.0,140.0,596.0,52.0,77.0
191 | 06-10 23:22:19,0.125,0.0,99.875,0.0,0.0,0.0,743849984.0,531730432.0,4736782336.0,19270475776.0,0.0,0.0,0.0,0.0,0.0,283.0,748.0,67.0,96.0
192 | 06-10 23:22:20,0.0,0.0,100.0,0.0,0.0,0.0,743845888.0,531730432.0,4736786432.0,19270475776.0,0.0,0.0,0.0,0.0,0.0,1366.0,596.0,51.0,77.0
193 |
--------------------------------------------------------------------------------
/tools/wrk/samples/out.txt:
--------------------------------------------------------------------------------
1 | Running 2m test @ http://192.168.0.101:8000
2 | 8 threads and 32 connections
3 | Thread Stats Avg Stdev Max +/- Stdev
4 | Latency 1.21ms 1.10ms 24.49ms 60.88%
5 | Req/Sec 126.92k 31.99k 214.07k 65.20%
6 | Latency Distribution
7 | 50% 1.61ms
8 | 75% 5.61ms
9 | 90% 0.00us
10 | 99% 0.00us
11 | 121270683 requests in 2.00m, 17.84GB read
12 | Requests/sec: 1010014.80
13 | Transfer/sec: 152.19MB
14 |
--------------------------------------------------------------------------------