Confronto tra WSL 1 e WSL 2

I motivi principali per cui è opportuno eseguire l'aggiornamento del sottosistema Windows per Linux da WSL 1 a WSL 2 sono:

  • Aumentare le prestazioni del file system
  • Supportare la compatibilità completa con le chiamate di sistema.

WSL 2 usa la migliore tecnologia di virtualizzazione più recente per eseguire un kernel Linux all'interno di una macchina virtuale di utilità leggera. WSL 2 non offre tuttavia un'esperienza di macchina virtuale tradizionale.

Funzionalità a confronto

Funzionalità WSL 1 WSL 2
Integrazione tra Windows e Linux
Tempi di avvio rapidi
Small Resource Foot Print rispetto alle macchine virtuali tradizionali
Esecuzione con le versioni correnti di VMware e VirtualBox
Macchina virtuale gestita
Kernel Linux completo
Compatibilità completa con le chiamate di sistema
Prestazioni tra i file system dei sistemi operativi

Come è possibile dedurre dalla tabella di confronto precedente, l'architettura di WSL 2 offre prestazioni migliori rispetto a quella di WSL 1 sotto diversi punti di vista, ad eccezione del caso in cui si usino i file system di più sistemi operativi.

WSL 2 è disponibile solo in Windows 10 versione 1903, build 18362 o successive. Controlla la versione di Windows selezionando il tasto WINDOWS + R, digita winver e seleziona OK. In alternativa, immetti il comando ver nel prompt dei comandi di Windows. Potresti dover aggiornare alla versione più recente di Windows. WSL non è supportato nelle build inferiori alla 18362.

Novità in WSL 2

WSL 2 è un'importante revisione dell'architettura sottostante e usa la tecnologia di virtualizzazione e un kernel Linux per abilitare nuove funzionalità. Questo aggiornamento ha due obiettivi principali: ottimizzare le prestazioni dei file system e aggiungere la compatibilità completa con le chiamate di sistema.

Architettura di WSL 2

Un'esperienza di macchina virtuale tradizionale può risultare lenta all'avvio, è isolata, usa molte risorse e richiede tempo per la gestione. WSL 2 non ha queste caratteristiche.

WSL 2 offre i vantaggi di WSL 1, inclusa la perfetta integrazione tra Windows e Linux, tempi di avvio rapidi, un footprint di risorse ridotto e nessuna configurazione o gestione della macchina virtuale. Anche se WSL 2 usa una macchina virtuale, questa viene gestita ed eseguita dietro le quinte offrendo la stessa esperienza utente di WSL 1.

Kernel Linux completo

Il kernel Linux in WSL 2 è stato creato da Microsoft a partire dall'ultimo ramo stabile, sulla base del codice sorgente disponibile in kernel.org. Questo kernel è stato adattato in modo specifico per WSL 2, ottimizzando le dimensioni e le prestazioni per offrire un'esperienza straordinaria di Linux in Windows. Il kernel verrà gestito tramite gli aggiornamenti di Windows. Riceverai pertanto le correzioni per la sicurezza e i miglioramenti del kernel più recenti senza doverli gestire autonomamente.

Il kernel Linux in WSL 2 è open source. Per saperne di più, consulta il post di blog Shipping a Linux Kernel with Windows (Distribuzione di un kernel Linux con Windows) scritto dal team che lo ha creato.

Miglioramento delle prestazioni di I/O dei file

Le operazioni a elevato utilizzo di file, ad esempio git clone, npm install, apt update, apt upgrade e altre ancora, sono tutte molto più veloci con WSL 2.

L'aumento effettivo della velocità dipende dall'app in esecuzione e dal modo in cui interagisce con il file system. Le versioni iniziali di WSL 2 vengono eseguite con una velocità 20 volte superiore rispetto a WSL 1 quando viene decompresso un tarball e circa 2-5 volte superiore quando vengono usate operazioni git clone, npm install e cmake in diversi progetti.

Compatibilità completa con le chiamate di sistema

I file binari Linux usano chiamate di sistema per eseguire funzioni quali l'accesso ai file, la richiesta di memoria, la creazione di processi e altro ancora. Mentre WSL 1 usa un livello di conversione creato dal team WSL, WSL 2 include il proprio kernel Linux con compatibilità completa con le chiamate di sistema. Questa caratteristica offre i vantaggi seguenti:

  • Un nuovo set completo di app che è possibile eseguire in WSL, ad esempio Docker e altre ancora.

  • Tutti gli aggiornamenti del kernel Linux immediatamente pronti per l'uso. Non è necessario attendere che il team di WSL implementi gli aggiornamenti e aggiunga le modifiche.

Eccezioni per l'uso di WSL 1 in alternativa a WSL 2

È in genere consigliabile usare WSL 2 perché offre prestazioni più veloci e massima compatibilità con le chiamate di sistema. Esistono tuttavia alcuni scenari specifici in cui è preferibile usare WSL 1. Valuta l'opportunità di usare WSL 1 se:

  • I tuoi file di progetto devono essere archiviati nel file system Windows. WSL 1 offre un accesso più rapido ai file montati da Windows.
    • Se usi la distribuzione Linux di WSL per accedere ai file di progetto nel file system Windows e questi file non possono essere archiviati nel file system Linux, otterrai prestazioni più veloci nel passaggio tra i file system dei sistemi operativi usando WSL 1.
  • Il tuo progetto richiede una compilazione incrociata con l'esecuzione di strumenti di Windows e Linux sugli stessi file.
    • Le prestazioni dei file nel passaggio tra i sistemi operativi Windows e Linux sono più veloci in WSL 1 rispetto a WSL 2. Se pertanto usi applicazioni Windows per accedere a file di Linux, otterrai migliori prestazioni con WSL 1.
  • Il progetto deve accedere a una porta seriale o a un dispositivo USB.
  • WSL 2 non include il supporto per l'accesso alle porte seriali. Per altre informazioni, vedere le domande frequenti o il problema relativo al GitHub del GitHub WSL sul supporto seriale.
  • I requisiti di memoria sono rigorosi
    • L'utilizzo della memoria di WSL 2 aumenta e si riduce man mano che lo si usa. Quando un processo libera memoria, questo viene restituito automaticamente Windows. Tuttavia, al momento WSL 2 non rilascia ancora le pagine memorizzate nella cache in memoria Windows fino all'arresto dell'istanza di WSL. Se si dispone di sessioni WSL a esecuzione lunga o si accede a una quantità molto grande di file, questa cache può richiedere memoria su Windows. Microsoft sta verificando il lavoro per migliorare questa esperienza nel problema del repository GitHub WSL 4166.

Nota

Valuta l'opportunità di provare l'estensione Remote - WSL di VS Code per consentire l'archiviazione dei file di progetto nel file system Linux tramite gli strumenti da riga di comando di Linux. Può anche essere utile usare VS Code in Windows per creare, modificare, sottoporre a debug o eseguire il progetto in un browser Internet, senza alcun rallentamento delle prestazioni associato al passaggio tra file system Linux e Windows. Altre informazioni