
š§© At Scale, Time Is Your Strongest (or Weakest) Link
When your system hits 1 million TPS, milliseconds arenāt enough.
Every microservice, log, and transaction wants to know: "What happened, exactly when?"
And if you're still timestamping in milliseconds ā congrats ā you just grouped 1,000 transactions under the same time.
Thatās a challenge for:
-
š Ordering
-
š Auditing
-
š§© Debugging
-
š¦ Replication
-
š§ Observability
Letās talk timestamp granularity, how to implement it right, and where the real cost of precision lives. Spoiler: some platforms make this a lot easier than others ā and System Z might already have it built in.
š§ How Precise Is Precise Enough?
At 1M TPS:
| Granularity | Time Between Events | What Happens |
|---|---|---|
| 1 second | 1,000,000 µs | 1 million events share a timestamp |
| 1 ms | 1,000 µs | 1,000 events share a timestamp |
| 1 µs | 1 µs | ā Unique per event |
| 1 ns | 0.001 µs | Useful for high concurrency/threading |
šÆ Goal: Microsecond granularity (µs) ā minimum for 1M TPS
š Bonus: Nanosecond (ns) granularity ā ideal in multi-threaded or distributed systems
āļø How You Implement It Depends on Your Platform
On IBM Z (z/OS / LinuxONE):
-
Hardware-level time:
STCK,STCKE, ETOD -
Precision: Micro or nano, monotonic across CPUs and LPARs
-
Available natively in COBOL, PL/I, Java, Db2, CICS, SMF
-
No additional tooling required
On x86 / Kubernetes:
-
OS/syscall based:
clock_gettime()or app frameworks -
Consistency depends on time sync (NTP, Chrony)
-
High precision often means custom tooling, sidecars, or observability layers
šø Letās Talk Cost
Precision has trade-offs ā in storage, performance, and operational overhead.
Hereās a side-by-side look:
| Area | System Z | x86 / Kubernetes |
|---|---|---|
| šļø Timestamp Format | 64-bit binary (ETOD/STCK) | Human-readable formats (e.g., ISO-8601) often exceed 64 bits |
| āļø CPU Overhead | Lightweight, hardware-level | Syscalls or library functions |
| š Clock Sync | Synchronized across LPARs and cores | Requires time services (e.g. NTP, Chrony) |
| š§° Tooling | Built-in across platform | Depends on stack (OpenTelemetry, Fluentd, etc.) |
| š§ Engineering Overhead | Low ā precision is default | Higher ā needs design and validation |
š Worth noting: human-friendly formats like ISO 8601 are great for parsing ā but can be surprisingly large in memory and storage. More bytes, more parsing effort, more overhead.
š§¾ TL;DR: In many platforms, precision is something you plan for.
On IBM Z, itās something you inherit.
š§ So What?
-
If you're building for scale ā microservices, APIs, financial apps ā precision isnāt optional.
-
If you're running hybrid or cloud-native workloads, time precision can be a challenge.
-
If you're on System Z? You may already have what others are still engineering toward.
Not everything in the mainframe world is "legacy." Some of it is just already solved.
āļø Final Thought
Whether you're building systems of record or systems of engagement, time is a shared truth. Itās how we order events, trace causality, and ensure consistency.
So ask yourself:
š Is your platform helping or hindering precision?
š ļø Are you building around time ā or building on top of it?
Written by Henri Kuiper
