La versione stabile di Portage 3.0 è già stata annunciata

Sviluppatori di recente che sono responsabili del sistema di gestione dei pacchi Portage (sulla distribuzione Gentoo Linux) ha annunciato il rilascio della versione stabile della versione 3.0.

In quale, la principale novità di questo nuovo ramo presentato, è il lavoro che è stato svolto a lungo termine sul transizione a Python 3 e fine del supporto per Python 2.7 (cosa che si vedeva già da tempo, visto che questo ramo era ufficialmente senza supporto da diversi mesi)

Abbiamo buone notizie! Il progetto Gentoo Portage ha recentemente stabilizzato la versione 3.0 del gestore di pacchetti.

Cosa c'è di nuovo? Bene, questa terza versione di Portage rimuove il supporto per Python 2.7, che è stato uno sforzo continuo nel repository principale di Gentoo dal progetto Gentoo Python per tutto il 2020.

Oltre all'interruzione del supporto per Python 2.7, un altro grande cambiamento che si distingue da questo nuovo ramo stabile di Portage 3.0 è stata l'inclusione di varie ottimizzazioni che hanno permesso fare calcoli molto più velocemente (tra il 50% e il 60%) associati alla determinazione delle dipendenze.

È interessante notare che alcuni sviluppatori hanno suggerito di riscrivere il codice di risoluzione delle dipendenze in C / C ++ o Go per accelerare il loro lavoro, ma sono riusciti a risolvere il problema esistente con grande sforzo.

Ed è che il profilo di codice esistente mostrava che la maggior parte delle volte calcolo è dedicato alla chiamata delle funzioni use_reduce e catpkgsplit con un insieme ripetuto di argomenti (la persona che ha condotto questo lavoro afferma che, ad esempio, la funzione catpkgsplit è stata chiamata da 1 a 5 milioni di volte).

Con il problema rilevato, ricorda che per accelerare i calcoli, è stata applicata la memorizzazione nella cache del risultato di queste funzioni per mezzo di dizionari.

Inoltre, a causa di una patch fornita dall'utente, l'aggiornamento all'ultima versione di Portage può velocizzare notevolmente i calcoli delle dipendenze del 50-60%. Ci piace vedere la nostra community partecipare al nostro software! Per maggiori dettagli, dai un'occhiata a questo post su Reddit del membro della community che ha fornito la patch. Resta in salute e continua a cucinare con Gentoo!

a parte quello rileva inoltre che la funzione integrata lru_cache era ottimale per questo compito di memorizzazione nella cache, ma era disponibile solo nelle versioni Python dalla 3.2.

Per compatibilità con le versioni precedenti, è stato aggiunto anche uno stub per sostituire lru_cache, ma la decisione di porre fine al supporto di Python 2.7 in Portage 3.0 ha notevolmente semplificato il compito e ha reso possibile bypassare questo livello.

Ho passato un po' di tempo a profilare Portage con cProfile e vmprof per capire quali funzionalità richiedevano più tempo. Ho anche generato alcuni flamegraph dai risultati del profiler, che sembravano così. Quello che ho notato è che alcune funzioni, come use_reducecatpkgsplit, sono chiamati molto frequentemente con gli stessi argomenti (come, da 1 a 5 milioni di volte, per catpkgsplit). Ho fatto alcuni esperimenti per memorizzare nella cache i risultati di queste funzioni in un dettato e, dopo aver visto alcuni buoni miglioramenti, ho inviato una patch all'elenco degli sviluppatori di Portage. Qualcuno ha suggerito di usare Python integratolru_cache decoratore di funzioni invece, ma è disponibile solo in Python 3.2 e versioni successive.

D'altra parte, l'uso della cache ha ridotto l'operazione "emerge -uDvpU –with-bdeps = y @world" sul ThinkPad X220 da 5 minuti 20 secondi a 3 minuti 16 secondi (63%). I test su altri sistemi hanno mostrato un aumento delle prestazioni di almeno il 48%.

Lo sviluppatore che ha preparato la modifica ha anche provato a implementare un prototipo del codice di risoluzione delle dipendenze in C ++ o Rust, ma il compito si è rivelato troppo difficile, poiché richiedeva una grande quantità di codice da trasportare e allo stesso tempo era dubbio che il risultato valesse lo sforzo.

Infine se vuoi saperne di più Riguardo alla nota di rilascio di questo ramo stabile, puoi controllare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.