diff --git a/frameworks/fulmine-tuned/app.js b/frameworks/fulmine-tuned/app.js index 80ec9b2ec..6aa736b8f 100644 --- a/frameworks/fulmine-tuned/app.js +++ b/frameworks/fulmine-tuned/app.js @@ -24,17 +24,21 @@ function getCPUCount() { const express = require('fulmine.js'); const fs = require('fs'); -const zlib = require('zlib'); - -// The framework's own compression middleware, which negotiates br and gzip per request and -// takes the compression module's options. json-comp counts the bytes twice over, -// rps * (minBpr/myBpr)^2, so brotli is worth its extra microseconds where the client offers -// it: q3 is 12% smaller than gzip level 1 here. Mounted on the json route rather than on the -// app, because that is the only route the profiles ask to compress. -const compress = express.compression({ - level: 1, - brotli: { params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 3 } } -}); + +// The framework's own compression middleware, mounted on the json route rather than on the app, +// because that is the only route the profiles ask to compress. +// +// gzip and not brotli, which is a reversal, and it is 5.18.0 that reverses it: a whole body is +// now gzipped on a stream the framework keeps rather than on one built and thrown away per call, +// which is half of what the call used to cost at this size. A brotli stream cannot be kept that +// way, it carries context from one body into the next, so it still pays the build every time. +// json-comp scores rps * (minBpr/myBpr)^2, so brotli's 10% smaller body is worth roughly a fifth +// of the score and the cheaper call is worth more than that. `encodings` is the documented way to +// say it: the client offers both and gets gzip. +// +// Level 3 rather than 1: once the per-call build is gone, levels 1, 2 and 3 cost the same, and 3 +// is the smallest of them. +const compress = express.compression({ level: 3, encodings: ['gzip'] }); // 'auto' is one worker per usable core, and usable means the cgroup quota where there is one: a // container with two cores does not fork sixty-four processes because the host has them. @@ -93,7 +97,12 @@ if (dbUrl) { // The pool is kept to one connection, the tag's overflow for a stalled pipeline, so // the connection budget stays perWorker + 1. const pool = new Pool({ connectionString: dbUrl, max: 1 }); - sql = require('pg-telaio').createSql(pool, { pipeline: perWorker }); + // stallMillis false turns off the tag's slow-query guard, which parks a connection that + // has stopped answering and sends its queries to the pool. Every query these profiles + // run is a point read of a few milliseconds, so the guard can only cost here: measured + // 5% to 12% at this shape. It stays on by default for a mixed workload, where one slow + // query would otherwise hold up the fast ones queued behind it. + sql = require('pg-telaio').createSql(pool, { pipeline: perWorker, stallMillis: false }); pgPool = pool; } catch (e) {} } @@ -160,12 +169,18 @@ const registerJsonRoute = (target, path = '/json/:count') => target.get(path, co if (count < 0) count = 0; if (count > datasetItems.length) count = datasetItems.length; const m = parseInt(req.query.m) || 1; - const items = datasetItems.slice(0, count).map(d => ({ - id: d.id, name: d.name, category: d.category, - price: d.price, quantity: d.quantity, active: d.active, - tags: d.tags, rating: d.rating, - total: d.price * d.quantity * m - })); + // a preallocated loop, not slice().map(): same items, without the sliced + // copy and the per-element callback + const items = new Array(count); + for (let i = 0; i < count; i++) { + const d = datasetItems[i]; + items[i] = { + id: d.id, name: d.name, category: d.category, + price: d.price, quantity: d.quantity, active: d.active, + tags: d.tags, rating: d.rating, + total: d.price * d.quantity * m + }; + } // the middleware compresses this when the request asked for it, and leaves it alone // when it did not: the json profile sends no Accept-Encoding, json-comp sends one // @@ -190,7 +205,9 @@ app.get('/fortunes', async (req, res) => { if (!pgPool) return res.status(500).type('text/plain').send('DB not available'); try { const result = await sql`SELECT id, message FROM fortune`; - const rows = result.rows.map(r => ({ id: r.id, message: r.message })); + // the driver rows already carry only id and message, so the runtime row is + // pushed onto them and they are sorted in place instead of copied first + const rows = result.rows; rows.push({ id: 0, message: RUNTIME_FORTUNE }); // ordinal, not locale aware: the synthetic rows carry em-dashes, and localeCompare // would order them by collation rules the profile does not ask for diff --git a/frameworks/fulmine-tuned/package.json b/frameworks/fulmine-tuned/package.json index 1f8dca70a..fc795fe90 100644 --- a/frameworks/fulmine-tuned/package.json +++ b/frameworks/fulmine-tuned/package.json @@ -2,10 +2,10 @@ "name": "httparena-fulmine", "private": true, "dependencies": { - "fulmine.js": "^5.15.1", + "fulmine.js": "^5.18.1", "pg": "^8.13.0", "pg-native": "^3.8.0", - "pg-telaio": "^0.1.1", + "pg-telaio": "^0.1.2", "ejs": "^3.1.10", "ioredis": "^5.4.1" } diff --git a/frameworks/fulmine/app.js b/frameworks/fulmine/app.js index e6f5b610c..8343be337 100644 --- a/frameworks/fulmine/app.js +++ b/frameworks/fulmine/app.js @@ -24,17 +24,21 @@ function getCPUCount() { const express = require('fulmine.js'); const fs = require('fs'); -const zlib = require('zlib'); - -// The framework's own compression middleware, which negotiates br and gzip per request and -// takes the compression module's options. json-comp counts the bytes twice over, -// rps * (minBpr/myBpr)^2, so brotli is worth its extra microseconds where the client offers -// it: q3 is 12% smaller than gzip level 1 here. Mounted on the json route rather than on the -// app, because that is the only route the profiles ask to compress. -const compress = express.compression({ - level: 1, - brotli: { params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 3 } } -}); + +// The framework's own compression middleware, mounted on the json route rather than on the app, +// because that is the only route the profiles ask to compress. +// +// gzip and not brotli, which is a reversal, and it is 5.18.0 that reverses it: a whole body is +// now gzipped on a stream the framework keeps rather than on one built and thrown away per call, +// which is half of what the call used to cost at this size. A brotli stream cannot be kept that +// way, it carries context from one body into the next, so it still pays the build every time. +// json-comp scores rps * (minBpr/myBpr)^2, so brotli's 10% smaller body is worth roughly a fifth +// of the score and the cheaper call is worth more than that. `encodings` is the documented way to +// say it: the client offers both and gets gzip. +// +// Level 3 rather than 1: once the per-call build is gone, levels 1, 2 and 3 cost the same, and 3 +// is the smallest of them. +const compress = express.compression({ level: 3, encodings: ['gzip'] }); // 'auto' is one worker per usable core, and usable means the cgroup quota where there is one: a // container with two cores does not fork sixty-four processes because the host has them. @@ -139,12 +143,18 @@ const registerJsonRoute = (target, path = '/json/:count') => target.get(path, co if (count < 0) count = 0; if (count > datasetItems.length) count = datasetItems.length; const m = parseInt(req.query.m) || 1; - const items = datasetItems.slice(0, count).map(d => ({ - id: d.id, name: d.name, category: d.category, - price: d.price, quantity: d.quantity, active: d.active, - tags: d.tags, rating: d.rating, - total: d.price * d.quantity * m - })); + // a preallocated loop, not slice().map(): same items, without the sliced + // copy and the per-element callback + const items = new Array(count); + for (let i = 0; i < count; i++) { + const d = datasetItems[i]; + items[i] = { + id: d.id, name: d.name, category: d.category, + price: d.price, quantity: d.quantity, active: d.active, + tags: d.tags, rating: d.rating, + total: d.price * d.quantity * m + }; + } // the middleware compresses this when the request asked for it, and leaves it alone // when it did not: the json profile sends no Accept-Encoding, json-comp sends one // @@ -169,7 +179,9 @@ app.get('/fortunes', async (req, res) => { if (!pgPool) return res.status(500).type('text/plain').send('DB not available'); try { const result = await pgPool.query({ name: 'fortunes', text: 'SELECT id, message FROM fortune' }); - const rows = result.rows.map(r => ({ id: r.id, message: r.message })); + // the driver rows already carry only id and message, so the runtime row is + // pushed onto them and they are sorted in place instead of copied first + const rows = result.rows; rows.push({ id: 0, message: RUNTIME_FORTUNE }); // ordinal, not locale aware: the synthetic rows carry em-dashes, and localeCompare // would order them by collation rules the profile does not ask for diff --git a/frameworks/fulmine/package.json b/frameworks/fulmine/package.json index b9b915dad..93afce817 100644 --- a/frameworks/fulmine/package.json +++ b/frameworks/fulmine/package.json @@ -2,7 +2,7 @@ "name": "httparena-fulmine", "private": true, "dependencies": { - "fulmine.js": "^5.15.1", + "fulmine.js": "^5.18.1", "pg": "^8.13.0", "pg-native": "^3.8.0", "ejs": "^3.1.10", diff --git a/site/data/results/fulmine-tuned.json b/site/data/results/fulmine-tuned.json index af9ba89dd..387deac6d 100644 --- a/site/data/results/fulmine-tuned.json +++ b/site/data/results/fulmine-tuned.json @@ -4,71 +4,71 @@ "api-16-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 127217, - "avg_latency": "6.55ms", - "p99_latency": "30.10ms", - "cpu": "1559.1%", + "rps": 127296, + "avg_latency": "6.48ms", + "p99_latency": "29.10ms", + "cpu": "1552.7%", "memory": "2.2GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "642.53MB/s", + "bandwidth": "642.95MB/s", "input_bw": "7.16MB/s", - "reconnects": 381690, - "status_2xx": 1908265, + "reconnects": 381925, + "status_2xx": 1909450, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_baseline": 715292, - "tpl_json": 715955, + "tpl_baseline": 715694, + "tpl_json": 716275, "tpl_db": 0, "tpl_upload": 0, "tpl_static": 0, - "tpl_async_db": 477016 + "tpl_async_db": 477480 }, "api-4-256": { "framework": "fulmine-tuned", "language": "JS", - "rps": 36045, - "avg_latency": "5.80ms", - "p99_latency": "30.80ms", - "cpu": "392.4%", - "memory": "558MiB", + "rps": 36632, + "avg_latency": "5.65ms", + "p99_latency": "29.40ms", + "cpu": "395.0%", + "memory": "545MiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "181.95MB/s", - "input_bw": "2.03MB/s", - "reconnects": 108136, - "status_2xx": 540686, + "bandwidth": "184.91MB/s", + "input_bw": "2.06MB/s", + "reconnects": 109903, + "status_2xx": 549489, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_baseline": 202847, - "tpl_json": 202663, + "tpl_baseline": 206160, + "tpl_json": 205991, "tpl_db": 0, "tpl_upload": 0, "tpl_static": 0, - "tpl_async_db": 135176 + "tpl_async_db": 137338 }, "async-db-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 249443, - "avg_latency": "3.56ms", - "p99_latency": "14.50ms", - "cpu": "6089.1%", + "rps": 248561, + "avg_latency": "3.53ms", + "p99_latency": "13.90ms", + "cpu": "6024.2%", "memory": "6.2GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "955.44MB/s", - "input_bw": "16.65MB/s", - "reconnects": 99497, - "status_2xx": 2494430, + "bandwidth": "952.13MB/s", + "input_bw": "16.59MB/s", + "reconnects": 99144, + "status_2xx": 2485617, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -76,19 +76,19 @@ "baseline-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1285897, - "avg_latency": "3.19ms", - "p99_latency": "4.26ms", - "cpu": "6782.8%", + "rps": 1339524, + "avg_latency": "3.06ms", + "p99_latency": "4.01ms", + "cpu": "6794.1%", "memory": "2.7GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "144.68MB/s", - "input_bw": "99.33MB/s", + "bandwidth": "150.70MB/s", + "input_bw": "103.48MB/s", "reconnects": 0, - "status_2xx": 6429485, + "status_2xx": 6697624, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -96,19 +96,19 @@ "baseline-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1318641, - "avg_latency": "387us", - "p99_latency": "1.03ms", - "cpu": "6811.2%", - "memory": "2.6GiB", + "rps": 1348833, + "avg_latency": "379us", + "p99_latency": "1.06ms", + "cpu": "6834.1%", + "memory": "2.7GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "148.35MB/s", - "input_bw": "101.86MB/s", + "bandwidth": "151.75MB/s", + "input_bw": "104.19MB/s", "reconnects": 0, - "status_2xx": 6593207, + "status_2xx": 6744169, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -116,19 +116,19 @@ "crud-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 378397, - "avg_latency": "10.74ms", - "p99_latency": "20.50ms", - "cpu": "3749.0%", - "memory": "8.2GiB", + "rps": 375368, + "avg_latency": "10.85ms", + "p99_latency": "19.60ms", + "cpu": "3520.3%", + "memory": "8.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "126.88MB/s", - "input_bw": "32.48MB/s", - "reconnects": 27348, - "status_2xx": 5675955, + "bandwidth": "126.15MB/s", + "input_bw": "32.22MB/s", + "reconnects": 27094, + "status_2xx": 5630527, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -136,18 +136,18 @@ "echo-ws-16384": { "framework": "fulmine-tuned", "language": "JS", - "rps": 3610648, + "rps": 3606493, "avg_latency": "4.51ms", - "p99_latency": "8.89ms", - "cpu": "6226.5%", + "p99_latency": "8.91ms", + "cpu": "6218.5%", "memory": "2.5GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "24.61MB/s", + "bandwidth": "24.59MB/s", "reconnects": 0, - "status_2xx": 18053244, + "status_2xx": 18032468, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -155,18 +155,18 @@ "echo-ws-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 3828628, + "rps": 3826471, "avg_latency": "1.07ms", - "p99_latency": "2.26ms", - "cpu": "6524.3%", + "p99_latency": "2.28ms", + "cpu": "6349.2%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "25.55MB/s", + "bandwidth": "25.54MB/s", "reconnects": 0, - "status_2xx": 19143140, + "status_2xx": 19132358, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -174,18 +174,18 @@ "echo-ws-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 3754171, + "rps": 3765345, "avg_latency": "135us", - "p99_latency": "342us", - "cpu": "6458.2%", + "p99_latency": "352us", + "cpu": "6454.5%", "memory": "2.3GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "25.05MB/s", + "bandwidth": "25.13MB/s", "reconnects": 0, - "status_2xx": 18770859, + "status_2xx": 18826728, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -193,18 +193,18 @@ "echo-ws-limited-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 2569329, - "avg_latency": "1.05ms", - "p99_latency": "2.90ms", - "cpu": "6243.1%", + "rps": 2583634, + "avg_latency": "1.06ms", + "p99_latency": "2.89ms", + "cpu": "6062.4%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "57.83MB/s", - "reconnects": 1284874, - "status_2xx": 12846648, + "bandwidth": "58.19MB/s", + "reconnects": 1291117, + "status_2xx": 12918173, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -212,18 +212,18 @@ "echo-ws-limited-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 2092152, - "avg_latency": "147us", - "p99_latency": "532us", - "cpu": "5597.1%", + "rps": 2107514, + "avg_latency": "149us", + "p99_latency": "553us", + "cpu": "5523.1%", "memory": "2.4GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "47.08MB/s", - "reconnects": 1046114, - "status_2xx": 10460762, + "bandwidth": "47.43MB/s", + "reconnects": 1053804, + "status_2xx": 10537571, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -231,18 +231,18 @@ "echo-ws-pipeline-16384": { "framework": "fulmine-tuned", "language": "JS", - "rps": 23694313, - "avg_latency": "10.85ms", - "p99_latency": "14.70ms", - "cpu": "6324.5%", + "rps": 23832268, + "avg_latency": "10.83ms", + "p99_latency": "14.60ms", + "cpu": "6350.1%", "memory": "2.6GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "158.65MB/s", + "bandwidth": "159.57MB/s", "reconnects": 0, - "status_2xx": 118471568, + "status_2xx": 119161344, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -250,18 +250,18 @@ "echo-ws-pipeline-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 25115476, - "avg_latency": "2.60ms", - "p99_latency": "4.94ms", - "cpu": "6575.5%", + "rps": 25058201, + "avg_latency": "2.62ms", + "p99_latency": "5.01ms", + "cpu": "6609.7%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "167.69MB/s", + "bandwidth": "167.23MB/s", "reconnects": 0, - "status_2xx": 125577383, + "status_2xx": 125291008, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -269,18 +269,18 @@ "echo-ws-pipeline-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 24999334, - "avg_latency": "326us", - "p99_latency": "890us", - "cpu": "6811.5%", + "rps": 25147430, + "avg_latency": "325us", + "p99_latency": "852us", + "cpu": "6812.0%", "memory": "2.4GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "166.87MB/s", + "bandwidth": "167.84MB/s", "reconnects": 0, - "status_2xx": 124996671, + "status_2xx": 125737152, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -288,18 +288,18 @@ "fortunes-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 69958, - "avg_latency": "13.35ms", - "p99_latency": "26.10ms", - "cpu": "6453.8%", + "rps": 70511, + "avg_latency": "13.19ms", + "p99_latency": "25.40ms", + "cpu": "6492.2%", "memory": "6.5GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "1.62GB/s", + "bandwidth": "1.63GB/s", "reconnects": 0, - "status_2xx": 349791, + "status_2xx": 352556, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -307,115 +307,115 @@ "gateway-64-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 81459, - "avg_latency": "353.48ms", - "p99_latency": "4.21s", - "cpu": "4101.1%", - "memory": "6.6GiB", + "rps": 83905, + "avg_latency": "336.45ms", + "p99_latency": "4.81s", + "cpu": "3849.5%", + "memory": "7.0GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "959.24MB/s", + "bandwidth": "990.02MB/s", "reconnects": 0, - "status_2xx": 412187, + "status_2xx": 424563, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 123656, - "tpl_baseline": 82437, - "tpl_json": 144265, - "tpl_async_db": 61828, - "cpu_breakdown": "server: 1008% 2.5GiB | proxy: 3093% 4.0GiB" + "tpl_static": 127368, + "tpl_baseline": 84912, + "tpl_json": 148597, + "tpl_async_db": 63684, + "cpu_breakdown": "server: 758% 2.9GiB | proxy: 3091% 4.0GiB" }, "gateway-64-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 90426, - "avg_latency": "170.61ms", - "p99_latency": "2.75s", - "cpu": "4271.4%", - "memory": "4.7GiB", + "rps": 91458, + "avg_latency": "167.05ms", + "p99_latency": "2.61s", + "cpu": "4147.9%", + "memory": "5.6GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "1016.74MB/s", + "bandwidth": "1.01GB/s", "reconnects": 0, - "status_2xx": 455750, + "status_2xx": 460951, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 136725, - "tpl_baseline": 91150, - "tpl_json": 159512, - "tpl_async_db": 68362, - "cpu_breakdown": "server: 1054% 2.5GiB | proxy: 3218% 2.3GiB" + "tpl_static": 138285, + "tpl_baseline": 92190, + "tpl_json": 161332, + "tpl_async_db": 69142, + "cpu_breakdown": "server: 944% 3.3GiB | proxy: 3204% 2.2GiB" }, "gateway-h3-256": { "framework": "fulmine-tuned", "language": "JS", - "rps": 60717, - "avg_latency": "130.65ms", - "p99_latency": "777.51ms", - "cpu": "2576.1%", - "memory": "4.2GiB", + "rps": 60821, + "avg_latency": "130.70ms", + "p99_latency": "783.02ms", + "cpu": "2385.2%", + "memory": "4.6GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "643.41MB/s", + "bandwidth": "646.00MB/s", "reconnects": 0, - "status_2xx": 305409, + "status_2xx": 305931, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 91622, - "tpl_baseline": 61081, - "tpl_json": 106893, - "tpl_async_db": 45811, - "cpu_breakdown": "server: 652% 2.4GiB | proxy: 1924% 1.8GiB" + "tpl_static": 91779, + "tpl_baseline": 61186, + "tpl_json": 107075, + "tpl_async_db": 45889, + "cpu_breakdown": "server: 567% 2.7GiB | proxy: 1819% 1.8GiB" }, "gateway-h3-64": { "framework": "fulmine-tuned", "language": "JS", - "rps": 89967, - "avg_latency": "22.64ms", - "p99_latency": "84.36ms", - "cpu": "3512.2%", - "memory": "3.0GiB", + "rps": 90478, + "avg_latency": "22.50ms", + "p99_latency": "83.62ms", + "cpu": "3300.6%", + "memory": "3.4GiB", "connections": 64, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "975.69MB/s", + "bandwidth": "983.28MB/s", "reconnects": 0, - "status_2xx": 450735, + "status_2xx": 453299, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 135220, - "tpl_baseline": 90147, - "tpl_json": 157757, - "tpl_async_db": 67610, - "cpu_breakdown": "server: 962% 2.6GiB | proxy: 2551% 411MiB" + "tpl_static": 135989, + "tpl_baseline": 90659, + "tpl_json": 158654, + "tpl_async_db": 67994, + "cpu_breakdown": "server: 763% 3.0GiB | proxy: 2537% 424MiB" }, "json-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1140694, - "avg_latency": "3.25ms", - "p99_latency": "10.60ms", - "cpu": "6443.6%", - "memory": "6.8GiB", + "rps": 1140337, + "avg_latency": "3.21ms", + "p99_latency": "10.50ms", + "cpu": "6629.5%", + "memory": "8.2GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, "bandwidth": "3.89GB/s", - "input_bw": "54.39MB/s", - "reconnects": 226659, - "status_2xx": 5703471, + "input_bw": "54.38MB/s", + "reconnects": 226476, + "status_2xx": 5701687, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -423,19 +423,19 @@ "json-comp-16384": { "framework": "fulmine-tuned", "language": "JS", - "rps": 365104, - "avg_latency": "44.41ms", - "p99_latency": "102.50ms", - "cpu": "6346.2%", - "memory": "10.2GiB", + "rps": 496034, + "avg_latency": "32.74ms", + "p99_latency": "78.20ms", + "cpu": "6332.7%", + "memory": "8.6GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "487.00MB/s", - "input_bw": "27.16MB/s", - "reconnects": 65450, - "status_2xx": 1825522, + "bandwidth": "724.40MB/s", + "input_bw": "36.90MB/s", + "reconnects": 92139, + "status_2xx": 2480172, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -443,19 +443,19 @@ "json-comp-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 341698, - "avg_latency": "11.96ms", - "p99_latency": "38.40ms", - "cpu": "6382.8%", - "memory": "8.8GiB", + "rps": 480926, + "avg_latency": "8.50ms", + "p99_latency": "26.70ms", + "cpu": "6436.5%", + "memory": "7.6GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "455.82MB/s", - "input_bw": "25.42MB/s", - "reconnects": 66652, - "status_2xx": 1708494, + "bandwidth": "702.21MB/s", + "input_bw": "35.77MB/s", + "reconnects": 94929, + "status_2xx": 2404630, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -463,19 +463,19 @@ "json-comp-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 320924, - "avg_latency": "1.59ms", - "p99_latency": "9.43ms", - "cpu": "6269.5%", - "memory": "7.6GiB", + "rps": 460937, + "avg_latency": "1.10ms", + "p99_latency": "5.76ms", + "cpu": "6171.4%", + "memory": "7.3GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "427.79MB/s", - "input_bw": "23.87MB/s", - "reconnects": 64143, - "status_2xx": 1604621, + "bandwidth": "673.12MB/s", + "input_bw": "34.29MB/s", + "reconnects": 92187, + "status_2xx": 2304685, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -483,18 +483,18 @@ "json-tls-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1053562, - "avg_latency": "3.91ms", - "p99_latency": "181.04ms", - "cpu": "6467.7%", - "memory": "6.7GiB", + "rps": 1071284, + "avg_latency": "3.81ms", + "p99_latency": "60.53ms", + "cpu": "6494.2%", + "memory": "6.8GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "3.60GB", + "bandwidth": "3.66GB", "reconnects": 0, - "status_2xx": 5373946, + "status_2xx": 5463544, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -502,19 +502,19 @@ "limited-conn-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1156188, - "avg_latency": "3.53ms", - "p99_latency": "14.90ms", - "cpu": "6450.6%", - "memory": "2.7GiB", + "rps": 1233753, + "avg_latency": "3.31ms", + "p99_latency": "13.60ms", + "cpu": "6456.9%", + "memory": "2.8GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "130.08MB/s", - "input_bw": "89.31MB/s", - "reconnects": 578127, - "status_2xx": 5780943, + "bandwidth": "138.80MB/s", + "input_bw": "95.30MB/s", + "reconnects": 617207, + "status_2xx": 6168766, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -522,19 +522,19 @@ "limited-conn-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 1078071, - "avg_latency": "465us", - "p99_latency": "2.15ms", - "cpu": "6210.2%", - "memory": "2.6GiB", + "rps": 1138874, + "avg_latency": "439us", + "p99_latency": "2.01ms", + "cpu": "6149.4%", + "memory": "2.7GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "121.29MB/s", - "input_bw": "83.28MB/s", - "reconnects": 539034, - "status_2xx": 5390355, + "bandwidth": "128.13MB/s", + "input_bw": "87.98MB/s", + "reconnects": 569445, + "status_2xx": 5694372, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -542,18 +542,18 @@ "pipelined-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 33534233, - "avg_latency": "1.95ms", - "p99_latency": "4.20ms", - "cpu": "6378.8%", + "rps": 33681708, + "avg_latency": "1.94ms", + "p99_latency": "3.29ms", + "cpu": "6510.7%", "memory": "2.1GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "3.68GB/s", + "bandwidth": "3.70GB/s", "reconnects": 0, - "status_2xx": 167671168, + "status_2xx": 168408544, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -561,18 +561,18 @@ "pipelined-512": { "framework": "fulmine-tuned", "language": "JS", - "rps": 33748275, - "avg_latency": "242us", - "p99_latency": "656us", - "cpu": "6770.1%", + "rps": 33194000, + "avg_latency": "246us", + "p99_latency": "643us", + "cpu": "6780.7%", "memory": "2.1GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "3.71GB/s", + "bandwidth": "3.65GB/s", "reconnects": 0, - "status_2xx": 168741376, + "status_2xx": 165970000, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -580,66 +580,66 @@ "production-stack-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 41236, - "avg_latency": "375.96ms", - "p99_latency": "2.80s", - "cpu": "4125.3%", + "rps": 47743, + "avg_latency": "332.40ms", + "p99_latency": "3.60s", + "cpu": "4208.9%", "memory": "5.1GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "438.33MB/s", + "bandwidth": "492.95MB/s", "reconnects": 0, - "status_2xx": 209071, + "status_2xx": 241581, "status_3xx": 0, - "status_4xx": 110, + "status_4xx": 76, "status_5xx": 0, - "tpl_static": 62721, - "tpl_baseline": 20907, - "tpl_items": 104535, - "tpl_me": 20907, - "cpu_breakdown": "server: 356% 2.3GiB | authsvc: 454% 248MiB | cache: 164% 11MiB | edge: 3152% 2.6GiB" + "tpl_static": 72474, + "tpl_baseline": 24158, + "tpl_items": 120790, + "tpl_me": 24158, + "cpu_breakdown": "server: 433% 2.3GiB | authsvc: 476% 260MiB | cache: 192% 10MiB | edge: 3108% 2.6GiB" }, "production-stack-256": { "framework": "fulmine-tuned", "language": "JS", - "rps": 58662, - "avg_latency": "71.29ms", - "p99_latency": "3.46s", - "cpu": "4210.8%", - "memory": "3.2GiB", + "rps": 59230, + "avg_latency": "70.42ms", + "p99_latency": "1.25s", + "cpu": "4217.2%", + "memory": "3.3GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "566.53MB/s", + "bandwidth": "573.66MB/s", "reconnects": 0, - "status_2xx": 295073, + "status_2xx": 297931, "status_3xx": 0, - "status_4xx": 437, + "status_4xx": 531, "status_5xx": 0, - "tpl_static": 88521, - "tpl_baseline": 29507, - "tpl_items": 147536, - "tpl_me": 29507, - "cpu_breakdown": "server: 417% 2.3GiB | authsvc: 504% 69MiB | cache: 203% 10MiB | edge: 3086% 900MiB" + "tpl_static": 89379, + "tpl_baseline": 29793, + "tpl_items": 148965, + "tpl_me": 29793, + "cpu_breakdown": "server: 403% 2.3GiB | authsvc: 517% 62MiB | cache: 205% 10MiB | edge: 3093% 1003MiB" }, "static-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 421230, - "avg_latency": "2.67ms", - "p99_latency": "28.99ms", - "cpu": "6548.6%", - "memory": "6.2GiB", + "rps": 426047, + "avg_latency": "2.63ms", + "p99_latency": "28.71ms", + "cpu": "6559.2%", + "memory": "6.3GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "6.49GB", + "bandwidth": "6.57GB", "reconnects": 0, - "status_2xx": 2148160, + "status_2xx": 2172597, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -647,18 +647,18 @@ "static-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 575609, - "avg_latency": "7.29ms", - "p99_latency": "41.29ms", - "cpu": "6540.2%", - "memory": "7.4GiB", + "rps": 576698, + "avg_latency": "7.28ms", + "p99_latency": "42.89ms", + "cpu": "6538.1%", + "memory": "7.2GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "8.87GB", + "bandwidth": "8.89GB", "reconnects": 0, - "status_2xx": 2935612, + "status_2xx": 2941364, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -666,18 +666,18 @@ "static-6800": { "framework": "fulmine-tuned", "language": "JS", - "rps": 628709, - "avg_latency": "10.99ms", - "p99_latency": "58.42ms", - "cpu": "6495.3%", - "memory": "7.8GiB", + "rps": 647192, + "avg_latency": "10.67ms", + "p99_latency": "55.31ms", + "cpu": "6506.8%", + "memory": "7.9GiB", "connections": 6800, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "9.69GB", + "bandwidth": "9.98GB", "reconnects": 0, - "status_2xx": 3206700, + "status_2xx": 3301092, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -685,18 +685,18 @@ "static-tls-1024": { "framework": "fulmine-tuned", "language": "JS", - "rps": 354687, - "avg_latency": "3.03ms", - "p99_latency": "29.91ms", - "cpu": "6546.6%", - "memory": "6.1GiB", + "rps": 358551, + "avg_latency": "3.00ms", + "p99_latency": "24.78ms", + "cpu": "6532.1%", + "memory": "6.2GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "5.47GB", + "bandwidth": "5.53GB", "reconnects": 0, - "status_2xx": 1808710, + "status_2xx": 1828473, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -704,18 +704,18 @@ "static-tls-4096": { "framework": "fulmine-tuned", "language": "JS", - "rps": 460202, - "avg_latency": "9.06ms", - "p99_latency": "119.44ms", - "cpu": "6455.3%", + "rps": 466500, + "avg_latency": "8.93ms", + "p99_latency": "159.35ms", + "cpu": "6460.9%", "memory": "6.9GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "7.10GB", + "bandwidth": "7.19GB", "reconnects": 0, - "status_2xx": 2344738, + "status_2xx": 2379225, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -723,18 +723,18 @@ "static-tls-6800": { "framework": "fulmine-tuned", "language": "JS", - "rps": 498916, - "avg_latency": "13.80ms", - "p99_latency": "165.63ms", - "cpu": "6395.1%", + "rps": 500290, + "avg_latency": "13.75ms", + "p99_latency": "162.34ms", + "cpu": "6418.0%", "memory": "7.2GiB", "connections": 6800, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "7.69GB", + "bandwidth": "7.71GB", "reconnects": 0, - "status_2xx": 2544855, + "status_2xx": 2551726, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -742,19 +742,19 @@ "upload-256": { "framework": "fulmine-tuned", "language": "JS", - "rps": 2129, - "avg_latency": "116.41ms", - "p99_latency": "982.90ms", - "cpu": "6291.3%", - "memory": "7.4GiB", + "rps": 2157, + "avg_latency": "113.53ms", + "p99_latency": "887.90ms", + "cpu": "6213.1%", + "memory": "7.1GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "256.07KB/s", - "input_bw": "16.89GB/s", - "reconnects": 2099, - "status_2xx": 10645, + "bandwidth": "259.93KB/s", + "input_bw": "17.11GB/s", + "reconnects": 2141, + "status_2xx": 10810, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -762,19 +762,19 @@ "upload-32": { "framework": "fulmine-tuned", "language": "JS", - "rps": 2021, - "avg_latency": "15.80ms", - "p99_latency": "104.00ms", - "cpu": "2963.9%", - "memory": "6.5GiB", + "rps": 2047, + "avg_latency": "15.59ms", + "p99_latency": "94.80ms", + "cpu": "3146.2%", + "memory": "6.7GiB", "connections": 32, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "243.16KB/s", - "input_bw": "16.03GB/s", - "reconnects": 2020, - "status_2xx": 10106, + "bandwidth": "246.32KB/s", + "input_bw": "16.24GB/s", + "reconnects": 2047, + "status_2xx": 10237, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 diff --git a/site/data/results/fulmine.json b/site/data/results/fulmine.json index 9e252267a..45d961ead 100644 --- a/site/data/results/fulmine.json +++ b/site/data/results/fulmine.json @@ -4,71 +4,71 @@ "api-16-1024": { "framework": "fulmine", "language": "JS", - "rps": 119996, - "avg_latency": "6.81ms", - "p99_latency": "50.70ms", - "cpu": "1485.0%", + "rps": 126735, + "avg_latency": "6.33ms", + "p99_latency": "47.80ms", + "cpu": "1540.7%", "memory": "2.2GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "611.67MB/s", - "input_bw": "6.75MB/s", - "reconnects": 360083, - "status_2xx": 1799944, + "bandwidth": "645.91MB/s", + "input_bw": "7.13MB/s", + "reconnects": 380270, + "status_2xx": 1901037, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_baseline": 674490, - "tpl_json": 675440, + "tpl_baseline": 712607, + "tpl_json": 713132, "tpl_db": 0, "tpl_upload": 0, "tpl_static": 0, - "tpl_async_db": 450014 + "tpl_async_db": 475297 }, "api-4-256": { "framework": "fulmine", "language": "JS", - "rps": 36914, - "avg_latency": "5.42ms", - "p99_latency": "26.70ms", - "cpu": "396.3%", - "memory": "521MiB", + "rps": 36634, + "avg_latency": "5.60ms", + "p99_latency": "29.70ms", + "cpu": "393.3%", + "memory": "539MiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "187.96MB/s", - "input_bw": "2.08MB/s", - "reconnects": 110757, - "status_2xx": 553712, + "bandwidth": "186.55MB/s", + "input_bw": "2.06MB/s", + "reconnects": 109912, + "status_2xx": 549511, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_baseline": 207883, - "tpl_json": 207534, + "tpl_baseline": 206250, + "tpl_json": 205918, "tpl_db": 0, "tpl_upload": 0, "tpl_static": 0, - "tpl_async_db": 138294 + "tpl_async_db": 137343 }, "async-db-1024": { "framework": "fulmine", "language": "JS", - "rps": 231202, - "avg_latency": "3.91ms", - "p99_latency": "28.50ms", - "cpu": "5753.9%", + "rps": 232808, + "avg_latency": "3.83ms", + "p99_latency": "28.10ms", + "cpu": "5694.4%", "memory": "4.3GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "896.09MB/s", - "input_bw": "15.43MB/s", - "reconnects": 92445, - "status_2xx": 2312024, + "bandwidth": "902.45MB/s", + "input_bw": "15.54MB/s", + "reconnects": 93036, + "status_2xx": 2328080, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -76,19 +76,19 @@ "baseline-4096": { "framework": "fulmine", "language": "JS", - "rps": 1270458, - "avg_latency": "3.22ms", - "p99_latency": "4.63ms", - "cpu": "6598.1%", + "rps": 1340956, + "avg_latency": "3.05ms", + "p99_latency": "4.08ms", + "cpu": "6784.6%", "memory": "2.7GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "201.08MB/s", - "input_bw": "98.14MB/s", + "bandwidth": "212.23MB/s", + "input_bw": "103.59MB/s", "reconnects": 0, - "status_2xx": 6352292, + "status_2xx": 6704781, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -96,19 +96,19 @@ "baseline-512": { "framework": "fulmine", "language": "JS", - "rps": 1287387, - "avg_latency": "397us", - "p99_latency": "1.06ms", - "cpu": "6822.1%", - "memory": "2.6GiB", + "rps": 1348644, + "avg_latency": "379us", + "p99_latency": "1.02ms", + "cpu": "6779.8%", + "memory": "2.7GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "203.76MB/s", - "input_bw": "99.45MB/s", + "bandwidth": "213.45MB/s", + "input_bw": "104.18MB/s", "reconnects": 0, - "status_2xx": 6436935, + "status_2xx": 6743220, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -116,19 +116,19 @@ "crud-4096": { "framework": "fulmine", "language": "JS", - "rps": 355548, - "avg_latency": "11.44ms", - "p99_latency": "20.50ms", - "cpu": "4215.6%", + "rps": 358930, + "avg_latency": "11.35ms", + "p99_latency": "20.70ms", + "cpu": "4162.2%", "memory": "8.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "134.79MB/s", - "input_bw": "30.52MB/s", - "reconnects": 24386, - "status_2xx": 5333225, + "bandwidth": "136.64MB/s", + "input_bw": "30.81MB/s", + "reconnects": 25050, + "status_2xx": 5383953, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -136,18 +136,18 @@ "echo-ws-16384": { "framework": "fulmine", "language": "JS", - "rps": 3605296, - "avg_latency": "4.53ms", - "p99_latency": "8.91ms", - "cpu": "6203.2%", + "rps": 3600730, + "avg_latency": "4.51ms", + "p99_latency": "9.05ms", + "cpu": "6169.3%", "memory": "2.5GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "24.58MB/s", + "bandwidth": "24.55MB/s", "reconnects": 0, - "status_2xx": 18026481, + "status_2xx": 18003654, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -155,18 +155,18 @@ "echo-ws-4096": { "framework": "fulmine", "language": "JS", - "rps": 3825991, + "rps": 3835606, "avg_latency": "1.07ms", - "p99_latency": "2.27ms", - "cpu": "6345.8%", + "p99_latency": "2.25ms", + "cpu": "6331.5%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "25.57MB/s", + "bandwidth": "25.68MB/s", "reconnects": 0, - "status_2xx": 19129956, + "status_2xx": 19178030, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -174,18 +174,18 @@ "echo-ws-512": { "framework": "fulmine", "language": "JS", - "rps": 3757963, + "rps": 3770125, "avg_latency": "135us", - "p99_latency": "350us", - "cpu": "6472.9%", - "memory": "2.4GiB", + "p99_latency": "344us", + "cpu": "6492.8%", + "memory": "2.3GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "25.08MB/s", + "bandwidth": "25.16MB/s", "reconnects": 0, - "status_2xx": 18789816, + "status_2xx": 18850626, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -193,18 +193,18 @@ "echo-ws-limited-4096": { "framework": "fulmine", "language": "JS", - "rps": 2561776, + "rps": 2579391, "avg_latency": "1.04ms", - "p99_latency": "2.76ms", - "cpu": "6035.7%", + "p99_latency": "2.83ms", + "cpu": "6029.6%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "57.64MB/s", - "reconnects": 1281122, - "status_2xx": 12808881, + "bandwidth": "58.08MB/s", + "reconnects": 1288565, + "status_2xx": 12896957, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -212,18 +212,18 @@ "echo-ws-limited-512": { "framework": "fulmine", "language": "JS", - "rps": 2090766, - "avg_latency": "147us", - "p99_latency": "531us", - "cpu": "5598.9%", + "rps": 2089376, + "avg_latency": "145us", + "p99_latency": "534us", + "cpu": "5485.6%", "memory": "2.4GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "47.05MB/s", - "reconnects": 1045426, - "status_2xx": 10453833, + "bandwidth": "47.01MB/s", + "reconnects": 1044725, + "status_2xx": 10446881, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -231,18 +231,18 @@ "echo-ws-pipeline-16384": { "framework": "fulmine", "language": "JS", - "rps": 23760822, - "avg_latency": "10.88ms", - "p99_latency": "14.80ms", - "cpu": "6384.0%", + "rps": 24018432, + "avg_latency": "10.76ms", + "p99_latency": "14.30ms", + "cpu": "6374.9%", "memory": "2.6GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "159.09MB/s", + "bandwidth": "160.81MB/s", "reconnects": 0, - "status_2xx": 118804112, + "status_2xx": 120092160, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -250,18 +250,18 @@ "echo-ws-pipeline-4096": { "framework": "fulmine", "language": "JS", - "rps": 25081673, + "rps": 25110668, "avg_latency": "2.61ms", - "p99_latency": "5.06ms", - "cpu": "6594.7%", + "p99_latency": "4.86ms", + "cpu": "6591.2%", "memory": "2.4GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "167.46MB/s", + "bandwidth": "167.64MB/s", "reconnects": 0, - "status_2xx": 125408368, + "status_2xx": 125553343, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -269,18 +269,18 @@ "echo-ws-pipeline-512": { "framework": "fulmine", "language": "JS", - "rps": 24970883, + "rps": 24973673, "avg_latency": "327us", - "p99_latency": "896us", - "cpu": "6804.3%", + "p99_latency": "919us", + "cpu": "6800.0%", "memory": "2.4GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "166.66MB/s", + "bandwidth": "166.68MB/s", "reconnects": 0, - "status_2xx": 124854416, + "status_2xx": 124868368, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -288,18 +288,18 @@ "fortunes-1024": { "framework": "fulmine", "language": "JS", - "rps": 68016, - "avg_latency": "13.77ms", - "p99_latency": "22.50ms", - "cpu": "6502.3%", - "memory": "4.2GiB", + "rps": 68448, + "avg_latency": "13.63ms", + "p99_latency": "20.40ms", + "cpu": "6509.7%", + "memory": "4.3GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "1.58GB/s", + "bandwidth": "1.59GB/s", "reconnects": 0, - "status_2xx": 340084, + "status_2xx": 342243, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -307,115 +307,115 @@ "gateway-64-1024": { "framework": "fulmine", "language": "JS", - "rps": 74608, - "avg_latency": "366.83ms", - "p99_latency": "4.33s", - "cpu": "4045.4%", - "memory": "7.0GiB", + "rps": 81711, + "avg_latency": "350.14ms", + "p99_latency": "4.53s", + "cpu": "3951.0%", + "memory": "7.6GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "887.26MB/s", + "bandwidth": "963.27MB/s", "reconnects": 0, - "status_2xx": 377517, + "status_2xx": 412642, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 113255, - "tpl_baseline": 75503, - "tpl_json": 132130, - "tpl_async_db": 56627, - "cpu_breakdown": "proxy: 3033% 4.6GiB | server: 1012% 2.4GiB" + "tpl_static": 123792, + "tpl_baseline": 82528, + "tpl_json": 144424, + "tpl_async_db": 61896, + "cpu_breakdown": "proxy: 3135% 4.4GiB | server: 816% 3.2GiB" }, "gateway-64-512": { "framework": "fulmine", "language": "JS", - "rps": 90836, - "avg_latency": "165.93ms", - "p99_latency": "2.93s", - "cpu": "4284.7%", - "memory": "5.0GiB", + "rps": 91443, + "avg_latency": "166.85ms", + "p99_latency": "2.36s", + "cpu": "4069.9%", + "memory": "5.4GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "1023.95MB/s", + "bandwidth": "1.01GB/s", "reconnects": 0, - "status_2xx": 457817, + "status_2xx": 460874, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 137345, - "tpl_baseline": 91563, - "tpl_json": 160235, - "tpl_async_db": 68672, - "cpu_breakdown": "proxy: 3222% 2.3GiB | server: 1062% 2.7GiB" + "tpl_static": 138262, + "tpl_baseline": 92174, + "tpl_json": 161305, + "tpl_async_db": 69131, + "cpu_breakdown": "proxy: 3160% 2.1GiB | server: 910% 3.3GiB" }, "gateway-h3-256": { "framework": "fulmine", "language": "JS", - "rps": 62447, - "avg_latency": "127.22ms", - "p99_latency": "760.55ms", - "cpu": "2572.4%", - "memory": "4.1GiB", + "rps": 62793, + "avg_latency": "127.01ms", + "p99_latency": "747.84ms", + "cpu": "2423.1%", + "memory": "4.5GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "663.09MB/s", + "bandwidth": "668.20MB/s", "reconnects": 0, - "status_2xx": 314109, + "status_2xx": 315849, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 94232, - "tpl_baseline": 62821, - "tpl_json": 109938, - "tpl_async_db": 47116, - "cpu_breakdown": "server: 676% 2.3GiB | proxy: 1896% 1.8GiB" + "tpl_static": 94754, + "tpl_baseline": 63169, + "tpl_json": 110547, + "tpl_async_db": 47377, + "cpu_breakdown": "server: 557% 2.8GiB | proxy: 1866% 1.8GiB" }, "gateway-h3-64": { "framework": "fulmine", "language": "JS", - "rps": 91080, - "avg_latency": "22.35ms", - "p99_latency": "83.26ms", - "cpu": "3500.0%", - "memory": "2.9GiB", + "rps": 90305, + "avg_latency": "22.55ms", + "p99_latency": "82.98ms", + "cpu": "3327.5%", + "memory": "3.4GiB", "connections": 64, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "987.85MB/s", + "bandwidth": "981.72MB/s", "reconnects": 0, - "status_2xx": 456311, + "status_2xx": 452433, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0, - "tpl_static": 136893, - "tpl_baseline": 91262, - "tpl_json": 159708, - "tpl_async_db": 68446, - "cpu_breakdown": "server: 950% 2.5GiB | proxy: 2550% 410MiB" + "tpl_static": 135729, + "tpl_baseline": 90486, + "tpl_json": 158351, + "tpl_async_db": 67864, + "cpu_breakdown": "server: 781% 3.0GiB | proxy: 2546% 432MiB" }, "json-4096": { "framework": "fulmine", "language": "JS", - "rps": 1117372, - "avg_latency": "3.30ms", - "p99_latency": "10.70ms", - "cpu": "6622.9%", - "memory": "8.2GiB", + "rps": 1123852, + "avg_latency": "3.27ms", + "p99_latency": "10.90ms", + "cpu": "6443.2%", + "memory": "6.9GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "3.87GB/s", - "input_bw": "53.28MB/s", - "reconnects": 222115, - "status_2xx": 5586863, + "bandwidth": "3.89GB/s", + "input_bw": "53.59MB/s", + "reconnects": 223565, + "status_2xx": 5619260, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -423,19 +423,19 @@ "json-comp-16384": { "framework": "fulmine", "language": "JS", - "rps": 355909, - "avg_latency": "45.57ms", - "p99_latency": "104.40ms", - "cpu": "6333.7%", - "memory": "10.4GiB", + "rps": 497788, + "avg_latency": "32.74ms", + "p99_latency": "79.50ms", + "cpu": "6361.9%", + "memory": "8.5GiB", "connections": 16384, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "491.01MB/s", - "input_bw": "26.47MB/s", - "reconnects": 64454, - "status_2xx": 1779545, + "bandwidth": "749.67MB/s", + "input_bw": "37.03MB/s", + "reconnects": 92686, + "status_2xx": 2488942, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -443,19 +443,19 @@ "json-comp-4096": { "framework": "fulmine", "language": "JS", - "rps": 333526, - "avg_latency": "12.26ms", - "p99_latency": "38.30ms", - "cpu": "6432.8%", - "memory": "8.6GiB", + "rps": 479964, + "avg_latency": "8.52ms", + "p99_latency": "27.20ms", + "cpu": "6382.0%", + "memory": "7.6GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "460.12MB/s", - "input_bw": "24.81MB/s", - "reconnects": 65062, - "status_2xx": 1667633, + "bandwidth": "722.82MB/s", + "input_bw": "35.70MB/s", + "reconnects": 94528, + "status_2xx": 2399824, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -463,19 +463,19 @@ "json-comp-512": { "framework": "fulmine", "language": "JS", - "rps": 317735, - "avg_latency": "1.61ms", - "p99_latency": "9.04ms", - "cpu": "6297.4%", - "memory": "7.7GiB", + "rps": 460547, + "avg_latency": "1.10ms", + "p99_latency": "5.45ms", + "cpu": "6195.2%", + "memory": "7.3GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "438.30MB/s", - "input_bw": "23.64MB/s", - "reconnects": 63535, - "status_2xx": 1588679, + "bandwidth": "693.62MB/s", + "input_bw": "34.26MB/s", + "reconnects": 92115, + "status_2xx": 2302737, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -483,18 +483,18 @@ "json-tls-4096": { "framework": "fulmine", "language": "JS", - "rps": 1041510, - "avg_latency": "3.93ms", - "p99_latency": "42.86ms", - "cpu": "6503.7%", - "memory": "6.9GiB", + "rps": 1055889, + "avg_latency": "3.87ms", + "p99_latency": "86.82ms", + "cpu": "6495.0%", + "memory": "6.7GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "3.60GB", + "bandwidth": "3.65GB", "reconnects": 0, - "status_2xx": 5311473, + "status_2xx": 5384996, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -502,19 +502,19 @@ "limited-conn-4096": { "framework": "fulmine", "language": "JS", - "rps": 1141750, - "avg_latency": "3.58ms", - "p99_latency": "14.90ms", - "cpu": "6460.3%", - "memory": "2.7GiB", + "rps": 1215520, + "avg_latency": "3.36ms", + "p99_latency": "14.00ms", + "cpu": "6462.1%", + "memory": "2.8GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "180.70MB/s", - "input_bw": "88.20MB/s", - "reconnects": 570485, - "status_2xx": 5708750, + "bandwidth": "192.38MB/s", + "input_bw": "93.90MB/s", + "reconnects": 607126, + "status_2xx": 6077604, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -522,19 +522,19 @@ "limited-conn-512": { "framework": "fulmine", "language": "JS", - "rps": 1064441, - "avg_latency": "471us", - "p99_latency": "2.27ms", - "cpu": "6165.2%", + "rps": 1124445, + "avg_latency": "445us", + "p99_latency": "2.03ms", + "cpu": "6168.9%", "memory": "2.7GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "168.47MB/s", - "input_bw": "82.23MB/s", - "reconnects": 532229, - "status_2xx": 5322207, + "bandwidth": "177.97MB/s", + "input_bw": "86.86MB/s", + "reconnects": 562217, + "status_2xx": 5622229, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -542,18 +542,18 @@ "pipelined-4096": { "framework": "fulmine", "language": "JS", - "rps": 32087107, - "avg_latency": "2.04ms", - "p99_latency": "4.34ms", - "cpu": "6420.8%", + "rps": 31380352, + "avg_latency": "2.09ms", + "p99_latency": "4.95ms", + "cpu": "6716.2%", "memory": "2.1GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "4.96GB/s", + "bandwidth": "4.85GB/s", "reconnects": 0, - "status_2xx": 160435536, + "status_2xx": 156901760, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -561,18 +561,18 @@ "pipelined-512": { "framework": "fulmine", "language": "JS", - "rps": 32111424, - "avg_latency": "254us", - "p99_latency": "645us", - "cpu": "6701.1%", + "rps": 31577351, + "avg_latency": "258us", + "p99_latency": "676us", + "cpu": "6767.5%", "memory": "2.1GiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "4.96GB/s", + "bandwidth": "4.88GB/s", "reconnects": 0, - "status_2xx": 160557120, + "status_2xx": 157886757, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -580,66 +580,66 @@ "production-stack-1024": { "framework": "fulmine", "language": "JS", - "rps": 46939, - "avg_latency": "332.81ms", - "p99_latency": "1.94s", - "cpu": "4076.0%", - "memory": "5.6GiB", + "rps": 48040, + "avg_latency": "313.60ms", + "p99_latency": "1.75s", + "cpu": "3908.7%", + "memory": "4.1GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "486.25MB/s", + "bandwidth": "500.55MB/s", "reconnects": 0, - "status_2xx": 237512, + "status_2xx": 242602, "status_3xx": 0, - "status_4xx": 87, + "status_4xx": 84, "status_5xx": 0, - "tpl_static": 71253, - "tpl_baseline": 23751, - "tpl_items": 118756, - "tpl_me": 23751, - "cpu_breakdown": "edge: 2930% 3.1GiB | authsvc: 536% 243MiB | server: 469% 2.3GiB | cache: 140% 11MiB" + "tpl_static": 72780, + "tpl_baseline": 24260, + "tpl_items": 121301, + "tpl_me": 24260, + "cpu_breakdown": "edge: 2683% 2.3GiB | authsvc: 482% 249MiB | server: 560% 1.5GiB | cache: 183% 11MiB" }, "production-stack-256": { "framework": "fulmine", "language": "JS", - "rps": 59025, - "avg_latency": "71.00ms", - "p99_latency": "2.17s", - "cpu": "4183.0%", - "memory": "3.3GiB", + "rps": 59185, + "avg_latency": "70.40ms", + "p99_latency": "604.16ms", + "cpu": "4212.5%", + "memory": "3.2GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "569.69MB/s", + "bandwidth": "574.75MB/s", "reconnects": 0, - "status_2xx": 296898, + "status_2xx": 298295, "status_3xx": 0, - "status_4xx": 226, + "status_4xx": 242, "status_5xx": 0, - "tpl_static": 89069, - "tpl_baseline": 29689, - "tpl_items": 148449, - "tpl_me": 29689, - "cpu_breakdown": "edge: 3071% 966MiB | authsvc: 501% 63MiB | server: 404% 2.3GiB | cache: 207% 10MiB" + "tpl_static": 89488, + "tpl_baseline": 29829, + "tpl_items": 149147, + "tpl_me": 29829, + "cpu_breakdown": "edge: 3063% 874MiB | authsvc: 523% 76MiB | server: 417% 2.3GiB | cache: 210% 10MiB" }, "static-1024": { "framework": "fulmine", "language": "JS", - "rps": 378201, - "avg_latency": "2.91ms", - "p99_latency": "32.95ms", - "cpu": "6566.3%", + "rps": 382422, + "avg_latency": "2.90ms", + "p99_latency": "33.47ms", + "cpu": "6562.3%", "memory": "6.2GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "5.85GB", + "bandwidth": "5.91GB", "reconnects": 0, - "status_2xx": 1928623, + "status_2xx": 1950254, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -647,18 +647,18 @@ "static-4096": { "framework": "fulmine", "language": "JS", - "rps": 502813, - "avg_latency": "8.33ms", - "p99_latency": "52.52ms", - "cpu": "6575.3%", + "rps": 506071, + "avg_latency": "8.28ms", + "p99_latency": "48.23ms", + "cpu": "6556.6%", "memory": "7.6GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "7.77GB", + "bandwidth": "7.83GB", "reconnects": 0, - "status_2xx": 2564729, + "status_2xx": 2581179, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -666,18 +666,18 @@ "static-6800": { "framework": "fulmine", "language": "JS", - "rps": 554959, - "avg_latency": "12.38ms", - "p99_latency": "53.87ms", - "cpu": "6534.7%", + "rps": 560864, + "avg_latency": "12.26ms", + "p99_latency": "61.38ms", + "cpu": "6520.3%", "memory": "7.7GiB", "connections": 6800, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "8.58GB", + "bandwidth": "8.67GB", "reconnects": 0, - "status_2xx": 2831215, + "status_2xx": 2860657, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -685,18 +685,18 @@ "static-tls-1024": { "framework": "fulmine", "language": "JS", - "rps": 320626, - "avg_latency": "3.34ms", - "p99_latency": "32.41ms", - "cpu": "6561.5%", - "memory": "6.2GiB", + "rps": 325511, + "avg_latency": "3.30ms", + "p99_latency": "32.33ms", + "cpu": "6553.8%", + "memory": "6.3GiB", "connections": 1024, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "4.96GB", + "bandwidth": "5.03GB", "reconnects": 0, - "status_2xx": 1634986, + "status_2xx": 1660023, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -704,18 +704,18 @@ "static-tls-4096": { "framework": "fulmine", "language": "JS", - "rps": 408305, - "avg_latency": "10.17ms", - "p99_latency": "121.06ms", - "cpu": "6467.8%", + "rps": 411486, + "avg_latency": "10.08ms", + "p99_latency": "147.60ms", + "cpu": "6493.8%", "memory": "7.0GiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "6.31GB", + "bandwidth": "6.36GB", "reconnects": 0, - "status_2xx": 2082783, + "status_2xx": 2098673, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -723,18 +723,18 @@ "static-tls-6800": { "framework": "fulmine", "language": "JS", - "rps": 435435, - "avg_latency": "15.73ms", - "p99_latency": "197.18ms", - "cpu": "6442.1%", - "memory": "7.4GiB", + "rps": 439419, + "avg_latency": "15.59ms", + "p99_latency": "162.22ms", + "cpu": "6380.8%", + "memory": "7.3GiB", "connections": 6800, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "6.73GB", + "bandwidth": "6.79GB", "reconnects": 0, - "status_2xx": 2220330, + "status_2xx": 2240764, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -742,19 +742,19 @@ "upload-256": { "framework": "fulmine", "language": "JS", - "rps": 2143, - "avg_latency": "114.98ms", - "p99_latency": "960.70ms", - "cpu": "6310.4%", - "memory": "7.2GiB", + "rps": 2163, + "avg_latency": "113.75ms", + "p99_latency": "862.90ms", + "cpu": "6331.5%", + "memory": "7.3GiB", "connections": 256, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "358.17KB/s", - "input_bw": "17.00GB/s", - "reconnects": 2111, - "status_2xx": 10718, + "bandwidth": "361.99KB/s", + "input_bw": "17.16GB/s", + "reconnects": 2140, + "status_2xx": 10840, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -762,19 +762,19 @@ "upload-32": { "framework": "fulmine", "language": "JS", - "rps": 2033, - "avg_latency": "15.71ms", - "p99_latency": "95.30ms", - "cpu": "2961.9%", + "rps": 2030, + "avg_latency": "15.76ms", + "p99_latency": "99.70ms", + "cpu": "3086.7%", "memory": "6.8GiB", "connections": 32, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "339.82KB/s", - "input_bw": "16.13GB/s", - "reconnects": 2033, - "status_2xx": 10168, + "bandwidth": "339.34KB/s", + "input_bw": "16.10GB/s", + "reconnects": 2025, + "status_2xx": 10151, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0