[HOWTO] Schnelleres Compilieren auf dem VDR

  • Hallo zusammen,

    vielleicht habt Ihr wie ich auch den Drang, öfters am VDR rumzubasteln.

    Und vielleicht habt Ihr auch nicht die leistungsfähigste CPU im VDR, sondern eher einen Stromspar-Prozzi wie z.B. den VIA Eden.

    Dann habt Ihr bestimmt auch das Problem, dass die make-Vorgänge quälend lange dauern, insbesondere wenn wider mal ein neuer Kernel gebaut werden muss.

    Dann habt Ihr vielleicht Interesse an folgender Lösung:
    Aufsetzen eines Compile-Clusters mit ICECREAM

    Was braucht man dazu?
    Zunächst mal mehrere LINUX-Rechner, es soll ja schliesslich ein Cluster werden.
    Wer wie ich neben dem Compilieren gerne etwas auf seinem Windows-Desktop erledigt, kann hierbei auch zu VMWare greifen und einen virtuellen LINUX-Server aufsetzen.
    Hier also meine Vorgehensweise:

    1. VMWare Server kostenlos hier runterladen und installieren

    2. Eine VM mit einem Minimal-Linux aufsetzen (kein Desktop, kein X, kein sonstiger Schnickschnack). Das Netzwerk der VM habe ich auf "default bridged" gestellt.

    3. Auf allen Rechnern (können beliebig viele physikalische Kisten oder VMs sein) ICECREAM installieren. Für Gentoo sieht das so aus (für andere Distris bitte googlen):

    a) emergen von maskiertem Package für ICECREAM zulassen

    Code
    echo "sys-devel/icecream ~x86" >> /etc/portage/package.keywordsw

    b) ICECREAM installieren

    Code
    emerge -av sys-devel/icecream

    c) /etc/make.conf anpassen
    Anzahl der Prozessoren im Cluster + 1 setzen (=N)

    Code
    MAKEOPTS="-jN"


    portage soll ICECREAM nutzen

    Code
    PREROOTPATH="/usr/lib/icecc/bin"

    d) /etc/profile anpassen
    make soll ICECREAM nutzen

    Code
    PATH="/usr/lib/icecc/bin:${PATH}"

    e) /etc/conf.d/icecream anpassen
    Auf dem Server (es darf nur einen geben!):

    Code
    ICECREAM_RUN_SCHEDULER="yes"


    Auf allen Clients:

    Code
    ICECREAM_RUN_SCHEDULER="no"


    Anzahl der Prozessoren im Cluster + 1 setzen (=N), siehe oben

    Code
    ICECREAM_MAX_JOBS="N"


    Ich musste bei mir noch die IP des ICECREAM-Servers/Schedulers eintragen, da das Broadcasting scheinbar nicht funktioniert hat:

    Code
    ICECREAM_SCHEDULER_HOST="192.168.1.99"

    4. So jetzt noch den ICECREAM-Dienst auf allen Rechnern, inkl. VDR starten

    Code
    /etc/init.d/icecream start


    und ggf. so einstellen, dass der Dienst beim Hochfahren gestartet wird:

    Code
    rc-update add icecream default

    5. make oder emerge starten und sich freuen, wie schnell das geht. :wow
    Ein Kernel make dauert bei mir nur noch ca. 25% der Zeit, da die meiste Arbeit auf meinem DualCore Desktop (innerhalb der VM) verrichtet wird.
    Das schöne an ICECREAM (im Unterschied zu distcc) ist, dass der Server die Last dynamisch verteilt, d.h. die schnellen Rechner bekommen mehr Compile-Jobs.

    Schöne Grüße
    Thomas

    HW: Soltek QBIC SL-B8E-F2, 2.4 GHz Celeron gekühlt mit Cooltek CT8C-48 CU, TT 1.5 ff, 512 MB RAM, 160 GB Samsung SV1604N, DVD AOPEN AAP, FB All-In-One URC7030
    SW: Gentoo mit Kernel 2.6.17-r5 und separaten DVB-Treibern (v4l-dvb-db2b113ea431), VDR 1.4.4 + Big Patch, nvram-wakeup mit reboot via lilo, noad
    PLUGINS: diverse

  • seeeeeehr geil danke hab eindlich die tt 3200er in der s100 drinn und das compilieren war so ätzend lahm

    bis ich da die ehd und den vdr zum laufen bringen würde das würde dauern
    mit der lösung sollte das schneller gehen

    thanks

    gruß

    Signatur

    Server: ASRock Q1900M + 4GB RAM + cineS2 6.5 + Debian 8 + vdr 2.x , epgsearch, live, streamdev
    Client: Macbook Pro Retina 2015 + 16GB ram 512GB ssd  OSX 10.11.1)
    File-Server/client: GA-Z77-DS3H (Ozmosis 1669 ) + I3 2105 + 16GB RAM NVGF 650GTX 1GB, 250 GB-HD (sys)+ 44TB Storage OSX 10.11.6 VLC 3.x beta , Remote Buddy, PS3-FB
    2x Cubieboard2: 16GB microSD, debian mit VDR 2.0.6 + epgsearch, live(osdpatch), streamdev(0.6), soft-hd-device
    Ausgabe:
    Acer H7530D, T.amp Proline1300, 2x K&H sms 54T + horn sub - Eigenbau

    Edited once, last by Moorviper (August 29, 2008 at 9:10 PM).

  • Morgen

    Mal eine Frage, kann man irgend wie, die Priortät erhöhen?

    Meine, auf der VDR Kiste (icream client / 863 MHz) dauert das Kompilieren länger, als auf dem Server ( 5200 MHz)?

    Es geht schon deutlich "flotter", icemon zeigt auch an das sich was tut, aber wie gesagt auf dem Server selbst, geht es mindestens doppelt so fix?

    Auf dem Server, wie folgt gestartet (SuSE):

    Code
    /usr/sbin/iceccd -d -l /var/log/iceccd --nice 5 -u icecream -b /var/cache/icecream -m 1

    LG Ronny

  • Na das nenn ich mal ne geniale Idee! Compilieren alla SET@home, nur lokal! :welle

    Meine Hardware

    Server: Debian 9 OMV eTobi (VDR 2.4.1)

    Chenbro SR30169; picoPSU-120

    Asrock J3160-itx; Intel J3160; 8192 MB DDR3L 1333; Intel HD Graphics 400; 3x Hauppauge WinTV-dualHD (DVB-C); Compex WLE600VX (QCA9882)

    Drevo X1 60GB; Western Digital 4x 3TB (WD30EFRX) RAID 5; 3TB (WD30EZRX); 2,5TB (WD25EZRX); Seagate 8TB (ST8000AS0002); 1TB (ST3100340NS)

    Clients: MLD 5.4 (VDR 2.4.6)

    Raspberry PI 2B; ARM Cortex A7; 1024 MB SDRAM

    SanDisk 16GB microSDHC UHS-1 A1

    Eltern: MLD 5.1 (VDR 2.2.0)

    Medion Digitainer

    Gigabyte GA-8I945GZME-RH (Intel 945GZ Express/ICH7); Intel Pentium E2160; 1024 MB DDR2 800; Nvidia Gforce GT730 (GK208); 2x Technisat SkyStar 2 TV 2.6D

    Western Digital 1TB (WD10EACS); Atric IR-Einschalter rev. 4

  • Quote

    Original von ilmusy
    was passiert wenn man kompilieren möchte während der Server ausgeschaltet ist? Geht das dann noch?

    Ja, aber ebend nur mit der lokalen Leistung.

    LG Ronny

  • Klasse!

    So etwas sollte es viel oefters geben- nicht nur fuer Compilierorgien, sondern auch fuer andere Anwendungen.

    Es haben doch fast alle hier mehrer Rechner mit mehreren CPUs rumstehen. Warum sollten wir uns einen neuen Desktop kaufen, wenn die Rechenleistung auf den anderne Kisten in der Summe vorhandne ist?

    Naja, dank Multi-Core CPUs haelt ja nun endlich in der Programmierung der Anwendugen Parallelisierung Einzug.

    Und der naechste Schritt zur nicht-lokalen Parellelisierung ist dann nicht mehr weit.

    Gespannt wartend, Christian

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Morgen

    Glaube es liegt an dem hier ....

    Code
    /usr/sbin/iceccd -d -l /var/log/iceccd --nice 5 -u icecream -b /var/cache/icecream -m 1
                                           ^^^^^^^^

    Habe mal shell> cat /proc/cpuinfo ausgeführt, beide Kerne liefen auf 1000 MHz, dann mal auf KPowersave, das CPU Frequenzverhalten von Dynamisch auf Leistung gesetzt, siehe da beide Töppe auf 2600 MHz.

    Kompilieren, geht nun deutlich flotter, auf den Client.

    Für SuSE:

    Code
    shell> yast2 sysconfig set ICECREAM_NICE_LEVEL=19
    shell> rcicecream restart

    LG Ronny

  • wenn ich 64Bit und 32Bit Linux'e habe, bekomm ich da Probleme?
    Was ist da zu beachten?

    Auf der Icecream Seite steht was, dass ich die Optimierungen (CFlags für den Prozzi) weg lassen soll...

    Was ich eben nicht unbedingt möchte - sonst könnte ich gleich zu Binär-Distros wechseln...

    Hat da jmd. Erfahrungen?

  • Hallo,
    ich versuche es, auf Suse 11.1 (64-bit AMD Athlon 64 X2 Dual Core 4800+ @ 2.50GHz) für Gentoo (i686 Celeron (Coppermine) @ 0.73GHz) zu übersetzen.

    Dazu habe ich die Entwicklungsumgebung (compiler environment) von Gentoo auf Suse geladen.

    Unter Gentoo

    Code
    icecc --build-native


    Unter Suse

    Code
    export ICECC_VERSION=i686-4.1.2.tar.gz

    In der Firewall von Suse habe ich noch die Ports freigegeben.
    http://en.opensuse.org/Icecream

    Wie es aussieht wird unter Gentoo (Installation nach Anleitung von oben) problemlos übersetzt.
    Im Icecream Monitor werden mir die Zwei Plattformen mit eingehenden und ausgehenden Jobs angezeigt.

    Quote

    Hosts: Plattform i686
    Outgoing jobs: Server Suserechner

    Quote

    Hosts: Plattform x86_64
    Incomming jobs: Client Gentoorechner

    Kann jemand mit Erfahrungen sagen, ob der Ablauf des Übersetzen so stimmt?

    bis dann,
    Nando

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Hallo,
    was hat es mit sys-devel/crossdev auf sich? Es ist bei mir nicht installiert.
    http://www.gentoo-wiki.info/HOWTO_Setup_An…cross-compiling

    Manchmal steht auch im Icecream Monitor, im Host des Activy, bei State nur LocalOnly und dann Finished (beim Übersetzen).
    Im Host des Scheduler (Suse 11.1) taucht nichts auf.
    Gibt Inecream nur größere Jobs weiter?

    Im Icecream Monitor tauch dann irgendwann wieder Client und Host auf. Im Host des Activy -> Client und im Host des Suse Rechners -> Server. Im System Monitor des Suse Rechners ist der Task cc1 zu finden.

    bis dann,
    Nando

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Habe auf dem Client, die .bashrc erweitert, aber keinen Plan, wie das bei Gentoo läuft.

    Code
    shell> cat ~/.bashrc
    export PATH=/opt/icecream/bin:$PATH:/usr/local/bin
    alias make="make -j2"

    Also, ohne '-j2' sah ich fast ausschließlich 'State nur LocalOnly'.

    ---------------

    Später ...

    Das Howto ganz oben ist ja für Gentoo, somit wird es wohl nicht an -j2 liegen,

    LG Ronny

    Edited once, last by ronnykornexl (February 21, 2009 at 4:37 PM).

  • Hallo Ronny,
    hier ist eigentlich gut beschrieben, wie es einzurichten ist.
    http://de.gentoo-wiki.com/wiki/Emerge_be…n#Konfiguration

    Allerdings ist bei mir kein Unterschied in der Geschwindigkeit zu bemerken (gerade v4l-dvb-hg übersetzt).
    Icecream-Daemon auf Activy läuft -> zirka 21Minuten
    - Server-Client-Anzeigen im Icecream-Monitor
    - cc1 im System-Monitor des Servers
    - ~20 % CPU-Nutzung des Server

    Icecream-Daemon auf Activy gestoppt -> zirka 20Minuten
    - keine Server-Client-Anzeigen im Icecream-Monitor
    - ~15 % CPU-Nutzung des Server

    (ICECREAM_NICE_LEVEL="5", MAKEOPTS="-j3")

    [edit]
    Ist ccache dafür verantwortlich, dass es beim 2.Versuch ebenso schnell ablief?
    MAKEOPTS="-j3" auskommentiert aus /etc/make.conf bringt eine Dauer von ~50 Minuten ?(
    Was mich nur wundert, ist die niedrige CPU-Last des Servers.
    [edit]

    bis dann,
    Nando

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

    Edited 2 times, last by netz (February 21, 2009 at 6:59 PM).

  • Ich hatte es früher schon mal verwendet und hatte damals ein paar Probleme wenn es unterschiedliche gcc und libc Versionen installiert waren.
    Ist das heute kein Problem mehr ?

    Meine VDRs

    VDR Server: Ubuntu Lucid Lynx mit 6TB im RAID und quadtuner DVB-S2
    VDR Client1: Raspbian @ Raspberry Pi 2
    VDR Client2: Ubuntu @ Laptop
    VDR Client3: MDL @ Raspberry Pi
    VDR Client4: zen2vdr @ SMT-7020s (wird zZ nicht benutzt)
    VDR Client5: Android @ HP Touchpad mit VDR Manager App


    [Blocked Image: http://decembersoul.dd-dns.de/~patrick/signatur_vdr.php]

  • Das gleiche, aus dem Source-Verzeichnis, auf dem Server übersetzt, dauert ~7 Minuten. :(
    Kann man das optimieren?

    decembersoul
    Fehlermeldungen sind mir nicht aufgefallenm, nur etwas wie diese Zeile (Test von eben).

    Code
    ...
     * Preparing dvb module make -j3 HOSTCC=i686-pc-linux-gnu-gcc CROSS_COMPILE=i686-pc-linux-gnu- LDFLAGS= KDIR=/usr/src/linux default scripts/make_makefile.pl
    ...

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Weiß, nicht mit den unterschiedlichen gcc-versionen, liegen hier zbs. zu nah bei einnander.

    Code
    server: gcc (SUSE Linux) 4.3.2 [gcc-4_3-branch revision 141291]
    client: gcc (GCC) 4.3.3 (CRUX)

    Bei mir lohnt sich das ganze auf jeden Fall.

    Code
    server: 5200 MHz
    client: 863 MHz (vdr)

    Treiber (dvb) verteilt übersetzt:

    Code
    real    6m37.987s
    user    3m45.382s
    sys     1m38.322s

    Hier mal ohne:

    Code
    real    20m18.801s
    user    15m23.618s
    sys     3m43.194s

    Sind doch ein paar Minuten, unterschiedt.

    Wollte mir eigentlich auch schon einen neuen Unterbau für vdr zulegen, da die Distri (Crux) Source basiert ist (bis auf die Basis).

    Dank Icecream, hat das nun noch reichlich Zeit

    LG Ronny

    Edited once, last by ronnykornexl (February 21, 2009 at 8:37 PM).

  • Manuell mit dem gleichen Source-Verzeichnis auf dem Activy.
    - Activy Client Jobs 1
    - Suse Server Jobs 10

    make CC=icecc -j10
    zirka 13 Minuten

    Naja, vllt. braucht man eine Gigabit-Leitung. Ich habe nur 100-MBit. ;)

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

    Edited once, last by netz (February 21, 2009 at 8:43 PM).

  • Quote

    Original von netz
    Manuell mit dem gleichen Source-Verzeichnis auf dem Activy.
    - Activy Client Jobs 1
    - Suse Server Jobs 10

    make CC=icecc -j10
    zirka 13 Minuten

    Naja, vllt. braucht man eine Gigabit-Leitung. Ich habe nur 100-MBit. ;)

    Hier auch nur 100 MBit LAN.

    LG Ronny

  • :lol2

    Dachte immer mit -j<N> waren die CPUs gemeint, dabei geht es im die Jobs.

    Jetzt mal auf 10 gesetzt, geht noch eine Ecke fixer (dvb komplett):

    Code
    real    4m34.671s
    user    3m30.069s
    sys     0m58.360s

    LG Ronny

  • Das geht jetzt aber in die falsche Richtung.
    Bei mir sollte es schneller werden, nicht bei dir. ;)

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF

    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!