NoLimitNodes
PricingDocsBlogAbout
SupportContact
Log in
  1. Home/
  2. Products/
  3. Infrastructure/
  4. VDS
Deterministic Compute · VDSFrankfurt · validator-adjacent

Solana VDS: pinned cores, isolated RAM, zero CPU steal time

When shared vCPU stops giving you consistent latency, this is the next rung: physical EPYC cores pinned to your VM, RAM on the same NUMA node, bandwidth committed, not borrowed. Same room as the validators, dedicated to you. <0.5 ms to every NLN Solana service. From $245/mo.

Configure a serverTalk to an engineer
vds.performance · frankfurt · verifying the contract
$ lscpu | grep -E "^(CPU\(s\)|Thread|Core)"
CPU(s): 16
Thread(s) per core: 1 # no shared hyperthreads
$ numactl --hardware | head -2
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 65536 MB
$ stress-ng --cpu 16 -t 30 & mpstat -P ALL 5 6 | grep -i steal
%steal: 0.00 0.00 0.00 0.00 0.00 0.00
# every core, every sample. that is the contract.
CPU steal time
0.00%
under 95% sustained load, contractual
Memory bandwidth
186 GB/s
STREAM Triad, single NUMA node
Provisioning
2–3 min
capacity held hot, never carved
ConfigureOverviewIsolationTail latencyvs MetalDecidePlatformField guideOperationsFAQ
from $245/mo
Catalog · 3 tiers

Configure a VDS

Every spec and price below is exactly what hits checkout. The catalog is generated from the same table that does the billing.
Need a shape that isn't on the rail: more drives, GPUs, 100 Gbps? We quote custom builds in 24 h.
vds.standard

Eight cores nobody else can touch. Steal time: 0.00% by contract.

$245/mo
monthly · cancel anytime
Compute
AMD EPYC · 8 cores @ 3.0 GHz · pinned
8 physical cores · pinned via cgroups · single NUMA node
Memory
32 GB DDR4 ECC
allocated NUMA-local to your cores
Storage
2 × 250 GB NVMe
▮ 250 GB NVMe▮ 250 GB NVMe
dedicated NVMe namespaces, local to the host
Network
5 Gbps committed10 TB included egressprivate VLAN to the NLN fleet
Contract
  • ·Physical cores pinned, single socket, no shared hyperthreads
  • ·RAM allocated from the same NUMA node as your cores
  • ·Committed bandwidth in the QoS class, not borrowed
  • ·Dedicated NVMe namespaces, verifiable with lscpu / numactl / mpstat
  • ·Provisioning: 2–3 minutes · capacity is held hot
  • ·SLO: 99.99% monthly · host-failure migration target < 8 min
Sized for
Hot trading loopsFull-volume gRPC consumersLatency-sensitive single services

Not for: Bursty, mostly-idle workloads: a vps.pro does that for $55 less.

Talk to an engineerFrankfurt · root SSH on handover · no setup fee
vds.performance

The indexer workhorse: ingest, decode, and Postgres on one NUMA node.

$495/mo
monthly · cancel anytime
Compute
AMD EPYC · 16 cores @ 3.0 GHz · pinned
16 physical cores · pinned via cgroups · single NUMA node
Memory
64 GB DDR4 ECC
allocated NUMA-local to your cores
Storage
2 × 480 GB NVMe
▮ 480 GB NVMe▮ 480 GB NVMe
dedicated NVMe namespaces, local to the host
Network
10 Gbps committedUnmetered egressprivate VLAN to the NLN fleet
Contract
  • ·Physical cores pinned, single socket, no shared hyperthreads
  • ·RAM allocated from the same NUMA node as your cores
  • ·Committed bandwidth in the QoS class, not borrowed
  • ·Dedicated NVMe namespaces, verifiable with lscpu / numactl / mpstat
  • ·Provisioning: 2–3 minutes · capacity is held hot
  • ·SLO: 99.99% monthly · host-failure migration target < 8 min
Sized for
Indexer + Postgres co-locatedMEV searchersGeyser consumers (1–2 programs)

Not for: Mainnet validators. The RAM ceiling and shared drives rule it out.

Talk to an engineerFrankfurt · root SSH on handover · no setup fee
vds.max

The top of virtualization. Past this point, buy the machine.

$895/mo
monthly · cancel anytime
Compute
AMD EPYC · 32 cores @ 3.0 GHz · pinned
32 physical cores · pinned via cgroups · single NUMA node
Memory
128 GB DDR4 ECC
allocated NUMA-local to your cores
Storage
4 × 480 GB NVMe
▮ 480 GB NVMe▮ 480 GB NVMe▮ 480 GB NVMe▮ 480 GB NVMe
dedicated NVMe namespaces, local to the host
Network
10 Gbps committedUnmetered egressprivate VLAN to the NLN fleet
Contract
  • ·Physical cores pinned, single socket, no shared hyperthreads
  • ·RAM allocated from the same NUMA node as your cores
  • ·Committed bandwidth in the QoS class, not borrowed
  • ·Dedicated NVMe namespaces, verifiable with lscpu / numactl / mpstat
  • ·Provisioning: 2–3 minutes · capacity is held hot
  • ·SLO: 99.99% monthly · host-failure migration target < 8 min
Sized for
RPC mirrors (non-voting)Full-chain Geyser pipelinesHeavy multi-service stacks

Not for: Mainnet voting or >128 GB RAM: step up to a physical 64-core machine.

Cross-shopnln.metal.base: a full 64-core EPYC 9554P, 128 GB, physical NVMe, no hypervisor at all.

View nln.metal.base →
Talk to an engineerFrankfurt · root SSH on handover · no setup fee
What this is

You stop buying averages. You start buying the distribution.

VDS is what you graduate to when shared vCPU stops giving you consistent performance. A virtual dedicated server pins specific physical cores to your VM using cgroups, with RAM allocated from the same NUMA node, and network bandwidth committed in the QoS class rather than borrowed from a shared pool. You still SSH into a Linux box, but the performance distribution tightens because there is nobody else competing for the silicon. Three tiers in Frankfurt, all private-networked to NLN validator nodes with <0.5 ms to every NLN Solana service: vds.standard at $245/mo (8 dedicated EPYC cores at 3.0 GHz, 32 GB RAM, 2x 250 GB NVMe, 5 Gbps, 10 TB egress), vds.performance at $495/mo (16 dedicated EPYC cores at 3.0 GHz, 64 GB RAM, 2x 480 GB NVMe, 10 Gbps), and vds.max at $895/mo (32 dedicated EPYC cores, 128 GB RAM, 4x 480 GB NVMe, 10 Gbps). If your workload runs hot, runs constantly, or has a measurable PnL hit when the kernel scheduler twitches, this is the tier.

The mental model: a VPS sells you average performance; a VDS sells you the distribution. The silicon under your hot loop stops being a shared resource, the latency histogram loses its right tail, and a dedicated private VLAN to the NLN RPC and gRPC fleet comes with the box, 0.21 ms to the chain.

Pinned, not prioritized

cgroup-pinned physical cores on one socket. Not "dedicated-ish", not a priority class on shared threads: pinned.

NUMA-local memory

RAM is allocated from the same NUMA node as your cores. No cross-socket hops in the middle of a decode.

Verifiable from userspace

lscpu, numactl, mpstat. Every claim on this page can be checked from your own shell in 60 seconds.

The contract

Dedicated, with failure conditions you can test

CPU steal time
0.00%, contractual
Cache & memory bus
your cores, your NUMA node
Failure blast radius
host fails → live migration < 8 min
You pay for
determinism: consistent tail performance
yours time-sliced other tenants host reserve

“Dedicated resources” is the most abused phrase in hosting, so we wrote ours as a contract with failure conditions. Your cores are pinned via cgroups to specific physical cores, no shared hyperthreads, ever. Your RAM is allocated NUMA-local. Your bandwidth is committed in the QoS class, not borrowed from a pool. If we ever pack two VDS tenants onto the same physical core, that is a breach, and it is the kind we fix within the hour.

The enforcement mechanism is that you can catch us. Steal time on a VDS reads 0.00 every core, every sample, under any load. If you ever see a non-zero value, open a ticket: it means a host misconfiguration, and it jumps the queue.

verify the contract · 60 seconds after handover
lscpu | grep -E 'Thread|Core'
# Thread(s) per core: 1   <- no shared HT

numactl --hardware | head -3
# node 0 cpus: 0-15
# node 0 size: 65536 MB   <- RAM with cores

mpstat -P ALL 1 30 | grep -i steal
# 0.00, every core, every sample

non-zero steal on a VDS = host config error = our pager, not your problem

Why it exists

Consistency is the product

Two boxes run the same code at the same median. Only one of them has a neighbor.
shared vCPU · neighbor bursting
Unpredictable tail
1
2
3
4
5
6
8
10
14
20+
handler latency, ms · illustrative shape
VDS pinned cores · same code
Consistent
1
2
3
4
5
6
8
10
14
20+
handler latency, ms · illustrative shape

Tail events are not slower on average, they are unpredictable. A neighbor bursts, your decode loop loses the cache, and the one frame you needed this slot arrives late. On a 400 ms slot, a 15 ms tail event inside the decision window is a missed trade your backtest says you won.

Three signals it's time to move up from VPS: steal time above 1% in peak hours, tail performance drifting on a consistent code path, or a workload that simply never idles. Any one of them, and the $55/mo step to vds.standard pays for itself with the first tail event it deletes.

The exit, priced

Where VDS stops making sense

We sell what comes after VDS too, so the crossover math is printed instead of buried.
vds.maxnln.metal.basenln.metal.max
Price$895/mo$1,227/mo$1,902/mo
Compute32 pinned cores @ 3.0 GHz64 physical cores @ 3.1 GHz64 physical cores @ 3.3 GHz
RAM128 GB128 GB256 GB
Storage4 × 480 GB NVMe namespaces2 × 1.92 TB physical2 × 3.84 TB physical
HypervisorKVM (thin, but present)NoneNone
ResizeMinutesNew hardwareNew hardware
Mainnet validatorNoNo (RAM floor)Yes

Above vds.max, virtualization stops earning its overhead. If the workload is permanent and its shape is known (an RPC mirror, a Geyser pipeline), nln.metal.base undercuts vds.max by $203/mo with physical drives. Keep VDS while you still want to resize in minutes; take metal when the next size up would be the whole machine anyway.

Sizing, consultatively

Tell us the workload, we’ll tell you the box

The same recommendations our engineers give on sales calls, minus the call. The runner-up is listed because honest sizing beats upsells.
What are you running?

Bursts CPU on signals, idles between slots. Network-bound 95% of the time.

Latency to RPC/gRPC dominates PnLCPU mostly idleStateless or near-stateless
Our recommendation
vps.pro8 vCPU · 32 GB · 320 GB NVMe
$190/mo

The bot spends its life waiting on the wire. 8 shared vCPU covers the duty cycle with room to spare, and the money stays in the strategy.

Sanity-check with an engineer

Step up ifmpstat shows steal > 1% in peak hours, or your loop decodes every transaction.

vds.standard · $245/mo

Hot loop on the gRPC feed, decode everything, race a single thread to the trigger.

Consistent compute has a direct PnLSustained CPUSingle-thread speed matters
Our recommendation
vds.performance16 cores · 64 GB · 2 × 480 GB NVMe
$495/mo

Pinned cores keep the decode loop consistent: a tail event during your neighbor's burst is a missed trade.

Sanity-check with an engineer

Step up ifthe race comes down to one thread: 4.3 GHz Ryzen metal beats 3.0 GHz virtualized.

nln.metal.turbo · $647/mo

Constant ingestion from Yellowstone into Postgres on the same box. Never idles.

Sustained CPU + diskDB and ingest fight for resourcesRAM for working set
Our recommendation
vds.performance16 cores · 64 GB · 2 × 480 GB NVMe
$495/mo

16 pinned cores and NUMA-local RAM let ingest and Postgres share a box without sharing tails. Unix-socket DB writes, zero network hop.

Sanity-check with an engineer

Step up ifyou index more than a couple of programs or keep > 40 GB hot in Postgres.

vds.max · $895/mo

Receive events, transform, fan out over HTTP. Spiky concurrency, light CPU.

Egress volumeConnection concurrencyCost sensitivity
Our recommendation
vps.enterprise16 vCPU · 64 GB · 640 GB NVMe
$350/mo

16 vCPU absorbs concurrency spikes; shared vCPU is irrelevant when the work is mostly I/O.

Sanity-check with an engineer

Step up ifconcurrency is modest, same architecture, $160 less.

vps.pro · $190/mo

Your own read-only RPC node, ledger and accounts on separate volumes.

128 GB RAM floorSustained disk IOPSCatch-up bandwidth
Our recommendation
vds.max32 cores · 128 GB · 4 × 480 GB NVMe
$895/mo

32 pinned cores, 128 GB, and four NVMe namespaces handle a non-voting mirror, virtualized, so you can resize as it grows.

Sanity-check with an engineer

Step up ifthe mirror is permanent: a full 64-core physical box, physical drives, no hypervisor.

nln.metal.base · $1,227/mo

Learning the operator workflow: vote, restart, snapshot, monitor.

Modest spec is fineCheap to keep runningSame tooling as mainnet
Our recommendation
vps.enterprise16 vCPU · 64 GB · 640 GB NVMe
$350/mo

16 vCPU / 64 GB carries a testnet validator. The point is the runbook practice, not the hardware.

Sanity-check with an engineer

Step up ifyou want the exact I/O behavior you will see on mainnet.

nln.metal.base · $1,227/mo

Voting on mainnet. Skipped slots cost stake. Hypervisor jitter is disqualifying.

256+ GB RAM field standardTwo+ physical NVMeUnshared 10 Gbps
Our recommendation
nln.metal.max64 cores · 256 GB · 2 × 3.84 TB NVMe
$1,902/mo

64 high-frequency EPYC 9575F cores, 256 GB, and dual 3.84 TB NVMe is the field-standard build. The vote pipeline never crosses a hypervisor.

Sanity-check with an engineer

Step up ifyou prefer a dual-socket 64-core layout with the same 256 GB.

nln.metal.dual · $926/mo

Custom Geyser plugin feeding your own downstream: full-chain firehose in, structured data out.

Heavy sustained decodeLarge RAM working setFast local sink
Our recommendation
nln.metal.base64 cores · 128 GB · 2 × 1.92 TB NVMe
$1,227/mo

Full-chain Geyser is a sustained-everything workload: real drives for the sink, real cores for the decode, 128 GB to breathe.

Sanity-check with an engineer

Step up ifyou want more RAM headroom for the working set: 192 GB on the EPYC 9555P.

nln.metal.pro · $1,622/mo

The next validator client: tile architecture, AF_XDP, large memory appetite.

High core countLarge RAM working setKernel-level tuning
Our recommendation
nln.metal.max64 cores · 256 GB · 2 × 3.84 TB NVMe
$1,902/mo

Built for it: 64 high-frequency cores, 256 GB, and a Firedancer-tuned image (governor, IRQ affinity, AF_XDP) on request. Need more RAM? We quote custom builds.

Sanity-check with an engineer
One room

Determinism inside the box, proximity outside it

Pinned cores fix your compute tail; the building fixes your network tail. A VDS ships with both.
network topology · frankfurt● all paths measured
EQUINIX-CLASS FACILITY · FRANKFURTone room. one switch fabric. everything below is meters apart.Your VDSroot SSH · private VLAN leg10.x.x.x → switch fabricVPS · VDS · BARE METALNLN RPC · gRPC · WS fleetrpc / grpc / ws .nln.clr3.orgthe endpoints your code callsNLN validator nodeswhere slots are actually heardfirst. same switch fabric.Jito block engine0.6 ms · cross-connectprivate VLANsame fabric · sub-mspublic internetapi.mainnet-beta.solana.com · 14.2 msleaves the building · 14+ ms · long-tail jitter
From the operators

The field guide: pin, verify, migrate

Verification one-liners, a thread-per-core Rust scaffold, the co-located indexer pattern, and the VPS-to-VDS steal-time comparison.
Confirm your dedicated cores are actually pinned and no hyperthread is shared.
# After provisioning a vds.performance, SSH in and verify topology
lscpu | grep -E '^(CPU\(s\)|Thread|Core|Socket)'
# CPU(s):                  16
# Thread(s) per core:      1
# Core(s) per socket:      16
# Socket(s):               1

# Confirm steal-time stays at zero under load
mpstat -P ALL 1 5 | grep -E '%steal'
# all   0.00 (across all cores, all samples)

# NUMA affinity (RAM is on the same node as the cores)
numactl --hardware
# node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# node 0 size: 65536 MB
# node distances: node 0: 10
use core_affinity;
use yellowstone_grpc_client::GeyserGrpcClient;

fn main() -> anyhow::Result<()> {
    // vds.performance: cores 0-3 reserved for OS + IRQ, 4-15 for the bot
    let cores: Vec<_> = core_affinity::get_core_ids()
        .unwrap()
        .into_iter()
        .skip(4)
        .collect();

    let mut handles = vec![];
    for (i, core) in cores.into_iter().enumerate() {
        handles.push(std::thread::Builder::new()
            .name(format!("worker-{i}"))
            .spawn(move || {
                core_affinity::set_for_current(core);
                run_worker(i)
            })?);
    }

    for h in handles { h.join().unwrap(); }
    Ok(())
}

fn run_worker(_id: usize) {
    let rt = tokio::runtime::Builder::new_current_thread()
        .enable_all().build().unwrap();
    rt.block_on(async {
        let client = GeyserGrpcClient::build_from_shared(
            "https://grpc.nln.clr3.org:443"
        ).unwrap()
            .x_token(Some(std::env::var("NLN_API_KEY").unwrap())).unwrap()
            .connect().await.unwrap();
        let _ = client;
    })
}
import asyncio
import asyncpg
from yellowstone_grpc_proto import geyser_pb2, geyser_pb2_grpc
import grpc

# Postgres on the same VDS, same NUMA node, unix socket.
DB_URL = "postgresql:///nln_indexer?host=/var/run/postgresql"
GRPC_HOST = "grpc.nln.clr3.org:443"

async def ingest(pool):
    creds = grpc.composite_channel_credentials(
        grpc.ssl_channel_credentials(),
    )
    chan = grpc.aio.secure_channel(GRPC_HOST, creds)
    stub = geyser_pb2_grpc.GeyserStub(chan)

    async def reqs():
        yield geyser_pb2.SubscribeRequest(
            transactions={"ray": geyser_pb2.SubscribeRequestFilterTransactions(
                vote=False, failed=False,
                account_include=["675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"],
            )},
            commitment=geyser_pb2.PROCESSED,
        )

    async for upd in stub.Subscribe(reqs()):
        async with pool.acquire() as conn:
            await conn.execute(
                "INSERT INTO swaps_raw (slot, sig, payload) VALUES ($1, $2, $3)",
                upd.transaction.slot,
                bytes(upd.transaction.transaction.signature),
                upd.SerializeToString(),
            )

asyncio.run(ingest(asyncpg.create_pool(DB_URL, min_size=8, max_size=32)))
# On a VPS (shared vCPU):
mpstat -P ALL 1 30 | awk '/Average/ {print "CPU " $2 " steal=" $6}'
# CPU all  steal=1.82
# CPU 0    steal=2.41
# CPU 3    steal=3.67  <-- this core shares a busy neighbor

# On a VDS (pinned cores):
mpstat -P ALL 1 30 | awk '/Average/ {print "CPU " $2 " steal=" $6}'
# CPU all  steal=0.00
# Every core, every sample: 0.00. That is the contract.

# If you see non-zero steal time on a VDS, open a support ticket.
# It means a host configuration error and we fix it immediately.
Operational maturity

How the fleet is run

The unglamorous part of infrastructure is the part you are actually buying. Policies below apply fleet-wide and are written into the SLA.
§Capacity policy
  • ·VPS pools run fair-share vCPU scheduling with headroom held in reserve
  • ·VDS and metal capacity is never shared; pinned capacity is held hot
  • ·Spare capacity stays racked and powered, so orders never wait for a host to be carved
§Hardware lifecycle
  • ·AMD EPYC platforms, DDR4 ECC across the fleet
  • ·Datacenter-grade storage with redundancy (mdraid1) on virtualized pools
  • ·Every metal box burn-in tested before handover: CPU, RAM, drive surface, NIC
§Failure & recovery
  • ·VPS: nightly snapshots, restore to a healthy host < 15 min
  • ·VDS: live migration off a failing host, target < 8 min
  • ·Metal: IPMI / KVM-over-IP always on, hardware MTTR < 4 h in the business window
§Network operations
  • ·Committed QoS bandwidth on VDS; 10–100 Gbps dedicated ports on metal
  • ·Dedicated private VLAN to the NLN RPC / gRPC / WS fleet included on every VDS and bare-metal server
  • ·Fair-share scheduler on shared uplinks; one tenant cannot saturate a host
§Access & control
  • ·Full root. No locked kernels, no restricted outbound ports, no inspection
  • ·Key-only SSH from first boot; password auth ships disabled
  • ·Bring your own ISO: Ubuntu, Debian, Rocky, Arch, NixOS all routine
§SLO & credits
  • ·99.99% monthly rolling, fleet-wide
  • ·Credits applied automatically on breach, no ticket required
  • ·Only enforcement on your box: outbound SMTP abuse limits

Frequently asked questions

A VPS shares physical cores across multiple tenants. The hypervisor hands out vCPU time fairly, but if a neighbor pegs the host you can lose cycles to context switching, cache pollution, and CPU steal time. For most workloads this is invisible. For a Solana bot decoding 5,000 messages a second, it shows up as spikes in the 99th percentile. A VDS pins specific cores to your VM. They are yours alone, on a specific socket, with RAM allocated from the same NUMA node. Your steal time stays at zero, your cache doesn't get evicted by a neighbor, and your tail behaviour is bounded by the silicon, not by the noisiest tenant on the host.
Three signals. First, your monitoring shows non-zero CPU steal time during peak Solana hours (around the US trading-day overlap). Second, your bot's tail performance widens under load while the median stays flat. Third, your workload never idles and you find yourself paying for a larger VPS just to make headroom. Any of those, and the step to vds.standard usually pays for itself within a month.
No. vds.max gives you 32 cores and 128 GB RAM, which is enough for a testnet validator or a non-voting RPC mirror. Mainnet validators need 256+ GB RAM and two physical NVMe drives so the ledger and accounts DB don't share IOPS. For mainnet, see bare-metal: nln.metal.max gives you a 64-core EPYC 9575F with 256 GB RAM and two 3.84 TB NVMe drives for $1,902/mo.
vds.standard is $245/month (8 pinned EPYC cores, 32 GB, 2x 250 GB NVMe, 5 Gbps committed), vds.performance is $495 (16 cores, 64 GB, 2x 480 GB NVMe, 10 Gbps), vds.max is $895 (32 cores, 128 GB, 4x 480 GB NVMe, 10 Gbps). Every tier includes the dedicated private VLAN to the NLN fleet, the 0.00% steal-time contract, 2-3 minute provisioning, and resizes in minutes instead of hardware swaps, dedicated performance with virtualization flexibility, private-networked to NLN validators in Frankfurt.
Dedicated. We publish the host CPU topology and you can verify it yourself: lscpu shows your core count, mpstat -P ALL shows zero steal time under load, numactl --hardware shows your RAM is on the same NUMA node as your cores. If we ever pack two VDS tenants onto the same physical core, we breach contract. The whole product exists because that breach is what kills production trading workloads.
Not as a virtualized product. At vds.max ($895/mo, 32 cores, 128 GB) you're approaching bare-metal economics. nln.metal.base gives you a 64-core EPYC 9554P with 128 GB RAM for $1,227/mo, and nln.metal.max steps up to a 64-core EPYC 9575F with 256 GB RAM and two 3.84 TB NVMe drives for $1,902/mo. If you need 64 physical cores or 256 GB RAM, bare-metal is the move. We'll quote it on the same private VLAN as your existing VDS.
Two to three minutes for the standard tiers. We keep the dedicated capacity hot (no need to evict other tenants), so the time is mostly cloud-init bringing up the OS, mounting NVMe, and registering the VLAN. Custom OS images push that to 5-6 minutes.
Yes. vds.max (32 cores, 128 GB, 4x 480 GB NVMe, 10 Gbps) is the standard config we recommend for an RPC mirror, with the ledger on the dedicated NVMe and the accounts DB on a second volume. Geyser plugins fit on vds.performance (16 cores, 64 GB) if you're ingesting one or two programs, and on vds.max if you're tracking the full chain. The private VLAN to our gRPC fleet means your Geyser publish path stays inside our switch fabric.
Run mpstat -P ALL 1 60 during peak hours. If you see steal above 1% on any core, that's the signal. Provision a VDS (it includes a dedicated private VLAN to the NLN fleet), then rsync your data or start fresh for stateless bots, point your bot at the VDS's private endpoint, and verify steal time is zero on the new box. The whole migration takes 15-30 minutes.
Steal time is the percentage of CPU time the hypervisor takes away from your VM to give to another tenant. On a shared VPS, this is normal and usually under 2%. The problem is that Solana workloads are -sensitive: a 400ms slot window means any delay in processing a gRPC frame can cause you to miss a trade. Steal time spikes are unpredictable: they happen when your neighbor bursts, not when you expect them. On a VDS, steal time is 0.00% by contract because the cores are physically yours.

Related products

Solana VPS

Shared-tenancy hosting at lower cost. Fine for testnet bots and bursty workloads.

Bare-metal Solana servers

Full physical machines for validators or 128+ GB RAM workloads. Cheaper than VDS at the high end.

Yellowstone gRPC nodes

The streaming backend most VDS workloads spend their time consuming.

Solana RPC nodes

Private VLAN endpoint your VDS resolves directly to.

Geyser plugin hosting

Custom Geyser plugins running on VDS with managed publishing.

Move the hot loop off shared silicon

vds.standard $245/mo · vds.performance $495/mo · vds.max $895/mo. Pinned EPYC cores, NUMA-local RAM, 0.00% steal time by contract. Provisioned in 2–3 minutes, validator-adjacent in Frankfurt on the same private VLAN as the NLN data fleet, <0.5 ms to every NLN Solana service.

Talk to an engineer

Migrating from a VPS? The move is an rsync and an endpoint swap: 15–30 minutes end to end.

order → root ssh
  1. 01
    Create an account
    Email and a password. No card required to look around.
  2. 02
    Pick tier + paste your SSH key
    The exact specs and prices on this page. No checkout surprises.
  3. 03
    Root SSH lands in your inbox
    Key-only auth, your chosen OS image, ready for the NLN data fleet.

Ready to get started?

Get your free API key and start building in under 30 seconds.

Talk to Sales
NoLimitNodes

Solana RPC infrastructure built for performance and scale.

RPC Access
  • HTTP RPC
  • WebSocket
  • gRPC
Infrastructure
  • Compute Platform
  • VPS
  • VDS
  • Bare Metal
  • Geyser Plugin Hosting
Enhanced Streams
  • PumpFun
  • PumpSwap
  • Raydium
  • Orca
  • Meteora
  • System Events
  • Browse All →
Program Streams
  • PumpFun
  • PumpSwap
  • Raydium CLMM
  • Orca Whirlpool
  • Meteora DLMM
  • Jupiter Swap
  • Jupiter Perps
  • Kamino Lending
  • Browse All 37 →
Trading
  • EZWallet
Analytics
  • Historical Datasets
  • Historical Raw Blocks
Company
  • About
Resources
  • Pricing
  • Custom Development
  • Documentation
  • Blog
  • Support
  • Contact Sales
Compare
  • Yellowstone gRPC vs LaserStream
  • Triton vs Helius
  • Raydium API vs Helius
  • PumpSwap API vs Bitquery
  • QuickNode Streams vs NLN
  • All comparisons →
Legal
  • Terms & Conditions
  • Privacy Policy
© 2026 CLR3 Inc., operating as NoLimitNodes. Registered in Ontario, Canada. All rights reserved.solana mainnet