You just spun up a VPS — but how do you actually tell whether it's any good? And when a provider promises "CN2 GIA" routing into China, how do you confirm it's the real deal and not marketing fluff?
This guide rounds up the most complete, current collection of VPS benchmark scripts for 2026 — from raw performance and return-route tracing to IP reputation and streaming-unlock checks. If you're deploying services that need to reach users across borders (China included), this is the toolkit that tells you what the spec sheet won't. One article, everything you need.
1. What You'll Get Out of This
- Grasp the basics of VPS benchmarking
- Know how to use the common speed-test scripts
- Read the results and judge a VPS's quality for yourself
2. The Plan / How to Think About It
What should you look at when benchmarking a VPS?
| Dimension | Why it matters | Test |
|---|---|---|
| Basic performance | CPU/RAM/disk decide what services you can run | bench.sh, YABS |
| Network quality | The return route decides access speed from China | Return-route tracing |
| IP quality | Affects whether you can reach certain services | IP quality check |
| Streaming unlock | Some users need Netflix etc. unlocked | Streaming check |
| Three-carrier speed | Real-world speed on China Telecom/Unicom/Mobile | Three-carrier speed test |
Sorting the scripts
I split the common scripts into 5 buckets, from basic to advanced:
1. Comprehensive performance → learn the hardware basics
2. Return-route tracing → see if it's CN2 or plain BGP
3. IP quality check → see whether the IP is clean
4. Streaming unlock → see which platforms are unlocked
5. Three-carrier speed test → real upload/download speeds
3. Step-by-Step
3.1 Comprehensive Performance Tests
bench.sh (the classic)
The simplest all-in-one test — one line and you're done:
wget -qO- bench.sh | bash
What it tests:
- System info (CPU model, RAM, disk)
- I/O speed test
- Network speed test (multiple nodes)
Reading the results:
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2025-05-08
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
CPU Cores : 1 @ 2699.932 MHz
CPU Cache : 30720 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 14.7 GB (5.3 GB Used)
Total Mem : 960.7 MB (458.2 MB Used)
Total Swap : 1024.0 MB (227.6 MB Used)
System uptime : 334 days, 21 hour 25 min
Load average : 0.00, 0.00, 0.00
OS : Debian GNU/Linux 12
Arch : x86_64 (64 Bit)
Kernel : 6.1.0-30-amd64
TCP CC : bbr
Virtualization : KVM
IPv4/IPv6 : ✓ Online / ✓ Online
Organization : AS35916 MULTACOM CORPORATION
Location : Los Angeles / US
Region : California
----------------------------------------------------------------------
I/O Speed(1st run) : 322 MB/s
I/O Speed(2nd run) : 487 MB/s
I/O Speed(3rd run) : 532 MB/s
I/O Speed(average) : 447.0 MB/s
----------------------------------------------------------------------
Node Name Upload Speed Download Speed Latency
Speedtest.net 699.41 Mbps 461.15 Mbps 36.39 ms
Paris, FR 594.12 Mbps 644.67 Mbps 136.16 ms
Hong Kong, CN 3.85 Mbps 1.42 Mbps 167.20 ms
Singapore, SG 58.95 Mbps 1.60 Mbps 218.86 ms
Tokyo, JP 736.11 Mbps 889.69 Mbps 108.35 ms
----------------------------------------------------------------------
Finished in : 2 min 46 sec
Timestamp : 2026-01-10 13:34:13 UTC
----------------------------------------------------------------------
Key metric:
| Metric | Excellent | Pass | Poor |
|---|---|---|---|
| I/O Speed | >500MB/s | 200-500MB/s | <200MB/s |
SuperBench.sh (China speed-test edition)
An improved fork of bench.sh that swaps in domestic (China) speed-test nodes, so it's better for measuring speeds back to China:
wget -qO- git.io/superbench.sh | bash
# or
curl -Lso- git.io/superbench.sh | bash
How it differs from bench.sh:
- bench.sh tests against global nodes
- SuperBench.sh tests against China Telecom / Unicom / Mobile nodes
Best for: when you need the real-world speed from the VPS back to China.
ZBench (the all-in-one, recommended)
Merges bench.sh and SuperBench.sh, adds Ping and route tracing, and can generate a web report you can share:
# Chinese version
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh
# English version (use this if Chinese characters show as garbage)
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench.sh && bash ZBench.sh
It hung for me here, so I didn't go further.
What it tests:
- System info + I/O test
- Domestic + international speed tests
- Ping test
- Route tracing
- Generates a web report (shareable)
Rating: ⭐⭐⭐⭐
The standout feature: it spits out a web link, which makes sharing your results easy.
YABS (with GeekBench scores)
A more detailed test that includes GeekBench scores and an fio disk test:
curl -sL yabs.sh | bash
What it tests:
- System info
- fio disk test (4K random R/W)
- GeekBench 6 score
- iperf3 network speed test
Note: the GeekBench test takes a while (around 5–10 min) and hogs resources.
Reading the results:
Geekbench 6 Benchmark Test:
---------------------------------
Single Core : 1200
Multi Core : 4500
GeekBench 6 reference:
| Score | Level | Typical config |
|---|---|---|
| Single-core >1500 | Excellent | High-frequency CPU |
| Single-core 1000-1500 | Good | Mainstream config |
| Single-core <1000 | Mediocre | Heavily oversold or old CPU |
LemonBench
A comprehensive all-in-one test with a friendly UI, originally built by a Chinese developer:
wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --full
# Fast test (skips some time-consuming items)
wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --fast
What it tests:
- System info
- Network info
- Streaming unlock
- CPU performance test
- Memory performance test
- Disk performance test
UnixBench (CPU-only)
A veteran script dedicated to CPU performance; its scores are widely recognized:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh
Note: this one runs long (30+ minutes), and it only tests the CPU — no network.
Best for: when you need a detailed read on CPU performance to compare compute across VPS providers.
The Fusion benchmark (spiritLHLS/ecs)
An absurdly complete script (Chinese-built) that bundles in just about every test there is:
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh
Or use the mirror:
bash <(wget -qO- bash.spiritlhl.net/ecs)
What it tests:
- Basic system info
- CPU/RAM/disk tests
- Streaming-unlock check
- IP quality check
- Return-route tracing
- Three-carrier speed test
- ...
Rating: ⭐⭐⭐⭐⭐
It does so much that if you only run one script, run this one.
Menu options: When you launch it you get a menu; the ones you'll use most:
-
0- Full test (takes a while) -
1- Basic system info -
4- Three-carrier speed test + return route -
7- IP quality check -
8- Streaming unlock
3.2 Return-Route Tracing
Return routing decides the network quality from the VPS back to China.
Why the return route matters more than the outbound
- Outbound: the route from you to the VPS (small amount of data)
- Return: the route the VPS uses to send data back to you (large amount of data)
When we browse, we download far more than we upload — so the return route is what really counts.
Common routes compared
| Route | AS number | IP signature | Notes | Latency | Price |
|---|---|---|---|---|---|
| CN2 GIA | AS4809 | 59.43.x.x (end-to-end) | China Telecom's best route | Low | Pricey |
| CN2 GT | AS4809 | 59.43 (intl leg) + 202.97 (domestic leg) | Telecom's runner-up | Lower | Mid-high |
| 163 backbone | AS4134 | 202.97.x.x | Telecom's ordinary route | High | Cheap |
| 9929/CUPM | AS9929 | 218.105.x.x | Unicom optimized route | Low | Pricey |
| 4837 | AS4837 | 219.158.x.x | Unicom ordinary route | Higher | Cheap |
| CMIN2 | AS58807 | 223.120.x.x | Mobile optimized route | Lower | Mid-high |
| CMI | AS58453 | 223.118/119.x.x | Mobile ordinary route | Average | Cheap |
How to tell which route you're on (important)
Look at the IP signatures in the route:
59.43.x.x → CN2 line (China Telecom premium)
202.97.x.x → 163 backbone (China Telecom ordinary)
218.105.x.x → Unicom 9929 (Unicom premium)
219.158.x.x → Unicom 4837 (Unicom ordinary)
223.120.x.x → Mobile CMIN2 (Mobile premium)
Telling CN2 GIA apart from CN2 GT:
- CN2 GIA: 59.43.x.x the whole way, no 202.97
- CN2 GT: 59.43 on the international leg, switching to 202.97 once inside China
backtrace (quick verdict, recommended)
curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh
Reading the results:
Beijing Telecom 219.141.147.210 testing Telecom CN2 GIA
Beijing Unicom 202.106.50.1 testing Unicom 4837
Beijing Mobile 221.179.155.161 testing Mobile CMI
Shanghai Telecom 202.96.209.133 testing Telecom CN2 GIA
Read the route type in the last column:
-
Telecom CN2 GIA→ best -
Unicom 9929→ Unicom's best -
Mobile CMIN2→ Mobile optimized -
Telecom 163/Unicom 4837→ ordinary routes
mtr_trace (three-carrier return-route test)
curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh | bash
This script traces the return route to multiple cities across China Telecom, Unicom, and Mobile.
testrace.sh (detailed route tracing)
wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh
bash testrace.sh
After launching, you can pick which city to trace to.
NextTrace (even more detail)
# Install
curl nxtrace.org/nt | bash
# Trace to a specific IP
nexttrace 219.141.147.210
Strength: shows latency and AS number for every hop, so you can see the full path.
BestTrace (GUI)
Great for Windows users — it has a GUI and lets you trace the route from your own machine to the VPS.
Download: https://www.ipip.net/product/client.html
3.3 IP Quality Checks
IP quality affects:
- Whether you can reach services like Google and ChatGPT
- Whether mail you send gets flagged as spam
- Whether the IP is flagged as high-risk by security services
IP.Check.Place (recommended)
bash <(curl -Ls IP.Check.Place)
Reading the results:
-------------------------------
IP Quality Score
-------------------------------
Scamalytics: Score 15 (Low Risk)
IP2Location: Proxy/Hosting
IP-API: Hosting
-------------------------------
Blacklist Check
-------------------------------
Spamhaus: Not Listed
SORBS: Not Listed
-------------------------------
Key metrics:
| Metric | Notes |
|---|---|
| Scamalytics Score | <30 excellent, 30-50 average, >50 poor |
| Blacklist | Ideally all "Not Listed" |
ipcheck.ing
bash <(curl -sL ipcheck.ing)
Friendlier interface, more intuitive results.
3.4 Streaming-Unlock Checks
Checks whether Netflix, Disney+, ChatGPT and similar services work from your VPS:
RegionRestrictionCheck (recommended)
bash <(curl -L -s check.unlock.media)
Sample output:
============[ Multination ]============
Netflix: Yes (Region: US)
Disney+: Yes (Region: US)
YouTube Premium: Yes (Region: US)
ChatGPT: Yes
Spotify: Yes
=======================================
Common results:
-
Yes (Region: XX)— unlocked, region XX -
No— locked -
Originals Only— only original content unlocked
MediaUnlockTest
bash <(curl -Ls unlock.moe)
Same idea, but it checks more platforms.
3.6 Pre-Purchase Testing (no VPS required)
Haven't bought a VPS yet? Here's how to test in advance.
Method 1: Ping the test IP
Providers usually publish a test IP — ping it first to check latency and packet loss:
# Windows
ping -n 100 TEST_IP
# Mac/Linux
ping -c 100 TEST_IP
Key metrics:
- Latency: US West <200ms, Japan <100ms, Hong Kong <50ms counts as normal
- Packet loss: <5% acceptable, >10% a problem
Method 2: Outbound route tracing
Trace the route from your own machine to the VPS (the outbound path):
Windows: download BestTrace — GUI, very intuitive.
Mac/Linux:
# Install mtr
brew install mtr # Mac
apt install mtr # Linux
# Run it
mtr TEST_IP
Method 3: Looking Glass
A lot of VPS providers offer a Looking Glass page where you can:
- Ping from the VPS to you
- See the return route
- Download test files
How to find a Looking Glass:
- Look for "Looking Glass" or "Network Test" on the provider's site
- Google " Looking Glass"
Method 4: Download a test file
Providers usually host test files — just download one in your browser and watch the speed:
Common test-file paths:
http://TEST_IP/100MB.test
http://TEST_IP/1GB.test
Tip: testing during peak hours (8–10 PM) is more telling.
3.5 Three-Carrier Speed Test
Measures real-world speeds across China's three carriers (Telecom, Unicom, Mobile):
AutoSpeed three-carrier speed test
bash <(curl -sL bash.icu/speedtest)
Speedtest CLI (official)
# Install
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt install speedtest
# Run
speedtest
Reading the results:
Download: 940.22 Mbps
Upload: 102.55 Mbps
Latency: 45.12 ms
| Metric | 1Gbps reference | 100Mbps reference |
|---|---|---|
| Download | >800Mbps | >80Mbps |
| Upload | >100Mbps | >10Mbps |
| Latency | <50ms excellent | <100ms acceptable |
4. Wrap-Up
My benchmarking workflow
Before you buy:
├── Ping the test IP — check latency and loss
├── Trace the outbound route with BestTrace
└── Find a Looking Glass to test the return route
After you buy:
Step 1: Run the Fusion script (ecs.sh) or ZBench
↓ One script covers most of the testing
Step 2: If the return route is unclear, run backtrace
↓ Confirm which line you're on
Step 3: If you care about IP quality, run IP.Check.Place
↓ Check for risk flags
Step 4: Log the results and compare against the provider's claims
Route quality cheat sheet
| Route | Telecom | Unicom | Mobile | Price |
|---|---|---|---|---|
| CN2 GIA | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | $$$ |
| CN2 GT | ⭐⭐⭐ | ⭐ | ⭐ | $$ |
| 9929/CUPM | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | $$$ |
| CMIN2 | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ | $$ |
| 163/4837/CMI | ⭐ | ⭐ | ⭐ | $ |
Buying advice
- Know your use case first: dev environments want low latency, production wants stability
- Test during peak hours: 8–10 PM results are more representative
- Verify the provider's claims: if they say CN2 GIA, run a return-route trace and check
- Run it more than once: a single run can mislead — average several runs
Benchmark script cheat sheet
Comprehensive performance
| Script | Strength | Command |
|---|---|---|
| bench.sh | Classic, global speed test | `wget -qO- bench.sh \ |
| SuperBench | China-node speed test | {% raw %}`wget -qO- git.io/superbench.sh \ |
| ZBench ⭐ | All-in-one, generates a report | {% raw %}wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh
|
| YABS | GeekBench scores included | `curl -sL yabs.sh \ |
| LemonBench | Friendly UI, Chinese-built | {% raw %}`wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh \ |
| Fusion ecs ⭐⭐ | Most complete | {% raw %}bash <(wget -qO- bash.spiritlhl.net/ecs)
|
| UnixBench | CPU-only | wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh && bash unixbench.sh |
Return-route tracing
| Script | Strength | Command |
|---|---|---|
| backtrace ⭐ | Quick route verdict | `curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf \ |
| mtr_trace | Multi-city, three carriers | {% raw %}`curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh \ |
| testrace | Detailed route tracing | {% raw %}wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh && bash testrace.sh
|
| NextTrace | Visual route tracing | `curl nxtrace.org/nt \ |
Other tests
| Script | Strength | Command |
|---|---|---|
| IP quality | IP risk scoring | {% raw %}bash <(curl -Ls IP.Check.Place)
|
| Streaming unlock | Netflix / Disney+ etc. | bash <(curl -L -s check.unlock.media) |
| Three-carrier speed test | Telecom / Unicom / Mobile | bash <(curl -sL bash.icu/speedtest) |
Route quality cheat sheet
| Route | Telecom | Unicom | Mobile |
|---|---|---|---|
| CN2 GIA | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| CN2 GT | ⭐⭐⭐ | ⭐ | ⭐ |
| 9929/CUPM | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| CMIN2 | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| Plain BGP | ⭐ | ⭐ | ⭐ |
Pre-purchase advice
Most VPS providers offer a Looking Glass or a test IP. Before you buy:
-
Ping test:
ping TEST_IPto check latency - Route test: use BestTrace to trace from your machine to the target IP
- Download test: pull a test file from the Looking Glass to gauge speed
5. Troubleshooting Log
Scripts won't run
Problem: some scripts need root.
Fix:
sudo bash <(curl -sL SCRIPT_URL)
Speed-test results vary wildly
Problem: the same VPS gives very different numbers across runs.
Cause:
- Network fluctuation
- The VPS is oversold, so resources are unstable
- The speed-test node is congested
Tip: run it several times and average the results; test at different times of day.
GeekBench won't run
Problem: on a small-RAM VPS, GeekBench runs out of memory (OOM).
Fix:
# Create swap (temporary)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Then run the test again
curl -sL yabs.sh | bash
# Remove swap when done
sudo swapoff /swapfile
sudo rm /swapfile
Return-route test fails
Problem: backtrace or another routing script won't run.
Fix:
# Install dependencies
apt update && apt install -y curl wget mtr traceroute
# Re-run
curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh
6. FAQ
Q: Will these benchmark scripts leak my info?
A: These scripts are all open source — you can read the code. They only test VPS performance and don't upload anything sensitive. Still, I'd recommend:
- Get them from trusted sources like GitHub
- If you're unsure, download and read the code before running
Q: Why are my speed-test results so different from someone else's?
A: A lot of things affect it:
- Time of day (peak vs off-peak)
- Your local network (which carrier you're on)
- The VPS's current load
- The state of the speed-test node
Test during the evening peak (8–10 PM) for numbers that actually mean something.
Q: The provider claims CN2 GIA — how do I verify it?
A: Run a return-route trace (backtrace) and read the output:
- Real CN2 GIA: 59.43.x.x the whole way, no 202.97
- Fake CN2 GIA (actually GT): 59.43 on the international leg, 202.97 on the domestic leg
- Not CN2 at all: 202.97 the whole way
Q: What I/O speed counts as normal?
A: Reference values:
- SSD: 500MB/s and up
- Ordinary cloud disk: 200–500MB/s
- HDD or heavily oversold: <200MB/s
Q: Do I need to run every single script?
A: Nope. Recommended flow:
- Start with the Fusion script (ecs.sh) or ZBench — one script covers most of it
- If you want to dig into the route, run backtrace
- If you care about IP quality, run IP.Check.Place
Q: How long does testing take?
A: Rough timings:
- bench.sh: 2–3 minutes
- SuperBench / ZBench: 5–10 minutes
- YABS (with GeekBench): 10–15 minutes
- Fusion full test: 15–30 minutes
- UnixBench: 30+ minutes
What's Next
Common VPS traps and how to dodge them — the pitfalls I've hit, including bad IPs, fake route labels, hidden fees, and more.
Last updated: January 2026
















Top comments (0)