View previous topic :: View next topic |
Author |
Message |
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 4:19 am Post subject: 75% weniger Download beim Update von Paketen |
|
|
Blackpenguins dynamic deltup server ist in der Betaphase angekommen
Das hier geht an alle, die unter der hohen Downloadlast, die Gentoo erzeugt, zu leiden haben. Also vor allem Nutzer von Modem, ISDN oder Volumentarifen oder Leute denen aus anderenGründen der Download zu viel ist, werden Gefallen an deltup finden.
Einige von euch werden sich an deltup erinnern können, ein tolles Programm zur Senkung des Downloadvolumen. Das Prinzip, das hinter deltup steckt, basiert darauf, dass nur die Unterschiede zu den bereits vorhandenen Dateien übertragen werden. (Dank an John Whitney, der für deltup selbst verantwortlich ist und Dank an Joshua P. MacDonald den Autor des zugrundeliegenden xdelta)
Leider wurde deltup vor einigen Wochen aus dem Portage-tree entfernt da nur eine bescheidenen Anzahl von delta-Dateien verfügbar war und mittlerweile auch keine davon mehr aktuell ist.
Nun kommen wir zu dem Punkt an dem blackpenguins schlicht genial zu nennender "dynamic deltup server", und das getdelta.sh-downloadwrapper-script ansetzt und diesen Zustand grundlegend ändert.
Wie der Name ja schon vermuten lässt hält der Server nicht nur fertige und natürlich aktuelle delta-Dateien (*.dtu) bereit sondern, und das ist das geniale daran, er erzeugt diese dtu-dateien dynamisch bei Bedarf, sollten sie nicht im Cache liegen.
Wenn ihr wissen wollt wieviel das im Einzelnen bringt, könnt ihr euch die Statistiken ansehen auf:
http://linux01.gwdg.de/~nlissne/
Was Ihr tun müsst um auch soviel Downloadvolumen sparen zu können:
- Ladet euch das deltup Ebuild von blackpenguins Seite runter und legt es unter $PORTDIR_OVERLAY/app-portage/deltup/
Code: | . /etc/make.conf
mkdir $PORTDIR_OVERLAY/app-portage/deltup/
cd $PORTDIR_OVERLAY/app-portage/deltup/
wget http://linux01.gwdg.de/~nlissne/deltup-0.4.0.ebuild
ebuild deltup-0.4.0.ebuild digest
emerge deltup |
Dann ladet ihr das getdelta.sh Script herunter und legt es nach /usr/local/bin
(Anstelle der letzten Zeile könnt ihr natürlich auch die entsprechende Zeile in der make.conf editieren)
Code: | cd /usr/local/bin
wget http://linux01.gwdg.de/~nlissne/getdelta.sh
chmod +x getdelta.sh
echo 'FETCHCOMMAND="/usr/local/bin/getdelta.sh \${URI}"' >> /etc/make.conf |
Dann müsst ihr noch dafür sorgen das in der make.conf die Variable GENTOO_MIRRORS="" gesetzt ist.
Code: | echo 'GENTOO_MIRRORS=""' >> /etc/make.conf |
Ach ja das war's emerge -uD world oder was immer ihr wollt.
Und wie macht der das???
Wann immer ihr ein Paket updatet untersucht das getdelta.sh Skript euer $DISTDIR Verzeichnis, wenn es eine alte Version des Quell-Archives gefunden hat fordert es eine entsprechende dtu-Datei bei dem deltup Server an.
Der Server schickt entweder die dtu-Datei direkt oder er setzt einen Auftrag in seine Warteschlange und erzeugt dann die dtu-Datei für euch und natürlich andere die nach euch kommen, und dann die Datei direkt aus dem Cache beziehen können.
Sowie getdelta.sh die dtu-datei erhalten hat erstellt es Automatisch die neue Version des Archives. Wenn irgendetwas schiefgehen sollte fällt getdelta.sh auf einen normalen Download zurück. Dadurch verhält sich getdelta.sh portage gegenüber völlig transparent und muss in keiner Weise von euch bedient werden oder Ähnliches.
Das Verhalten von getdelta.sh kann sehr fein configuriert werden. Dazu könnt ihr entweder in dem sehr gut dokumentierten script selbst etliche Variablen ändern, oder ihr tragt, die von den Voreinstellungen abweichenden WErte direkt in die make.conf ein um beim nächsten update das script nicht wieder editieren zu müssen. Ihr könnt einstellen ob es bunt sein soll oder nicht, wie auskunftsfreudig es sein soll, wann ein timeout erfolgen soll und vieles andere mehr.
Also schaut bitte in das Script rein und passt die Variablen euren Wünschen an.
Variablen die in make.conf gesetzt werden haben eine höhere Priorität.
Hoffentlich können recht viele von euch damit was anfangen.
blackpenguin könnt ihr (fast immer *fg*) auf freenode im IRC finden er freut sich schon auf eure Fragen und Rückmeldungen.
Auf freenode wollen wir auf #dynamic-deltup-server uns speziell diesem Thema widmen, wir freuen uns auf euren Besuch.
Wenn jemand Interesse daran hat auch einen dynamic-deltup-Server aufzusetzten möge er sich auch bei blackpenguin melden (als solcher natürlich auch hier im Forum)
Das ist eine Übersetzung von blackpenguins Original-Posting:
https://forums.gentoo.org/viewtopic.php?t=215262 _________________ Nobody will ever need more than 640 kB RAM. -- Bill Gates
Last edited by Wiebel on Tue Aug 31, 2004 12:53 pm; edited 8 times in total |
|
Back to top |
|
|
alex0801 n00b
Joined: 19 Jul 2004 Posts: 44
|
Posted: Sat Aug 28, 2004 6:54 am Post subject: |
|
|
höre heute zum ersten mal davon und finds genial.
Jetzt muss nur noch mein Modem im Schleppi unter gentoo funktionieren...
- Alex |
|
Back to top |
|
|
ts77 Apprentice
Joined: 23 Mar 2003 Posts: 200 Location: Berlin, Germany
|
Posted: Sat Aug 28, 2004 8:10 am Post subject: |
|
|
Wow, auch mit DSL und Volumentarif lohnt sich das:
perl-5.8.4.tar.gz-perl-5.8.5.tar.gz.dtu
Size: 202.5 kB
Orig-Size: 11.4 MB
Efficiency: 98.26%
Saved: 11.2 MB
Hab dem Cache gerade ein paar mehr Einträge beschert . |
|
Back to top |
|
|
zielscheibe l33t
Joined: 02 Apr 2004 Posts: 804 Location: Aachen
|
Posted: Sat Aug 28, 2004 10:41 am Post subject: |
|
|
Fantastico!
Schont die Uploads der Mirrors und mein Volumentarif.
cu |
|
Back to top |
|
|
SirPreme n00b
Joined: 19 Aug 2004 Posts: 25
|
Posted: Sat Aug 28, 2004 12:27 pm Post subject: |
|
|
Als ich mit Gentoo anfing waren ja meine ganz ersten Hoffnungen, dass Portage sowas schon enthält... sie wurden nie erfüllt..
Das Programm hier sieht wiederum sehr gut aus. Aber wie fehlerfrei läuft es? Kann es passieren, dass unangenehme Fehler auftreten, oder wichtige Teile nicht aktualisiert werden?
Als Nutzer eines Traffictarifs bin ich an diesem Programm natürlich sehr interessiert - aber ich bin auch kein Freund von Experimenten ("never touch a running system")... |
|
Back to top |
|
|
_hephaistos_ Advocate
Joined: 07 Apr 2004 Posts: 2694 Location: salzburg, austria
|
Posted: Sat Aug 28, 2004 12:38 pm Post subject: |
|
|
wenn mit der downgeloadeten file was nicht stimmt, verwendet portage diese eh nicht -->> md5sum...
ciao |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sat Aug 28, 2004 12:44 pm Post subject: |
|
|
Wow, das klingt in der Tat sehr gut. Dieses "cheap copy" genannte Prinzip hat sich ja auch schon bei Versionsverwaltungssystemen bewährt. Vielen Dank für das HowTo, ich denke, wenn ich Zeit habe, werde ichs auch mal einrichten. (Aber für heute steht erstmal QTC# auf dem Programm )
Wie siehts denn mit der Last auf dem Server und der Aktualität von testing-Paketen aus? _________________ 42 |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 1:43 pm Post subject: |
|
|
@SirPreme:
Bisher läuft es völlig fehlerfrei, und wie hephaistos6 schon richtig angemerkt hat, wird die datei bei falschem md5 sowieso nicht verwendet. Wenn du die entsprechende Datei dann aus distfiles/ löschst nötigst du deltup ohnehin das paket "normal" runterzuladen und bist somit wieder bei dem gewohnten verhalten, da aber xdelta, gerade was die md5sum angeht sehr gut funktioniert, wist du eher das Problem haben das die md5 in Portage selbst falsch ist.
@Sas:
Naja die aktualität ist ja durch das dynamische konzept, genau so gut wie die des Internets selbst. Was die Serverlast angeht hält sich das durchaus in vertretbaren Grenzen, auch wenn der xdelta-prozess selbst sicher das eine oder andere mal etwas länger dauert, aber dazu kann dir blackpenguin selbst sicher mehr erzählen. |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sat Aug 28, 2004 1:48 pm Post subject: |
|
|
Ist es denn nicht so, dass der Server auf jeden Fall die vollständigen Dateien vorhalten muss, damit er die Differenzen errechnen und versenden kann? So war das mit der Aktualität gemeint... also müsste er doch nebenher sämtliche Distfiles vorliegen haben - und da interessiert mich eben, ob auch der testing-Tree vorhanden ist
Oder lädt er den Kram bei Bedarf von einem Gentoo-Mirror? _________________ 42 |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 1:55 pm Post subject: |
|
|
@Sas:
Oh nein, das war wohl nicht deutlich genug der Server holt sich die benötigten Dateien aus dem Netz, wenn die natürlich lokal verfügbar sind werden diese dirkt genutzt, aber an sonsten ist es nicht erforderlich dass alle Dateien auf dem Server vorliegen. |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sat Aug 28, 2004 2:06 pm Post subject: |
|
|
Achso, er speichert also nur die Differenzen, ja? Fehlt ihm eine, wird sie mit Hilfe der kompletten Datei eines anderen Mirror erstellt und gespeichert. Und wenn man eine Datei komplett braucht, reicht der die Anfrage an einen normalen Mirror weiter? _________________ 42 |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 2:14 pm Post subject: |
|
|
Genau so macht er das. (Temporär muss er natürlich zum Erstellen der dtus die Dateien dahaben, aber gespeichert werden nur die dtus) |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 2:34 pm Post subject: |
|
|
Und euer distfiles - Verzeichnis kann es auch gleich sauberhalten.
Ich persönlich schätze die Option REMOVE_OLD=true sehr. Diese Option bewirkt, dass das jeweils alte Archiv nach dem erstellen des neuen auch gleich gelöscht wird, und das Hält euer disfiles Verzeichniss hervorragend sauber, da im Idealfall nur die aktuell benötigten Archive da sind und nicht, wie sonst, alle möglichen Generationen ein und seselben Paketes.
Das dürfte vor allem diejenigen interessieren, die bisher mit allen möglichen und unmöglichen Scripten versucht haben ihr distfiles Verzeichnis halbwegs ordentlich zu halten.
Wollt ich nur noch gesagt haben.
Last edited by Wiebel on Sat Aug 28, 2004 11:14 pm; edited 1 time in total |
|
Back to top |
|
|
Realmaker l33t
Joined: 17 Sep 2003 Posts: 683 Location: Bremen, Germany
|
Posted: Sat Aug 28, 2004 2:44 pm Post subject: |
|
|
Und wenn ich eine Version überspringe, lädt er dann die Zwischenversionsdatei runter und dann die nächste Datei oder geht das System dann nicht mehr, so dass er den ganzen Quellcode runterlädt? _________________ Athlon 2600+ Barton, Asus A7N8x-X, nForce2, Asus Geforce FX5700 256mb, TwinMos 512ddr-sdram cl 2.5
Wer andern eine Bratwurst brät, der hat ein Bratwurstbratgerät. |
|
Back to top |
|
|
ts77 Apprentice
Joined: 23 Mar 2003 Posts: 200 Location: Berlin, Germany
|
Posted: Sat Aug 28, 2004 2:49 pm Post subject: |
|
|
er lädt einfach die differenzen von den dateien, die du vorliegen hast, bis zu der aktuellen datei, die portage gerade zu ziehen versucht.
auch wenn 10 verschiedene versionen dazwischen liegen, kann halt passieren, das dann alles neu ist |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 2:51 pm Post subject: |
|
|
getdeltup fordert eine datei an die zb. so aussieht glibc-2.1.tar.gz-glibc-2.3.3.tar.gz.dtu an wobei es keine rolle spielt wieweit die Versionen auseinanderliegen, solange der deltup-Server irgendwie an die Ursprungsversionen rankommt, wird er dir die dtu auch bauen und bereitstellen. Das ganze ist sehr narrensicher und deckt nahezu jeden erdenklichen Fall ab.
Einzig bei Binärpaketen, bei denen es auch funktioniert, ist die effizienz nicht optimal. |
|
Back to top |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Aug 28, 2004 3:26 pm Post subject: Re: [HOWTO] 75% weniger Download beim Update von Paketen |
|
|
Wiebel wrote: | emerge -UD world oder was immer ihr wollt.[/list]
|
*Hüstel* nicht -U, das ist böse.
Ist wirklich ne tolle Sache geworden, vor allem das automatische Wegräumen der alten Distfiles ist ein netter Nebeneffekt. _________________ Dinosaur week! (Ok, this thread is so last week) |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 3:36 pm Post subject: |
|
|
*edit* Ok, danke amne. Ich hab das im Originalpost berichtigt, für's Protokoll *edit*
Last edited by Wiebel on Sat Aug 28, 2004 3:51 pm; edited 1 time in total |
|
Back to top |
|
|
_hephaistos_ Advocate
Joined: 07 Apr 2004 Posts: 2694 Location: salzburg, austria
|
Posted: Sat Aug 28, 2004 3:50 pm Post subject: |
|
|
@Wiebel: -U = Upgradeonly!!! bitte schau doch den link bei der signatur von amne an...
hth,
ciao |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
Posted: Sat Aug 28, 2004 3:56 pm Post subject: |
|
|
Sorry hephaistos6, jetzt hab ich mich zu lange an dir vorbei mit amne verständigt.
hepephaistos6 Eintrag macht Sinn wenn man ein paar meiner etlichen Editieraktionen an meinem vorigen Post wieder wegnimmt |
|
Back to top |
|
|
_hephaistos_ Advocate
Joined: 07 Apr 2004 Posts: 2694 Location: salzburg, austria
|
Posted: Sat Aug 28, 2004 4:04 pm Post subject: |
|
|
hey wiebel!
danke, dass du mich nicht als volldummy dastehen lässt
ciao |
|
Back to top |
|
|
Merlin-TC l33t
Joined: 16 May 2003 Posts: 603 Location: Germany
|
Posted: Sat Aug 28, 2004 4:06 pm Post subject: |
|
|
Kann es sein das es unter GCC 3.4 nicht compiliert?
Code: |
emerge deltup
Calculating dependencies ...done!
>>> emerge (1 of 1) app-portage/deltup-0.4.0 to /
>>> md5 src_uri ;-) deltup-0.4.0.tar.gz
*
* Please note that deltup will be removed from portage
* in the near future. Development on deltup has stopped, although
* patches are being generated in the interim until another distfile
* patching system is ready for testing.
*
* further info will be available at
* http://www.gentoo.org/proj/en/glep/glep-0009.html
*
>>> Unpacking source...
>>> Unpacking deltup-0.4.0.tar.gz to /var/tmp/portage/deltup-0.4.0/work
>>> Source unpacked.
>>> Install deltup-0.4.0 into /var/tmp/portage/deltup-0.4.0/image/ category app-portage
gcc deltup.cpp -march=athlon-xp -O2 -pipe -fomit-frame-pointer -ftracer -mmmx -msse -m3dnow -o deltup -lstdc++ -lz -lbz2 -lssl
In file included from deltup.cpp:25:
file.h: In member function `virtual int Injectable_IStream::read(void*, int)':
file.h:132: Fehler: ISO C++ forbids cast to non-reference type used as lvalue
file.h:142: Fehler: ISO C++ forbids cast to non-reference type used as lvalue
make: *** [deltup] Fehler 1
!!! ERROR: app-portage/deltup-0.4.0 failed.
!!! Function src_install, Line 35, Exitcode 2
!!! (no error message)
|
Waere fuer einen Tip sehr dankbar. |
|
Back to top |
|
|
ruth Retired Dev
Joined: 07 Sep 2003 Posts: 640 Location: M / AN / BY / GER
|
Posted: Sat Aug 28, 2004 4:20 pm Post subject: |
|
|
hi,
ja das sollte ein gcc 3.4 problem sein...
versuchs doch mal mit CFLAGS "$CFLAGS -fpermissive"
also mal -fpermissive dranhängen...
dann sollten das nur noch warnungen sein...
gruss
rootshell
(das ist die quick'n dirty variante...
also der compiler aufruf muss:
Code: |
gcc deltup.cpp -fpermissive -march=athlon-xp -O2 -pipe -fomit-frame-pointer -ftracer -mmmx -msse -m3dnow -o deltup -lstdc++ -lz -lbz2 -lssl
|
sein... _________________ "The compiler has tried twice to abort and cannot do so; therefore, compilation will now terminate."
-- IBM PL/I (F) error manual |
|
Back to top |
|
|
Wiebel n00b
Joined: 05 Feb 2003 Posts: 60 Location: Bad Homburg, Germany
|
|
Back to top |
|
|
moe Veteran
Joined: 28 Mar 2003 Posts: 1289 Location: Potsdam / Germany
|
Posted: Sat Aug 28, 2004 4:42 pm Post subject: |
|
|
Hmm, hier wurde es unter gcc-3.3.4 problemlos kompiliert.. Versteh ich nicht.
Ob das vielleicht mit den jetzt neuen USE-Flags von gcc zusammenhängt? Da gibts seit 3.3.4 u.a. ein Flag objc (Build support for the Objective C code language), das ist standard aus, ich habs aber angemacht, da es wichtig klingt..
Hast du (Merlin-TC) das aus?
Gruss Maurice _________________ Signaturen sind doof. |
|
Back to top |
|
|
|