How we moved every OBSERVE component onto Kylin/UOS with Phytium/Kunpeng/Hygon CPUs: ARM64 benchmarks, OS and database dialect adaptations, and a reusable acceptance checklist.
This post records what it actually took to move every OBSERVE component onto a domestic (xinchuang) stack, including the pitfalls. It's written for infrastructure leads responsible for xinchuang rollout.
A typical xinchuang environment combines Kylin V10 or UOS for the OS, Phytium (ARM64) or Kunpeng (ARM64) or Hygon (x86_64) for the CPU, and DM or KingbaseES for the database. Our adaptation strategy is to change the runtime base, not the business logic: the collector, storage layer, and query layer ship dual-architecture ARM64 and x86_64 images, and the metadata layer has dialect support for DM and KingbaseES.
Both single-node and clustered deployments are supported. Under ~500GB of daily logs, a single node running three processes (collector, storage, query) is enough; above that, the storage layer scales out to distributed mode. The key decision behind this was separating metadata from time-series data early — that split is what made the database port a matter of days rather than months, and it keeps query performance off the relational engine entirely.
The most common migration problems on Phytium/Kunpeng aren't compilation — they're these two:
For benchmarking we ran identical write and search workloads — a write-heavy stream of roughly 500k log lines per second plus a concurrent mixed query load — on equal-core-count nodes. Kunpeng 920 delivered about 80%–95% of the throughput of a same-generation x86 box, with the gap driven mostly by single-core speed. Horizontal scaling closes it, but plan capacity accordingly rather than assuming 1:1 parity when migrating an existing fleet. Hygon, being x86_64 itself, needed essentially no CPU-side work; the effort there landed on the OS and database layers instead.
Metadata (users, alert rules, dashboard configs) lands in DM or KingbaseES, and the changes concentrate on:
AUTO_INCREMENT with sequences;LIMIT/OFFSET dialect;Logs and metrics — the bulk time-series data — never touch a traditional relational store. They go to our columnar storage engine, which is pure Go/C and highly CPU-instruction-set-sensitive, so we ship a separately optimized ARM64 build. Because only a thin metadata layer depends on the relational database, database domestication has almost no effect on query performance. That's the direct payoff of separating metadata from time-series data.
Before going live, verify the following:
ldd reports no missing libraries.One final note from the field: the certification paperwork often takes longer than the engineering. If you're under a deadline, start the adaptation and the domestic-hardware certification application in parallel, not sequentially.