Bare-metal GPU for business · 96 GB VRAM · Katowice

TESTS & GUIDES

System RAM and cache: how much memory does an LLM server need?

Process RAM, Linux page cache and GPU VRAM are different measurements. Understand LLM server memory headroom, model mapping and warm-cache startup.

Conceptual memory modules with translucent layers.
AI illustration.

A large model file, a process's memory footprint and the system's “used” memory figure do not describe the same thing. Linux can cache data it has read, the application can map the model file, and model layers can also reside in VRAM.

Sizing RAM therefore means tracking system headroom and process memory, not just the size of a GGUF file. We cover GPU capacity separately in our guide to models that fit in 96 GB VRAM.

Our Qwen3-8B memory measurement

In short runs with the model on the GPU, the highest recorded process PSS was 813.20 MiB. This is memory attributed to the process by a particular counter, not the server's total RAM requirement. The operating system, file cache and other services also use memory.

Phase Highest process PSS reading Lowest system MemAvailable Samples
Model ready, 10 s without requests immediately after loading 750.02 MiB 89.41 GiB 5
2048 input tokens, 1 concurrent request 782.44 MiB 89.39 GiB 3
8192 input tokens, 4 concurrent requests 813.20 MiB 89.35 GiB 10

MiB and GiB are binary units: 1 GiB = 1024 MiB. The chart shows the same peak PSS readings in GiB. Swap use was zero in samples from these phases. The system also retained file cache from earlier work; we do not attribute all of that cache to Qwen3-8B.

Hardware and method

Component Measurement configuration
System RAM 96 GB
CPU AMD EPYC 4565P, 16 cores / 32 threads
GPU RTX PRO 6000 Blackwell Max-Q Workstation Edition, 96 GB VRAM
Operating system and driver Rocky Linux 10.2, NVIDIA 595.91.07
Model and engine Qwen3-8B Q4_K_M, llama.cpp b11146, GPU-resident model

Each scenario had a warmup and three measured rounds, with 256 new tokens per response. The local API had four 8704-token slots, F16 KV cache and Flash Attention; prompt caching was disabled. Before each scenario, the GPU cooled to no higher than 40°C.

Process RSS/PSS and host memory were read through /proc roughly every two seconds. The table includes ready-idle samples and samples within completed measured rounds, excluding warmup and gaps. Recorded maxima can miss shorter spikes. Model loading had only one sample, so we do not use it to establish peak memory use.

The operating system cache was warm after verifying the model checksum. Available RAM was not restricted, so this is not a minimum-capacity test. CSV also contains peak RSS readings, while JSON includes ranges and counter definitions. This telemetry's overhead distinguishes the study from the earlier API throughput test.

Three readings, three different questions

Reading What does it tell you?
MemAvailable How much memory can the system make available to new applications without swapping?
Process RSS How much of the process's mapped memory currently resides in RAM?
Process PSS How much memory belongs to the process after shared pages are divided proportionally?

MemAvailable includes some reclaimable memory, so it is not the same as MemFree. Shared data can appear in the RSS of multiple processes; PSS apportions that share. See the Linux /proc memory documentation.

Do not simply add process RSS to the entire system cache as two independent model costs. Those readings can partly describe the same memory pages.

Why a second startup can be different

After a model file is read, some data may remain in the operating system's cache. A later launch can then use memory rather than reading the entire file from storage again. This is a warm start, unlike a start without that data cached.

Even a checksum verification reads the entire file and can warm the cache before a measurement. Report the conditions alongside the time between launching the program and API readiness. A quick second launch is not, by itself, an NVMe throughput test.

llama.cpp offers different model loading modes, including memory mapping. File size does not imply an identical amount of private process memory in every mode.

How to establish RAM headroom

Observe model loading, ready-idle operation and request handling separately. Include the services that will actually run alongside the model: a document database, index, API, job queue or file processing.

One useful signal is the lowest observed MemAvailable during a representative task, considered alongside swap and response time. Allow headroom for model updates, other processes and short workload spikes too. A single short run does not establish minimum RAM for every application using that model.

When more RAM can help

More system memory provides room for additional services and cache, and for host-side model data in configurations that partly use the CPU. It does not automatically become GPU VRAM or guarantee more tokens per second when the bottleneck is elsewhere.

Before expanding memory, identify what is actually constrained: host RAM, GPU capacity, CPU time or data access. This helps size the server for the application rather than a single specification number.

Related reading: CPU work during GPU inference and choosing a Linux distribution.

View the server configuration or describe the models and services you want to run together.

Model process memory: highest sampled PSS
  1. 10 s after loading, no requests0.730.73 GiB
  2. 2048 tokens · 1 request0.760.76 GiB
  3. 8192 tokens · 4 requests0.790.79 GiB

2-second samples. PSS is not a minimum RAM requirement; it must not be added to host cache.

Download the data

Public test results and settings, without credentials or administrative identifiers.