SurviveTh3Dead

Arma 2 DayZ mod, survival servers, and the people who ran them

VPS Hosting for a Palworld Server: 948 MB Idle, a 1.5 GB Spike at Start, and a Call Home on Shutdown

CT 161 is gamelab, an unprivileged LXC container on my Proxmox host. Debian 12.15, four cores of an i7-4790K at 4.00 GHz, 8 GB of RAM. It runs one game server at a time, LAN only. On 2026-10-18 the game was Palworld.

The numbers that came out of a cold start: a 1,475 MB RSS peak and a 948 MB plateau. Neither is large, and the peak is gone in under thirty seconds. You still size for the peak.

I measured it the way I measure everything on this box: gmeasure.py runs ./pwserver start, polls /proc/<pid>/status every second for RSS and swap, and records the first second a UDP socket is bound on port 8211. That’s the “ready” time. It took 16 seconds.

What ready means here

“Ready” for Palworld means the first second the server binds UDP 8211. At that moment the console log says Running Palworld dedicated server on :8211. It does not mean a player connected. Nobody has ever connected to this server. What I’m measuring is what the process costs when it is listening and doing nothing else.

The memory curve

The 1,475 MB peak happened inside the first thirty seconds. The first print from the poller, at 31 seconds, already showed 973 MB. From 61 seconds on, RSS held between 944 and 948 MB for the whole ten-minute window, with tree usage of 958 to 962 MB and zero swap.

  ready at 16 s
  t=   31s pid=21656 rss=973 MB tree=987 MB swap=0 MB
  t=   61s pid=21656 rss=944 MB tree=958 MB swap=0 MB
  t=   91s pid=21656 rss=946 MB tree=960 MB swap=0 MB
  t=  300s pid=21656 rss=948 MB tree=962 MB swap=0 MB
  t=  570s pid=21656 rss=947 MB tree=961 MB swap=0 MB
ready=16s  rss_peak=1475 MB  rss_final=948 MB  tree=962 MB  cpu_idle=9.8% of one core (60 s window)  disk=4.59 GB
Palworld dedicated server cold start: listening on 8211 at 16 seconds, resident memory flat at about 947 MB for ten minutes after a 1475 MB peak, 9.8% of one core idle
Ten minutes at zero players. The 1,475 MB peak came and went inside the first 30 seconds.

That’s the whole memory story at zero players. Two numbers: 1,475 MB for the first half-minute, 948 MB after that. Size for the 1,475 MB peak, not the 948 MB plateau, because the peak is what the process actually reached. Those numbers are a row in the server requirements table.

CPU while idle

Over one 60-second window after the ten-minute settle, the process used 9.8% of one core. On this same box, Valheim measured 6.7% and Project Zomboid 3.7% to 3.9% across two runs. Palworld idles hotter than either. It’s still a fraction of a single core on a 4.00 GHz i7-4790K.

Disk and install

SteamCMD downloaded 4,932,070,576 bytes for app 2394010. du -sh serverfiles reports 4.6G — 4.59 GB in MiB. The save and config directory, Pal/Saved, was 404K after the run. That’s the whole footprint. LinuxGSM v26.4.0, game version v1.0.5.102999. I removed -publiclobby from the instance config in lgsm/config-lgsm/pwserver/pwserver.cfg because this box is LAN only. The command line that actually ran:

./PalServer-Linux-Shipping -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -servername=LinuxGSM -port=8211 -queryport=27015

The shutdown

./pwserver stop sends Ctrl+C. The console log afterwards:

Game version is v1.0.5.102999
Running Palworld dedicated server on :8211
^CFUnixPlatformMisc::RequestExitWithStatus
* Connected to o1291919.ingest.us.sentry.io (2600:1901:0:5e8a::) port 443 (#0)
> POST /api/6513339/envelope/ HTTP/2
user-agent: sentry.native.unreal/0.13.4
content-length:332
< HTTP/2 200
Exiting abnormally (error code: 130)

So a normal LinuxGSM stop produced an abnormal exit and a 332-byte POST to Sentry over TLS 1.3, to a certificate for *.ingest.us.sentry.io. The full log shows content-type application/x-sentry-envelope and a response body of {}. What was inside that envelope is not in the capture. I’m not going to guess. The user-agent identifies the engine’s crash reporter, version 0.13.4.

The Palworld console log after ./pwserver stop: RequestExit, a TLS connection to Sentry's ingest host, a 332-byte POST answered 200, then exiting abnormally with code 130
Stopping it the normal way: an abnormal exit, and a crash report sent before it went.

The practical consequence: a VPS with outbound traffic blocked, or a box whose egress you monitor, will see this connection on every stop. Nothing more than that.

What 2 GB rents for

Both numbers — 1,475 MB peak and 948 MB plateau — fit under 2 GB. Prices checked 2026-10-18 on each provider’s public pricing page:

ProviderPlanRAMvCPUPrice
VultrCloud Compute Regular 2 GB2 GB1USD 10.00/mo
HetznerCPX122 GB1EUR 11.99/mo
DigitalOceanBasic Regular 2 GiB2 GB1USD 12.00/mo

At the time of writing. Hetzner shows a “from” price. These 2 GB plans have 1 vCPU. The server idled at 9.8% of one of this box’s four cores; I didn’t measure it on a 1-vCPU VPS, so I won’t claim how that performs. The hosting cost calculator uses the same price file, dated 2026-10-18.

The cheapest 2 GB VPS plan at Vultr, Hetzner and DigitalOcean, prices checked 2026-10-18
What holds the 1,475 MB peak, at the time of writing.