diff --git a/README.md b/README.md index aa0b10e..87ac7a9 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ the end. In `infra.region` of `perfkit.yaml`, it creates, in this order: 1. an SSH key (see `PERFKIT_SSH_KEY` below); 2. a new VPC, `perfkit-`, whose range DigitalOcean assigns, so parallel runs never collide; -3. two `ubuntu-24-04-x64` droplets in it, `perfkit--uut` and +3. two `ubuntu-22-04-x64` droplets in it, `perfkit--uut` and `perfkit--loadgen`, tagged `perfkit` and `perfkit-run-`; 4. a firewall, `perfkit-`: from the VPC: all ports (tcp and udp) and icmp, so the load generator reaches the server's API and the server reaches the callees; SSH (22) from this machine's public IP (from `https://api.ipify.org`) and from the VPC, where the agent on the load generator reaches the server under test. @@ -159,8 +159,8 @@ digest its tag had when the run started. $ npx perfkit run --config perf/perfkit.yaml --target-version 2.31.6 --dry-run plan for Routr 2.31.6 (dry run, nothing created) region nyc3, new VPC (range assigned by DigitalOcean) - uut c-8 ubuntu-24-04-x64 - loadgen c-16 ubuntu-24-04-x64 + uut c-8 ubuntu-22-04-x64 + loadgen c-16 ubuntu-22-04-x64 firewall from the VPC: all ports (tcp/udp) and icmp; SSH (22) from 203.0.113.7 and the VPC only tags perfkit, perfkit-run-20261103T141210Z-bd3254a images fonoster/routr-edgeport:2.31.6@sha256:8bca…1866 diff --git a/package-lock.json b/package-lock.json index 9712281..52a416c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "perfkit", - "version": "0.1.7", + "version": "0.1.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "perfkit", - "version": "0.1.7", + "version": "0.1.8", "license": "MIT", "dependencies": { "commander": "^14.0.3", diff --git a/package.json b/package.json index 8c6adc9..16d7c3c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "perfkit", - "version": "0.1.7", + "version": "0.1.8", "description": "Benchmark harness for Fonoster projects: DigitalOcean runs, one report.json schema, one branded report page", "license": "MIT", "author": "Pedro Sanders ", diff --git a/src/cli/formatPlan.ts b/src/cli/formatPlan.ts index d312e01..67c6939 100644 --- a/src/cli/formatPlan.ts +++ b/src/cli/formatPlan.ts @@ -13,7 +13,7 @@ const LABEL_WIDTH = 11; * ``` * plan for Routr 2.31.5 (dry run, nothing created) * region nyc3, new VPC (range assigned by DigitalOcean) - * uut c-8 ubuntu-24-04-x64 + * uut c-8 ubuntu-22-04-x64 * ``` * * Digests are shortened to their first and last 4 hex digits. diff --git a/src/infra/constants.ts b/src/infra/constants.ts index f5c3279..bab2880 100644 --- a/src/infra/constants.ts +++ b/src/infra/constants.ts @@ -4,8 +4,12 @@ export const DO_API_URL = "https://api.digitalocean.com/v2"; export const PUBLIC_IP_URL = "https://api.ipify.org"; -/** The droplet OS image in v1. */ -export const DROPLET_IMAGE = "ubuntu-24-04-x64"; +/** + * The droplet OS image in v1. Not 24.04: on its kernel (6.8) SIPp 3.7.3 places + * ~5% fewer calls than its rate, then sends the ones it owes in a burst, which + * spoils capacity steps. On 22.04 (5.15) it holds the rate. + */ +export const DROPLET_IMAGE = "ubuntu-22-04-x64"; /** Every perfkit droplet carries it; sweep looks only at droplets with it. */ export const PERFKIT_TAG = "perfkit"; diff --git a/test/infra/createPlanRun.unit.test.ts b/test/infra/createPlanRun.unit.test.ts index dea928f..a361f53 100644 --- a/test/infra/createPlanRun.unit.test.ts +++ b/test/infra/createPlanRun.unit.test.ts @@ -57,7 +57,7 @@ describe("createPlanRun", () => { role: "uut", name: `perfkit-${RUN_ID}-uut`, size: "c-8", - image: "ubuntu-24-04-x64" + image: "ubuntu-22-04-x64" }); expect(plan.loadgen.name).to.equal(`perfkit-${RUN_ID}-loadgen`); expect(plan.images.map(({ ref }) => ref)).to.deep.equal([ diff --git a/test/infra/createProvision.unit.test.ts b/test/infra/createProvision.unit.test.ts index 4c34902..50804d7 100644 --- a/test/infra/createProvision.unit.test.ts +++ b/test/infra/createProvision.unit.test.ts @@ -70,7 +70,7 @@ describe("createProvision", () => { expect(uut).to.deep.include({ vpc_uuid: client.vpcs[0]!.id, tags: ["perfkit", `perfkit-run-${RUN_ID}`], - image: "ubuntu-24-04-x64", + image: "ubuntu-22-04-x64", size: "c-8" }); const [vpc] = client.callsTo("createVpc")[0] as [{ name: string }]; diff --git a/test/infra/run.unit.test.ts b/test/infra/run.unit.test.ts index 9398000..fe1f800 100644 --- a/test/infra/run.unit.test.ts +++ b/test/infra/run.unit.test.ts @@ -27,8 +27,8 @@ const DELETED = "Everything this run created was deleted."; const PLAN = `plan for Routr 2.31.5 (dry run, nothing created) region nyc3, new VPC (range assigned by DigitalOcean) - uut c-8 ubuntu-24-04-x64 - loadgen c-16 ubuntu-24-04-x64 + uut c-8 ubuntu-22-04-x64 + loadgen c-16 ubuntu-22-04-x64 firewall from the VPC: all ports (tcp/udp) and icmp; SSH (22) from 203.0.113.7 and the VPC only tags perfkit, perfkit-run-${RUN_ID} images fonoster/routr-edgeport:2.31.5@sha256:4f1c…e2a0