itsi 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9069ae3d194e76dc4c4451d6506594a2a3e3789541b546a31dd3703a172f4e32
4
- data.tar.gz: 6aacbd0351095bbde2e6db7c943bcd2444715519b079af2880c93cd5f623572f
3
+ metadata.gz: d3c1c81086711872c2ceaa5042078e05f4da5b6f4246bf6d5bc24ff607581557
4
+ data.tar.gz: 551e582ba837c8a4fe19a09ced2f38866493be737e6ac5188d206fad4835a510
5
5
  SHA512:
6
- metadata.gz: 36dcaf525c6852659d11c98f2d7813e4f01f86d934508a2ed45f071004f50fe6faee7a921ff9395bbc02198b10e8dc68887415781de3ae53aa3e90019a62f60e
7
- data.tar.gz: ac990a66a605e5da8bec5f8bf26f51859ab50a1e4d8f50d95c9c4bf7c2ce6aefa0a882db1e7ef06593ab97ea4210e0faebe98f2a5d5001d9431fda8b1cf06c51
6
+ metadata.gz: 5e858281765fdc2c698d2af7ec7e5c05efbda0430cc49ca0319acd23bdc7f35b12d72a5496fbac6c3cbd1d594f46dfb16bf5daac2fded466be9ede98d3cecca5
7
+ data.tar.gz: e28a5fa4d4c3c6b2b2169005f0d686d90f2bf9c1b98f02bc7dd283189e26ad09698d519a7879280724b49e2794c994872b7c3cba5927dcdcf974d6b762f24164
data/Cargo.lock CHANGED
@@ -1644,7 +1644,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
1644
1644
 
1645
1645
  [[package]]
1646
1646
  name = "itsi-scheduler"
1647
- version = "0.2.12"
1647
+ version = "0.2.13"
1648
1648
  dependencies = [
1649
1649
  "bytes",
1650
1650
  "derive_more",
@@ -1662,7 +1662,7 @@ dependencies = [
1662
1662
 
1663
1663
  [[package]]
1664
1664
  name = "itsi-server"
1665
- version = "0.2.12"
1665
+ version = "0.2.13"
1666
1666
  dependencies = [
1667
1667
  "argon2",
1668
1668
  "async-channel",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-scheduler"
3
- version = "0.2.12"
3
+ version = "0.2.13"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "itsi-server"
3
- version = "0.2.12"
3
+ version = "0.2.13"
4
4
  edition = "2021"
5
5
  authors = ["Wouter Coppieters <wc@pico.net.nz>"]
6
6
  license = "MIT"
@@ -0,0 +1,46 @@
1
+ ## Hybrid Scheduler Mode Example
2
+ This example shows how you can route some requests to use traditional blocking threads,
3
+ and others to use threads that have a Fiber scheduler enabled.
4
+
5
+ First, run the slow_service inside ./slow_service.
6
+ E.g.
7
+ ```bash
8
+ cd ./slow_service
9
+ itsi
10
+ ```
11
+
12
+ Then in a second tab, run the hybrid_scheduler_mode example.
13
+ E.g.
14
+ ```bash
15
+ itsi
16
+ ```
17
+
18
+ If you run a benchmark on the `/nonblocking` endpoint, you
19
+ should see Itsi will concurrent execute all requests. By contrast, running on
20
+ the `/blocking` endpoint should show drastically worse throughput due to requests running sequentially.
21
+
22
+ ```bash
23
+ # Non-blocking mode. 100 requests at a time, service takes 2s to respond. Throughput of ~50rps expected.
24
+ ❯ wrk http://0.0.0.0:3000/nonblocking -c 100 -d 10
25
+ Running 10s test @ http://0.0.0.0:3000/nonblocking
26
+ 2 threads and 100 connections
27
+ Thread Stats Avg Stdev Max +/- Stdev
28
+ Latency 0.00us 0.00us 0.00us nan%
29
+ Req/Sec 65.00 109.41 316.00 84.62%
30
+ 500 requests in 10.10s, 69.34KB read
31
+ Socket errors: connect 0, read 0, write 0, timeout 500
32
+ Requests/sec: 49.50
33
+ Transfer/sec: 6.86KB
34
+ # Blocking mode. Requests are executed sequentially , service takes 2s to respond. Throughput of ~0.5rps expected.
35
+ ❯ wrk http://0.0.0.0:3000/nonblocking -c 100 -d 10
36
+ Running 10s test @ http://0.0.0.0:3000/blocking
37
+ 2 threads and 100 connections
38
+ Thread Stats Avg Stdev Max +/- Stdev
39
+ Latency 0.00us 0.00us 0.00us nan%
40
+ Req/Sec 0.00 0.00 0.00 100.00%
41
+ 5 requests in 10.10s, 710.00B read
42
+ Socket errors: connect 0, read 0, write 0, timeout 5
43
+ Requests/sec: 0.49
44
+ ```
45
+
46
+ See the `Itsi.rb` file for more details.
@@ -213,7 +213,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
213
213
 
214
214
  [[package]]
215
215
  name = "itsi-scheduler"
216
- version = "0.2.12"
216
+ version = "0.2.13"
217
217
  dependencies = [
218
218
  "bytes",
219
219
  "derive_more",
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Itsi
4
4
  class Scheduler
5
- VERSION = "0.2.12"
5
+ VERSION = "0.2.13"
6
6
  end
7
7
  end
@@ -1644,7 +1644,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
1644
1644
 
1645
1645
  [[package]]
1646
1646
  name = "itsi-server"
1647
- version = "0.2.12"
1647
+ version = "0.2.13"
1648
1648
  dependencies = [
1649
1649
  "argon2",
1650
1650
  "async-channel",
@@ -38,4 +38,4 @@ rackup_file "./config.ru"
38
38
  ```
39
39
  ## Examples.
40
40
 
41
- See [https://github.com/wouterken/itsi/tree/main/examples/hybrid_scheduler_mode](hybrid_scheduler_mode) example in the Git repository.
41
+ See [a code example](https://github.com/wouterken/itsi/tree/main/examples/hybrid_scheduler_mode) in the Git repository.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Itsi
4
4
  class Server
5
- VERSION = "0.2.12"
5
+ VERSION = "0.2.13"
6
6
  end
7
7
  end
data/lib/itsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Itsi
2
- VERSION = '0.2.12'
2
+ VERSION = '0.2.13'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.2.11
18
+ version: 0.2.13
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.2.11
25
+ version: 0.2.13
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: itsi-server
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.11
32
+ version: 0.2.13
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.2.11
39
+ version: 0.2.13
40
40
  description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
41
41
  email:
42
42
  - wc@pico.net.nz
@@ -254,6 +254,7 @@ files:
254
254
  - examples/file_server/subdirectory/movies.csv
255
255
  - examples/helpers/datastore.rb
256
256
  - examples/hybrid_scheduler_mode/Itsi.rb
257
+ - examples/hybrid_scheduler_mode/README.md
257
258
  - examples/hybrid_scheduler_mode/config.ru
258
259
  - examples/hybrid_scheduler_mode/slow_service/Itsi.rb
259
260
  - examples/media_server/Itsi.rb