Risposta rapida
Quale VPS mi serve per un GitLab Runner o una pipeline CI/CD?
Un VPS per GitLab Runner ha bisogno di circa 2 vCPU dedicati per ogni job CI eseguito contemporaneamente: su Cobaltfell, Fell 2 esegue un job, Fell 4 due e Fell 8 quattro. Il runner Linux ospitato di default di GitLab ha 2 vCPU e 8 GB di RAM (verificato il 2 novembre 2026), quindi un piano Cobaltfell con lo stesso numero di vCPU ha metà di quella memoria, e le build che consumano molta memoria richiedono la dimensione successiva.
Quanti job CI può eseguire contemporaneamente un solo VPS?
Un job CI richiede due vCPU dedicati e la RAM che li accompagna; l'impostazione concurrent del runner decide quanti di questi job condividono il VPS. In config.toml, concurrent limita i job su tutti i runner registrati, mentre limit li limita per un singolo runner registrato (0, il valore predefinito, significa nessun limite). La pagina dei requisiti di GitLab indica tre input su cui dimensionare: il carico CPU dei job, il loro uso di memoria e quanti ne girano in contemporanea.
| Piano | vCPU | RAM | concorrenti | Adatto a |
|---|---|---|---|---|
| Fell 2 | 2 | 4 GB | 1 | Una pipeline alla volta: un progetto personale o un team che fa push poche volte all'ora |
| Fell 4 | 4 | 8 GB | 2 | Due job brevi insieme, o una build lunga su quattro thread |
| Fell 8 | 8 | 16 GB | 4 | Quattro job da due vCPU, o due da quattro |
| Fell 16 | 16 | 32 GB | Da 4 a 8 | Un team le cui merge request avviano più pipeline insieme |
Come si confrontano le dimensioni dei runner ospitati di GitLab con un VPS?
I runner Linux ospitati di GitLab danno 4 GB di RAM per vCPU; i piani Cobaltfell danno 2 GB per vCPU. I conteggi di vCPU corrispondono uno a uno, il che rende la tabella un modo diretto per scegliere una dimensione per le pipeline che già girano su GitLab.com. I job che usano la maggior parte della memoria della loro macchina attuale richiedono il piano Cobaltfell di una dimensione superiore, oppure meno job insieme.
Secondo l'indagine di Cobaltfell del 2 novembre 2026, un vCPU dedicato su un processore del 2022 o successivo costava una mediana di $8.20 al mese presso host che accettano criptovalute senza controllo d'identità, quindi ogni job CI parallelo da due vCPU costa circa il doppio.
Ogni host e prezzo dietro quella mediana è in quanto costa un VPS con CPU dedicata per core a novembre 2026.
| Tipo di macchina ospitata da GitLab | vCPU | RAM | Disco | Piano VPS con gli stessi vCPU | La sua RAM e NVMe |
|---|---|---|---|---|---|
| saas-linux-small-amd64 (predefinito) | 2 | 8 GB | 30 GB | Fell 2 | 4 GB, 80 GB NVMe |
| saas-linux-medium-amd64 | 4 | 16 GB | 50 GB | Fell 4 | 8 GB, 160 GB NVMe |
| saas-linux-large-amd64 (Premium e Ultimate) | 8 | 32 GB | 100 GB | Fell 8 | 16 GB, 320 GB NVMe |
| saas-linux-xlarge-amd64 (Premium e Ultimate) | 16 | 64 GB | 200 GB | Fell 16 | 32 GB, 640 GB NVMe |
Prezzi verificati il
Perché i core dedicati contano per i job CI e di compilazione?
Una build tiene la CPU a pieno carico per minuti interi, esattamente il pattern che i piani VPS condivisi sono pensati per limitare. Due host nella stessa indagine lo mettono nelle loro regole: i termini di Spartan Host vietano di usare oltre il 50% dei core allocati per più di un'ora, e la policy di fair use di Advin Servers limita l'uso della CPU al 75%.
Su un vCPU condiviso il costo appare anche come steal time. Una pipeline veloce in una notte tranquilla si allunga nelle ore di punta, e i timeout dei job scattano per motivi non legati al codice; cos'è lo steal time della CPU e come verificarlo su un VPS mostra come leggerlo.
Su Cobaltfell: Il carico pieno è consentito per tutto il tempo che il tuo lavoro richiede: nessun credito CPU, nessuna finestra di burst e nessun throttling dopo qualche minuto al 100%. Un vCPU è un thread hardware del processore host. I tuoi sono assegnati uno a uno al tuo VPS e non vengono mai prestati a un altro cliente, e i due thread di un core fisico restano insieme, quindi ogni 2 vCPU formano un core intero che nessun vicino condivide. Senza vicini sui thread, una pipeline con cache calda impiega circa lo stesso tempo a ogni esecuzione, quindi un job lento rimanda al codice. Come funziona la regola vCPU-core è spiegato in un vCPU dedicato è un core o un thread.
Come impedisco alle build parallele di contendersi gli stessi vCPU?
Assegna a ogni job una quota fissa del VPS e passa lo stesso numero allo strumento di build. Gli strumenti di build non concordano sui valori predefiniti. GNU make esegue una ricetta alla volta se non gli si passa -j. Cargo esegue tanti job quanti sono i CPU logici. Ninja esegue in parallelo in base al numero di CPU senza che glielo si chieda. Quattro build di questo tipo su Fell 8 avvierebbero ciascuna otto compilatori: 32 processi per 8 thread e 16 GB di RAM.
Con l'executor Docker, ogni job gira nel proprio container, e [runners.docker] accetta un limite cpus e uno memory per quel container. Imposta entrambi, poi allinea il parallelismo all'interno del job:
concurrent = 4 # jobs at once, all runners together
check_interval = 3
[[runners]]
name = "fell-8-docker"
url = "https://gitlab.com"
token = "REPLACE_WITH_YOUR_RUNNER_TOKEN"
executor = "docker"
limit = 4
[runners.docker]
image = "debian:13"
cpus = "2" # CPUs for each job container
memory = "3g" # leaves room for the system and Dockervariables:
MAKEFLAGS: "-j2" # GNU make
CARGO_BUILD_JOBS: "2" # cargo (build.jobs)
build:
script:
- make
- cargo build --release
- ninja -C build -j 2Cosa serve per compilare Rust o C++ su un VPS?
Le compilazioni richiedono thread e memoria in proporzione: ogni processo di compilazione parallelo e ogni fase di linking prende la propria quota di RAM. Le grandi unità di traduzione C++ e i crate Rust con generici pesanti sono i picchi di memoria abituali, e il link finale di un binario grande può richiedere più di qualsiasi singola compilazione.
Una build uccisa per mancanza di memoria ha bisogno di un -j o CARGO_BUILD_JOBS più basso, non di più vCPU: meno job finiscono, più job vanno in crash. Tieni le cache di build sul disco del VPS stesso (Archiviazione NVMe su ogni piano) e fai pulizia delle vecchie immagini con docker image prune, perché un runner molto attivo riempie un disco più in fretta di quanto suggeriscano le sue pipeline.
Un monorepo che richiede decine di gigabyte di RAM per build è territorio da bare-metal, che Cobaltfell non vende. Le suite di test basate su database hanno le proprie regole di dimensionamento, trattate in quanta CPU e RAM serve a PostgreSQL su un VPS.
Quale executor dovrebbe usare un runner su un VPS?
L'executor Docker è il default giusto: la guida agli executor di GitLab dice che offre a ogni build un ambiente pulito e isolato, mentre l'executor Shell non offre né un ambiente pulito per ogni build né la protezione del file system del runner. Gli executor Shell, SSH e VirtualBox sono in modalità manutenzione.
Conta altrettanto chi può avviare un job: una merge request da un fork esegue il proprio codice sul VPS. La guida alla sicurezza di GitHub dice che i runner self-hosted non dovrebbero quasi mai essere usati per repository pubblici, e lo stesso ragionamento vale per qualsiasi sistema CI che esegue pull request non fidate.
Forgejo, Woodpecker, Jenkins e gli agenti di GitHub Actions si dimensionano allo stesso modo: conta i job sovrapposti, assegna a ciascuno thread e memoria fissi. I prezzi dei piani per ogni dimensione sono elencati sotto quanto costa un VPS con core dedicati.
Quali altre domande si fanno le persone sui runner CI su un VPS?
Un VPS Cobaltfell può eseguire runner self-hosted di GitHub Actions?
Sì. Funziona qualsiasi agente runner Linux: Solo immagini Linux: Debian, Ubuntu, AlmaLinux e Rocky Linux. Windows non è offerto. Dimensiona come un GitLab Runner, circa due vCPU per ogni job sovrapposto, e tienilo lontano dai repository pubblici dove estranei possono aprire pull request.
Una build al 100% di CPU per un'ora viene limitata?
No su Cobaltfell. Il carico pieno è consentito per tutto il tempo che il tuo lavoro richiede: nessun credito CPU, nessuna finestra di burst e nessun throttling dopo qualche minuto al 100%. L'unico uso intensivo di CPU vietato: Il mining di qualsiasi criptovaluta non è consentito, su nessun piano e con nessun software. Il tuo lavoro intensivo sulla CPU, come build, encoding, inferenza o database, può girare a pieno carico, e un nodo che si limita a validare una blockchain non è mining.
GitLab Runner ha bisogno di Docker?
No, l'executor Shell esegue i job direttamente sul VPS. GitLab precisa che non offre un ambiente pulito per ogni build e che è in modalità manutenzione, quindi Docker è il default migliore per qualsiasi cosa tu non eseguiresti a mano come root.
GitLab stesso dovrebbe girare sullo stesso VPS del runner?
No. GitLab e il suo runner si contendono poi gli stessi thread e la stessa memoria, e una pipeline pesante rallenta l'interfaccia web usata per monitorarla. Un runner va su un VPS dedicato.
Quanto è veloce una pipeline su ciascun piano?
Non sono ancora pubblicati tempi. I nostri risultati YABS e Geekbench 6, insieme allo steal time che misuriamo, saranno pubblicati con la loro data quando sarà consegnata la nostra prima macchina di test. Fino ad allora non citiamo nessun dato di prestazioni nostro. Esegui la stessa pipeline due volte sul piano scelto e prendi come riferimento il secondo tempo, a cache calda.
Fonti (10)
- Configurazione avanzata di GitLab Runner (concurrent, limit, [runners.docker]) — GitLab (checked 2026-11-02)
- Requisiti di sistema di GitLab Runner — GitLab (checked 2026-11-02)
- Runner ospitati su GitLab con Linux: tipi di macchina — GitLab (checked 2026-11-02)
- Executor di GitLab Runner — GitLab (checked 2026-11-02)
- Manuale GNU make: esecuzione parallela — GNU Project (checked 2026-11-02)
- cargo build: l'opzione --jobs — The Rust Project (checked 2026-11-02)
- Manuale del sistema di build Ninja — Ninja (checked 2026-11-02)
- Riferimento per l'uso sicuro: runner self-hosted — GitHub (checked 2026-11-02)
- Termini di servizio di Spartan Host spartanhost.org/tos — Spartan Host (checked 2026-11-02)
- Politica di fair use di Advin Servers docs.advinservers.com/policies/fair-use — Advin Servers (checked 2026-11-02)