Type: reference
Applies to: Pulse Historian · edge/on-prem + managed cloud
Measured ingest, backfill, read-latency, and concurrency figures for Pulse Historian (the storage engine, Pulse Chronos). These are empirical measurements from a field benchmark, not design targets.
Source of figures: Pulse_Historian_Benchmark_Report.xlsx (ExactSpace, 2026-07-02). All figures on this page come from that report; no other benchmark run is cited here. The customer-facing brief built on the same report is Performance.
Two machines were tested — a workstation PC (representative of an edge / on-prem install) and a cloud VM (representative of a managed cloud deployment). Treat cross-machine numbers as two independent single-node runs, not a scaling curve.
| Attribute | Workstation PC (edge/on-prem) | Cloud Server (managed cloud) |
|---|---|---|
| Physical / virtual | Physical | Virtual |
| CPU | AMD Ryzen 7 7800X3D (8-core) | L8aos v4-series VM |
| Cores / threads | 8 / 16 | 4 / 8 |
| RAM | 32 GB | 64 GB |
| Storage | NVMe SSD (931 GB, 305 GB free) | Premium SSD LRS (128 GiB, 500 IOPS) |
| OS | Windows 11 Pro (build 26200) | Linux |
| Transport | local | local |
Common test assumptions: 1-second (1 Hz) sampling for all write/backfill tests; 50,000 tags (live + backfill); read windows computed at 1 s resolution (1 month = 30 days = 2,592,000 s; 1 year = 365 days = 31,536,000 s; a 2-year historic span = 730 days = 63,072,000 s/tag).
| Metric | Workstation PC | Cloud Server |
|---|---|---|
| Sustained live ingest (50k tags @ 1 Hz) | 47,908 pts/s, 0 dropped (60 min) | 46,570 pts/s, 0 dropped (12 h) |
| Historic backfill rate (bulk load) | 1.00 M pts/s | 1.66 M pts/s |
| Read latency — 1 tag × 1 month | 359 ms | 61 ms |
| Read latency — 100 tags × 1 month | 11,670 ms | 6,484 ms |
| Peak read concurrency throughput (1 h × 10 tags) | ~143 req/s, 0 errors | ~587 req/s, 0 errors |
Target: 50,000 tags streaming at 1 Hz = 50,000 points/sec sustained (JSON payload, batch size 50,000).
| Machine | Duration | Achieved (pts/s) | Sustained full run? | CPU avg / peak | RAM avg / peak | Disk write | Dropped pts |
|---|---|---|---|---|---|---|---|
| Workstation PC | 60 min | 47,908 | yes | 36.1% / 100% | 12.1 / 16.7 GB | 110.2 MB/s | 0 |
| Cloud Server | 720 min (12 h) | 46,570 | yes | 9.6% / 89.6% | 4.4 / 8.3 GB | 199.5 MB/s | 0 |
Both machines held the full 50,000-tag 1 Hz load for the entire run with zero backlogged or dropped points. The workstation ran the CPU harder (peaks to 100% on the 8-core part); the cloud VM sat far below its ceiling (9.6% average) but pushed nearly double the disk write rate. This test measures can it keep up with a realistic plant firehose — not peak burst throughput (see backfill below for that).
A reduced-scale bulk-load smoke test: 100 tags over 365 days at 1 Hz (3,153,600,000 points total), loaded as fast as the engine accepts.
| Machine | Total points | Wall clock | Ingest rate |
|---|---|---|---|
| Workstation PC | 3,153,600,000 | 3,141 s | 1,003,976 pts/s |
| Cloud Server | 3,153,600,000 | 1,905 s | 1,655,259 pts/s |
Bulk backfill runs ~20–35× faster than the live 1 Hz target because it is not rate-limited to wall-clock time — it is the engine's practical max-ingest figure on each box. The cloud VM's faster storage gave it the higher rate here.
> TODO-VERIFY:the report's on-disk-size and compression-ratio columns for this test were not cleanly captured (on-disk size logged as 0 GB; bytes/point ≈ 15–17). Re-capture sealed on-disk size before quoting a compression ratio; the cost model lives in Capacity Planning.
Median read latency (ms) for 1 / 10 / 100 tags across 1 hour / 1 day / 1 month / 1 year windows. Raw points per query at 1 s resolution are shown for scale.
Workstation PC (edge/on-prem)
| Tags \ Window | 1 hour | 1 day | 1 month | 1 year |
|---|---|---|---|---|
| 1 tag | 14.1 | 44.5 | 358.7 | 4,304.6 |
| 10 tags | 14.5 | 76.5 | 1,287.3 | 15,232.8 |
| 100 tags | 19.1 | 409.4 | 11,670.0 | — |
| (raw points, 1 tag) | 3.6 K | 86.4 K | 2.59 M | 31.5 M |
Cloud Server (managed cloud)
| Tags \ Window | 1 hour | 1 day | 1 month | 1 year |
|---|---|---|---|---|
| 1 tag | 3.3 | 6.6 | 60.8 | 839.2 |
| 10 tags | 3.2 | 26.0 | 630.6 | 7,738.8 |
| 100 tags | 4.0 | 199.1 | 6,483.7 | — |
p95 latencies track the medians closely (within a few percent). The 100-tag × 1-year cell (≈3.15 B points) was not recorded on either machine. The cloud VM was 3–7× faster on the large reads — its 64 GB RAM keeps far more of the working set in page cache. On the workstation, the heaviest reads drove RAM to ~20–22 GB and CPU to 100%; on the cloud VM, to ~18 GB and ~70–76%.
Each request reads 1 hour of data for 10 tags; concurrency swept 1 → 64.
Workstation PC
| Concurrency | Throughput (req/s) | Median (ms) | p95 (ms) | Errors |
|---|---|---|---|---|
| 1 | 44.1 | 16.7 | 34.0 | 0 |
| 4 | 118.0 | 29.3 | 52.6 | 0 |
| 8 | 142.1 | 50.1 | 67.6 | 0 |
| 16 | 142.5 | 76.6 | 102.2 | 0 |
| 32 | 126.7 | 87.1 | 122.8 | 0 |
| 64 | 120.2 | 91.9 | 122.4 | 0 |
Cloud Server
| Concurrency | Throughput (req/s) | Median (ms) | p95 (ms) | Errors |
|---|---|---|---|---|
| 1 | 322.8 | 2.8 | 3.3 | 0 |
| 4 | 570.1 | 5.8 | 7.6 | 0 |
| 8 | 584.2 | 11.2 | 15.5 | 0 |
| 16 | 586.9 | 17.1 | 25.8 | 0 |
| 32 | 587.4 | 17.4 | 26.5 | 0 |
| 64 | 587.0 | 17.1 | 25.9 | 0 |
0 errors at every concurrency level on both machines. The workstation saturates around 8 concurrent readers (~142 req/s) — adding more only raises latency. The cloud VM plateaus around 8–16 readers (~587 req/s) and holds throughput flat out to 64. Beyond the plateau the limit is read contention, not error rate.
Source:
Pulse_Historian_Benchmark_Report.xlsx(ExactSpace, 2026-07-02). Figures are document-sourced, not code-cited.
Last updated: 2026-07-16