18 Luglio 2023

Quanto deve essere grande la partizione di Swap su Linux ?

Alcune considerazioni sulle solite domande sullo Swap, la sua dimensione e sulla memoria virtuale.

swap linux ram

Ciò che risuona negli ambienti informatici sono le molteplici opinioni sull’utilizzo dello Swap. Si riscontrano vari punti di vista: da coloro che seguono l’idea tradizionale, secondo la quale lo Swap “deve essere il doppio della RAM”, a coloro che affermano che “oggi non è più necessario, dato che la RAM di cui disponiamo è più che sufficiente”. Allo stesso tempo, ci sono argomentazioni che sostengono che un sistema “senza Swap è più veloce”, mentre altri sostengono il contrario. Con la RAM diventata più accessibile in termini di costi nel 2015, ci si domanda se valga ancora la pena di riservare dello spazio su disco per lo Swap. La risposta rapida è: Sì, ne vale la pena. Per capire meglio, analizziamo la situazione in dettaglio.

Memoria Virtuale: Un’Introduzione

Durante i miei studi universitari, ho avuto l’opportunità di seguire due corsi con il prof. Montesi dell’Università di Bologna (insegnava anche a Camerino) prendendo in riferimento sistemi Unix ed il testo del Tanenbaum. Da allora, l’argomento è diventato una mia profonda passione.

Ogni dispositivo informatico è dotato di RAM, una memoria ad accesso rapido che ospita i dati in uso. Essa è molto veloce, decisamente più di qualsiasi disco fisso (anche delle moderne SSD), e rappresenta una delle componenti principali che determinano la velocità operativa di una macchina, sia essa un server, un computer tradizionale, uno smartphone, un tablet, ecc.

memoria virtuale

La memoria virtuale è la somma della RAM e dello spazio che definiamo come Swap, ovvero uno spazio su un dispositivo di memorizzazione più lento che viene utilizzato quando il sistema deve liberare una certa quantità di memoria ad accesso rapido (RAM).

Il sistema operativo decide cosa mantenere pronto per l’uso e cosa ‘parcheggiare’ in un luogo meno accessibile, ma comunque disponibile. La memoria totale vista dal sistema operativo è quindi la somma di RAM e Swap. Superare questo limite porterà il sistema a generare messaggi di OOM (Out Of Memory) e a gestire la situazione in maniera dipendente dal sistema operativo in uso.

Swap: Caratteristiche e Gestione

La gestione dello Swap varia tra i vari sistemi operativi, ma il concetto di base rimane:

Lo Swap è uno spazio su un dispositivo più lento che viene utilizzato come estensione della memoria RAM

Storicamente, Windows ha gestito lo Swap tramite un file presente nel file system principale. La sua dimensione è dinamica e cresce con l’aumento delle esigenze, viene utilizzato principalmente quando la RAM della macchina comincia ad essere piena.

Nei sistemi Unix-Like, che includono famiglie di sistemi operativi come *BSD e GNU/Linux, lo Swap è solitamente allocato in una partizione dedicata, progettata e ottimizzata per questo scopo specifico. Questa scelta architetturale si basa su un principio fondamentale: i file system sono progettati per gestire file.

Questo include l’implementazione di permessi di accesso, il tracciamento degli orari di creazione e modifica, la gestione dell’integrità dei dati e altre funzionalità che vanno oltre la semplice lettura e scrittura di dati sul dispositivo.

Aggiungere allo Swap queste complessità potrebbe non solo rallentare il processo di gestione della memoria, ma anche appesantire il file system rendendolo più complesso. Pertanto, per evitare questi problemi, la partizione di Swap è dedicata esclusivamente allo Swap, liberando il sistema operativo dall’obbligo di eseguire tutti questi controlli e processi aggiuntivi.

L’opzione degli Swap-File nei sistemi Unix-Like

Nonostante la tradizione dell’uso di partizioni dedicate per lo Swap nei sistemi Unix-Like, esiste anche la possibilità di utilizzare un file di swap. Questa alternativa può essere particolarmente conveniente in determinate circostanze o quando è richiesta una gestione più flessibile della memoria.

linux swap

Gli swap-file, a differenza delle partizioni di Swap, sono file speciali all’interno del file system che possono essere utilizzati per archiviare temporaneamente dati dalla RAM. Questa opzione offre una certa flessibilità in quanto la dimensione di uno swap-file può essere modificata dinamicamente, a differenza di una partizione di Swap che ha una dimensione fissa una volta creata.

Per facilitare la gestione degli swap-file, sono stati sviluppati diversi programmi. Questi strumenti permettono di gestire dinamicamente gli swap-file, creandoli, aumentandone o diminuendone la dimensione, o rimuovendoli completamente, a seconda delle esigenze reali del sistema. Questa flessibilità può essere particolarmente utile in scenari in cui le esigenze di memoria del sistema possono variare notevolmente, come nel caso di server con carichi di lavoro variabili o sistemi con risorse di memorizzazione limitate.

Necessità dello Swap in Presenza di Ampia RAM

Un interrogativo che spesso sorge riguardo l’utilizzo dello Swap è il seguente:

Se ho tanta RAM, molto più di quanto mi serve, perché dovrei comunque creare uno spazio di Swap?

Questa domanda è logicamente valida ed ha un senso, ma la risposta richiede una comprensione più approfondita di come i Sistemi Operativi, come GNU/Linux, gestiscono la memoria.

Esistono due ragioni fondamentali che giustificano l’utilizzo dello Swap, anche quando si dispone di molta RAM:

1. Ottimizzazione della gestione della RAM

Innanzitutto, i Sistemi Operativi come GNU/Linux gestiscono la RAM in modo molto intelligente, cercando di sfruttarla al massimo. Non esiste, per così dire, della RAM “inutile” o “inutilizzata”: qualsiasi spazio libero viene utilizzato per fare cache delle letture e scritture sui dischi, rendendo le operazioni di I/O più veloci e reattive.

In questa ottica, lo Swap diventa utile perché permette di liberare la RAM da applicazioni che non sono state utilizzate da un certo periodo di tempo. Queste vengono “swappate”, ovvero i loro dati in RAM vengono spostati nello Swap. Questa operazione libera spazio in RAM che può essere utilizzato per aumentare la cache dei dischi o per gestire eventuali picchi di carico. L’intensità di questa operazione è regolata dall’impostazione della swappiness, un parametro del kernel che decide quanto il sistema dovrebbe cercare di utilizzare lo Swap rispetto alla RAM.

2. Supporto all’ibernazione

In secondo luogo, quasi tutte le distribuzioni di GNU/Linux utilizzano lo Swap come spazio di memorizzazione dati in caso di ibernazione. Durante l’ibernazione, il contenuto della RAM viene “congelato” e copiato nello Swap. Questo permette al sistema di spegnersi completamente, risparmiando energia, ma di riprendere esattamente da dove si era lasciato al successivo avvio. Per supportare questa funzionalità, lo Swap dovrebbe essere almeno grande quanto la RAM stessa, per garantire che tutto il contenuto della RAM possa essere salvato.

In molti casi, è possibile operare anche senza Swap, ma la sua presenza può migliorare l’efficienza di gestione delle risorse, la reattività del sistema e la flessibilità di funzioni come l’ibernazione. Pertanto, anche se si dispone di una grande quantità di RAM, la creazione di uno spazio di Swap è spesso una buona pratica.

Dimensionamento della Partizione di Swap

La decisione sulla dimensione da assegnare alla partizione di Swap è uno degli aspetti più discussi quando si tratta di configurazione dei sistemi operativi. Non esiste, infatti, una risposta definitiva a questa domanda, in quanto varia in base alle esigenze specifiche di ogni sistema e alla quantità di RAM disponibile.

C’era un tempo in cui si consigliava che la partizione di Swap dovesse essere il doppio della RAM. Tuttavia, erano gli anni in cui la memoria del computer era misurata in Megabyte e non in Gigabyte come accade oggi. In quel contesto, raddoppiare la RAM era una pratica comune per assicurarsi che ci fosse abbastanza memoria virtuale disponibile per le operazioni del sistema.

Nel mondo moderno, dove la RAM è misurata in Gigabyte, e spesso si hanno quantità di RAM molto generose, questa regola non è più così rilevante. Per i sistemi che necessitano di ibernazione, un suggerimento potrebbe essere quello di assegnare allo Swap una dimensione leggermente maggiore rispetto alla quantità di RAM disponibile. Questo perché, come accennato prima, il contenuto della RAM viene copiato nello Swap durante l’ibernazione.

Per i sistemi che non necessitano di questa funzionalità, come ad esempio i server, la dimensione dello Swap può essere valutata caso per caso. Tuttavia, si consiglia generalmente di riservare sempre almeno un paio di GB per gestire eventuali picchi di carico. Se ci fosse un aumento improvviso della necessità di memoria e non fosse possibile modificare le partizioni, si potrebbe sempre ricorrere all’utilizzo di uno swap-file, che può essere fissato o allocato dinamicamente in base alle necessità.

Un aspetto importante da considerare riguarda la sicurezza dei dati. Nello Swap vengono memorizzate porzioni di memoria RAM, il che significa che è possibile analizzare lo spazio anche dopo lo spegnimento del computer e potenzialmente trovare dati sensibili come password o informazioni personali. Per coloro che sono particolarmente preoccupati per la sicurezza dei dati, esiste la possibilità di crittografare la partizione di Swap. Questo può essere fatto sia con una chiave fissa, che viene richiesta ad ogni avvio del sistema, sia con una chiave generata dinamicamente ad ogni avvio, che si invalida allo spegnimento della macchina, aumentando così il livello di protezione dei dati.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Facebook, Inc. detiene i diritti su Facebook®; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Questo sito non è affiliato, sponsorizzato, o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello Europeo da MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italia.

Torna in alto