Difference between revisions of "Improve pacman performance (Italiano)"
Kynikos.bot (talk | contribs) (use https for links to archlinux.org) |
Lahwaacz.bot (talk | contribs) (synchronized interlanguage links with the other wikis) |
||
(10 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
[[es:Improve Pacman Performance]] | [[es:Improve Pacman Performance]] | ||
[[fr:Ameliorer Pacman]] | [[fr:Ameliorer Pacman]] | ||
− | [[ | + | [[ja:Improve Pacman Performance]] |
[[ru:Improve Pacman Performance]] | [[ru:Improve Pacman Performance]] | ||
[[tr:Pacman_verimini_arttırmak]] | [[tr:Pacman_verimini_arttırmak]] | ||
Line 28: | Line 28: | ||
# pacman -Syu | # pacman -Syu | ||
+ | |||
+ | ===Usando Powerpill=== | ||
+ | |||
+ | Powerpill è un wrapper completo per pacman che utilizza il download parallelo da più server per velocizzare il processo di scaricamento. Normalmente pacman scarica un solo pacchetto per volta, aspettando che il download dello stesso sia concluso prima di passare al sucessivo: Powerpill sceglie un approccio differente, cercando di scaricare il maggior numero possibile di pacchetti in contemporanea. | ||
+ | |||
+ | La pagina relativa a [[Powerpill (Italiano)|Powerpill]] copre la configurazione di base e fornisce vari esempi d'impego. | ||
+ | |||
+ | ===Usando powerpill-light (deprecato)=== | ||
+ | |||
+ | [http://xyne.archlinux.ca/projects/pacman2aria2/ pacman2aria2] fornisce uno script chiamato "powerpill-light" che fu creato dopo l'abbandono dell'originale Powerpill. Ora che lo sviluppo è ripreso, powerpill-light è deprecato. | ||
===Usando wget=== | ===Usando wget=== | ||
Line 43: | Line 53: | ||
[[Aria2|aria2]] è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. [http://aria2.sourceforge.net/ aria2] consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti. | [[Aria2|aria2]] è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. [http://aria2.sourceforge.net/ aria2] consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti. | ||
+ | |||
+ | {{Nota|Inserire {{ic|aria2c}} in {{ic|XferCommand}} nel file di configurazione {{ic|/etc/pacman.conf}} '''non''' comporta il download parallelo di più pacchetti. Pacman invoca {{ic|XferCommand}} ad ogni pacchetto e aspetta che il download sia terminato prima di scaricare il successivo. | ||
+ | Per scaricare più pacchetti contemporaneamente, si veda la sezione dedicata a [[Improve_Pacman_Performance_(Italiano)#Usando_Powerpill | powerpill]].}} | ||
====Installazione==== | ====Installazione==== | ||
Line 54: | Line 67: | ||
Si modifichi {{ic|/etc/pacman.conf}} aggiungendo la linea seguente nella sezione {{ic|[options]}}: | Si modifichi {{ic|/etc/pacman.conf}} aggiungendo la linea seguente nella sezione {{ic|[options]}}: | ||
− | {{bc| | + | {{bc|1=XferCommand = /usr/bin/aria2c --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 -x2 --max-file-not-found=5 -k5M --no-conf -Rtrue --summary-interval=60 -t5 -d / -o %o %u}} |
====Spiegazione delle opzioni==== | ====Spiegazione delle opzioni==== | ||
Line 64: | Line 77: | ||
; {{ic|1=--log-level=error}}: Vengono scritti nel file di log solamente gli errori. (Default: debug) | ; {{ic|1=--log-level=error}}: Vengono scritti nel file di log solamente gli errori. (Default: debug) | ||
; {{ic|1=m2, --max-tries=2}}: Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 5) | ; {{ic|1=m2, --max-tries=2}}: Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 5) | ||
− | ; {{ic|1=--max-connections-per-server=2}}: Imposta un massimo di due connessioni per ogni mirror. (Default:1) | + | ; {{ic|1=-x2,--max-connections-per-server=2}}: Imposta un massimo di due connessioni per ogni mirror. (Default:1) |
; {{ic|1=--max-file-not-found=5}}: Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0) | ; {{ic|1=--max-file-not-found=5}}: Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0) | ||
− | ; {{ic|1=--max-split-size=5M}}: Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M) | + | ; {{ic|1=-k5M,--max-split-size=5M}}: Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M) |
; {{ic|--no-conf}}: Disabilita il caricamento del file {{ic|aria2.conf}}, se esistente. (Default:{{ic|~/.aria2/aria2.conf}}) | ; {{ic|--no-conf}}: Disabilita il caricamento del file {{ic|aria2.conf}}, se esistente. (Default:{{ic|~/.aria2/aria2.conf}}) | ||
− | ; {{ic|1=--remote-time=true}}: Applica i timestamps dei file(s) remoti a quelli locali. (Default: false) | + | ; {{ic|1=-Rtrue,--remote-time=true}}: Applica i timestamps dei file(s) remoti a quelli locali. (Default: false) |
; {{ic|1=--summary-interval=60}}: visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)<sup>2</sup> | ; {{ic|1=--summary-interval=60}}: visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)<sup>2</sup> | ||
; {{ic|1=-t5, --timeout=5}}: Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60) | ; {{ic|1=-t5, --timeout=5}}: Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60) | ||
; {{ic|-d, --dir}}: La directory dove memorizzare i files scaricati, come specificato da [[Pacman (Italiano)|pacman]]. | ; {{ic|-d, --dir}}: La directory dove memorizzare i files scaricati, come specificato da [[Pacman (Italiano)|pacman]]. | ||
− | ; {{ic|-o, -- | + | ; {{ic|-o, --out}}: Imposta il nome del/i file/s scaricato/i. |
; {{ic|%o}}: Variabile che rappresenta il nome del file, come specificato da pacman. | ; {{ic|%o}}: Variabile che rappresenta il nome del file, come specificato da pacman. | ||
; {{ic|%u}}: Variabile che rappresenta l'URL di download, come specificato da pacman. | ; {{ic|%u}}: Variabile che rappresenta l'URL di download, come specificato da pacman. | ||
Line 81: | Line 94: | ||
; <sup>2</sup> {{ic|1=--summary-interval=0}}: Disabilita l'output del riassunto progressi di download, il che potrebbe aumentare le prestazioni generali. I logs continueranno ad essere scritti, seguendo quanto specificato dall'opzione {{ic|log-level}}. | ; <sup>2</sup> {{ic|1=--summary-interval=0}}: Disabilita l'output del riassunto progressi di download, il che potrebbe aumentare le prestazioni generali. I logs continueranno ad essere scritti, seguendo quanto specificato dall'opzione {{ic|log-level}}. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Script per mirror pacget (aria2)=== | ===Script per mirror pacget (aria2)=== | ||
Line 215: | Line 207: | ||
==Scelta del mirror più veloce== | ==Scelta del mirror più veloce== | ||
− | Pacman utilizza in sequenza i mirror contenuti in {{ic|/etc/pacman.d/mirrorlist}} per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce. | + | Pacman utilizza in sequenza i mirror contenuti in {{ic|/etc/pacman.d/mirrorlist}} per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce. Per selezionare un mirror più veloce, si consulti [[Mirrors (Italiano)|Mirrors]] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Condivisione dei pacchetti su rete LAN== | ==Condivisione dei pacchetti su rete LAN== |
Revision as of 17:14, 23 February 2014
zh-CN:Improve Pacman Performance zh-TW:Improve Pacman Performance
Contents
Miglioramento dei tempi d'accesso al database
Pacman memorizza tutte le informazioni relative ai pacchetti in piccoli file; uno per pacchetto. Migliorare i tempi d'accesso al database, riduce il tempo necessario a portare a termine le operazioni che ne fanno uso, come la ricerca dei pacchetti e la risoluzione delle dipendenze. Il metodo più sicuro e veloce, è dare il seguente comando come root:
# pacman-optimize
In questo modo il sistema tenterà di raggruppare tutti i files con le informazioni dei pacchetti, in modo che risiedano nella stessa area dell'hard disk, evitando che le testine si muovano eccessivamente quando devono accedere a tutti i pacchetti. Questo medodo è sicuro, ma non è infallibile. La sua efficacia varia in funzione del filesystem utilizzato, dalla percentuale di utilizzo del disco e dalla frammentazione dello spazio ancora libero. Un'opzione più "aggressiva", sarebbe quella di rimuovere i pacchetti disinstallati e i repository inutilizzati dalla cache, prima di procedere all'ottimizzazione del database:
# pacman -Sc && pacman-optimize
Migliorare la velocità di download
La velocità con cui Pacman scarica i pacchetti può essere migliorata usando un'applicazione differente per lo scaricamento, preferendola al downloader built-in.
In ogni caso, assicurarsi di avere l'ultima versione di Pacman prima di effettuare qualsiasi modifica:
# pacman -Syu
Usando Powerpill
Powerpill è un wrapper completo per pacman che utilizza il download parallelo da più server per velocizzare il processo di scaricamento. Normalmente pacman scarica un solo pacchetto per volta, aspettando che il download dello stesso sia concluso prima di passare al sucessivo: Powerpill sceglie un approccio differente, cercando di scaricare il maggior numero possibile di pacchetti in contemporanea.
La pagina relativa a Powerpill copre la configurazione di base e fornisce vari esempi d'impego.
Usando powerpill-light (deprecato)
pacman2aria2 fornisce uno script chiamato "powerpill-light" che fu creato dopo l'abbandono dell'originale Powerpill. Ora che lo sviluppo è ripreso, powerpill-light è deprecato.
Usando wget
Questa opzione è utile se si necessita di impostazioni per i proxy più avanzate rispetto a quelle native di pacman.
Per utilizzare wget
, lo si installi con pacman -S wget
e poi si modifichi /etc/pacman.conf
aggiungendo le seguenti linee alla sezione [options]
:
XferCommand = /usr/bin/wget -c --passive-ftp -c %u
Invece di inserire i parametri di wget in /etc/pacman.conf
, è possibile modificare direttamente il relativo file di configurazione (quello globale risiede in /etc/wgetrc
, mentre la configurazione per utente è contenuta in $HOME/.wgetrc
).
Usando aria2
aria2 è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. aria2 consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti.
aria2c
in XferCommand
nel file di configurazione /etc/pacman.conf
non comporta il download parallelo di più pacchetti. Pacman invoca XferCommand
ad ogni pacchetto e aspetta che il download sia terminato prima di scaricare il successivo.
Per scaricare più pacchetti contemporaneamente, si veda la sezione dedicata a powerpill.Installazione
Si installino aria2 e relative dipendenze:
# pacman -S aria2
Configurazione
Si modifichi /etc/pacman.conf
aggiungendo la linea seguente nella sezione [options]
:
XferCommand = /usr/bin/aria2c --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 -x2 --max-file-not-found=5 -k5M --no-conf -Rtrue --summary-interval=60 -t5 -d / -o %o %u
Spiegazione delle opzioni
-
/usr/bin/aria2c
- Il percorso completo all'eseguibile di aria2c.
-
--allow-overwrite=true
- Riavvia un download se il corrispondente file di controllo non esiste. (Default: false)
-
-C, --continue
- Continua il download di un file parzialmente scaricato, se il relativo file di controllo esiste.
-
--file-allocation=none
- Non prealloca lo spazio su disco per il file prima dell'inizio del download. (Default:prealloc)1
-
--log-level=error
- Vengono scritti nel file di log solamente gli errori. (Default: debug)
-
m2, --max-tries=2
- Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 5)
-
-x2,--max-connections-per-server=2
- Imposta un massimo di due connessioni per ogni mirror. (Default:1)
-
--max-file-not-found=5
- Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0)
-
-k5M,--max-split-size=5M
- Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M)
-
--no-conf
- Disabilita il caricamento del file
aria2.conf
, se esistente. (Default:~/.aria2/aria2.conf
) -
-Rtrue,--remote-time=true
- Applica i timestamps dei file(s) remoti a quelli locali. (Default: false)
-
--summary-interval=60
- visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)2
-
-t5, --timeout=5
- Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60)
-
-d, --dir
- La directory dove memorizzare i files scaricati, come specificato da pacman.
-
-o, --out
- Imposta il nome del/i file/s scaricato/i.
-
%o
- Variabile che rappresenta il nome del file, come specificato da pacman.
-
%u
- Variabile che rappresenta l'URL di download, come specificato da pacman.
Note aggiuntive
- 1
--file-allocation=falloc
- Valore raccomandato per filesystem di nuova generazione come ext4 (con supporto agli extents abilitato), btrfs o xfs, poichè consente l'allocazione pressochè istantanea di files di grandi dimensioni (GB). Non utilizzare falloc con filesystem legacy come ext3, poichè la preallocazione impiega approssimativamente lo stessso tempo dell'allocazione standard, cosa che costringerebbe il processo di aria2 ad aspettare prima di iniziare il download.
- 2
--summary-interval=0
- Disabilita l'output del riassunto progressi di download, il che potrebbe aumentare le prestazioni generali. I logs continueranno ad essere scritti, seguendo quanto specificato dall'opzione
log-level
.
Script per mirror pacget (aria2)
Questo script migliora notevolmente la velocità di download dei pacchetti per gli utenti che dispongono di connessioni a banda larga. Usa i server elencati in /etc/pacman.d/mirrorlist
come mirrors per aria2, scaricando da più server contemporaneamente ed aumentando così in maniera significativa la velocità di download.
exec
prima di /usr/bin/pacget
in XferCommand
, affinchè quando si termina pacget o aria2c (il cui processo è usato da pacget), pacman venga terminato a sua volta, risolvendo così l'inconveniente dove quest'ultimo continuava a scaricare un file anche dietro interruzione forzata dell'utente./usr/bin/pacget
#!/bin/bash msg() { echo "" echo -e " \033[1;34m->\033[1;0m \033[1;1m${1}\033[1;0m" >&2 } error() { echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2 } CONF=/etc/pacget.conf STATS=/etc/pacget.stats ARIA2=$(which aria2c 2> /dev/null) # ----- do some checks first ----- if [ ! -x "$ARIA2" ]; then error "aria2c was not found or isn't executable." exit 1 fi if [ $# -ne 2 ]; then error "Incorrect number of arguments" exit 1 fi filename=$(basename $1) server=${1%/$filename} arch=$(grep ^Architecture /etc/pacman.conf | cut -d '=' -f2 | sed 's/ //g') if [[ $arch = "auto" ]]; then arch=$(uname -m) fi # Determine which repo is being used repo=$(awk -F'/' '$(NF-2)~/^(community|core|extra|testing|comunity-testing|multilib)$/{print $(NF-2)}' <<< $server) [ -z $repo ] && repo="custom" # For db files, or when using a custom repo (which most likely doesn't have any mirror), # use only the URL passed by pacman; Otherwise, extract the list of servers (from the include file of the repo) to download from url=$1 if ! [[ $filename = *.db || $repo = "custom" ]]; then mirrorlist=$(awk -F' *= *' '$0~"^\\["r"\\]",/Include *= */{l=$2} END{print l}' r=$repo /etc/pacman.conf) if [ -n mirrorlist ]; then num_conn=$(grep ^split $CONF | cut -d'=' -f2) url=$(sed -r '/^Server *= */!d; s/Server *= *//; s/\$repo'"/$repo/"'; s/\$arch'"/$arch/; s/$/\/$filename/" $mirrorlist | head -n $(($num_conn *2)) ) fi fi msg "Downloading $filename" cd /var/cache/pacman/pkg/ touch $STATS $ARIA2 --conf-path=$CONF --max-tries=1 --max-file-not-found=5 \ --uri-selector=adaptive --server-stat-if=$STATS --server-stat-of=$STATS \ --allow-overwrite=true --remote-time=true --log-level=error --summary-interval=0 \ $url --out=${filename}.pacget && [ ! -f ${filename}.pacget.aria2 ] && mv ${filename}.pacget $2 && chmod 644 $2 exit $?
/etc/pacget.conf
# The log file log=/var/log/pacget.log # Number of servers to download from split=5 # Minimum file size that justifies a split, i.e. concurrent download (default 20M) min-split-size=1M # Maximum download speed (0 = unrestricted) max-download-limit=0 # Minimum download speed (0 = do not care) lowest-speed-limit=0 # Server timeout period timeout=5 # 'none' or 'falloc' file-allocation=none
Si salvi lo script in /usr/bin/pacget
e lo si renda eseguibile:
chmod 755 /usr/bin/pacget
In /etc/pacman.conf
, è necessario aggiungere la seguente riga alla sezione [options]
:
XferCommand = exec /usr/bin/pacget %u %o
Usando altre applicazioni
Esistono altre applicazioni per il download utilizzabili con pacman. Vengono presentate di seguito, con il relativo XferCommand
:
-
snarf
:XferCommand = /usr/bin/snarf -N %u
-
lftp
:XferCommand = /usr/bin/lftp -c pget %u
-
axel
:XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u
Scelta del mirror più veloce
Pacman utilizza in sequenza i mirror contenuti in /etc/pacman.d/mirrorlist
per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce. Per selezionare un mirror più veloce, si consulti Mirrors
Condivisione dei pacchetti su rete LAN
Se si dispone di più macchine con Archlinux collegate ad una rete locale, è possibile condividere i pacchetti per ridurre sensibilmente i tempi di download. Si faccia attenzione a non condividere pacchetti di architetture diverse (es. i686 e x86_64), altrimenti si verificheranno problemi.
Si veda: pacman Tips#Network shared pacman cache.