Kernel Frage und Fast download (bzip2)

  • Hallo! :mrgreen:


    Ich habe schon unzählige GS Kernel auf Debian 4.0 kompiliert um die "1000FPS" bei Source zu "packen".
    Ich habe folgendes Kernel Setup verwendet:
    -High Resolution
    -1000 hz
    -dynamic Ticks off


    Ich schaffe aber immer nur ~ 980 FPS. :(
    Vor einiger Zeit habe ich von Kernel Patchs gehört, die die vollen 1000 FPS schaffen sollten:
    -Einmal der Hres Kernel Patch
    -und der cks patch.


    Welcher der beiden ist Besser und woher kriege ich die?
    Installieren müsste ja so gehen oder`?

    Code
    bzip2 -dc /usr/src/patch.bz2 | patch -p1 –dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1


    So nun zu meiner andreren eher komplexeren Frage.


    Ich möchte gerne Fastdownload auf meinem Public Server einrichten.
    Und außerdem möchte ich gerne maps und custom dateien mit bzip2 komprimieren lassen.
    -Lighttpd installiert
    -alle custom dateien in /htdocs/cstrike/ kopiert und in bzip2 komprimiert.
    Da ich freunden von mir per FTP zu dem Gameserververzeichnis zugang gewährt habe, müssen custom dateien aber auch automatisch verpackt ins /htdcos verzeichnis gelangen. So wie bei Teamplay Gameservern.


    Ich habe schon an "verknüpfungen" per ln gedacht, was auch funktioniert, dass der komplette z.B. maps ordner auch im htdocs ist vorhanden ist und somit alle daten per http geladen werden können. Nur liegt mir viel darann die daten möglichst klein zu halten, per bzip2.
    Habe nur DSl 2000 :roll:


    Wie kann ich das machen? :roll:


    Ich habe an Cronjobs gedacht...



    Mfg und danke für eure hilfe


    Basti

  • hi,


    wenn du den fastdl eh auf der gleichen Maschine hast, kannst du die clienten auch via ftp direkt laden lassen. dazu einfach als downloadurl


    sv_downloadurl "ftp://ftpuser:ftppasswort@serverip/pfad/zu/cstrike/"


    dann kannst du dir das kopieren schenken.

  • danke für deine antwort schlaubi!


    es geht sich ja nicht um das kopieren sondern um das verpacken in bzip2, welches automatisiert werden soll. :blink1:


    Ich meine auch gelesen zu haben, dass FD über ftp nicht geht, korrigiert mich wenn das nicht stimmt... :wink:

  • Also es geht, habs gerade nochmal probiert. Bei den restlichen Sachen kann ich Dir leider nicht helfen, da ist das Problem, dass Du ein script brauchst, welches ständig kontrolliert ob neue Dateien hinzugekommen sind und diese bei Bedarf dann packt. Das ist sicher nicht mit wenigen Handschlägen getan.

  • Ich hab gestern mal bisschen ausprobiert um ein Script zu schreiben, welches alte Dateien löscht, neue und geänderte Dateien komprimiert.


    Der einzige Nachteil ist, dass die unkomprimierte Version der Dateien 2 mal vorhanden ist. Einmal im Gameserver und einmal im Web. Das ist aber soweit egal, da immer zuerst die bz2-Dateien heruntergeladen werden:


    Bash
    #!/bin/bash
    copy_start=`date +%s`
    rsync -vru --exclude='*.bz2' --exclude='*.ztmp' --exclude='*.log' --delete /maps_gameserver/ /maps_web/
    copy_end=`date +%s`
    let cmin=($copy_end-$copy_start)/60+1
    find /maps_web/ -not -name *.txt -a -not -name *.ain -a -not -name *.vmt -a -not -name *.res -a -not -name *.log  -cmin -$cmin -type f -exec bzip2 -vfk9 '{}' \;


    Anfangs wird das Datum+Zeit im Unix-Format in die Variable copy_start geschrieben.
    Es wird mittels rsync ein abgleich gemacht. Die Option -u bewirkt, dass neuere Zieldateien ausgelassen werden. Ausgeschlossen vom Abgleich sind die Dateitypen bz2, ztmp und log. Gelöschte Quelldateien werden entfernt.
    Nach der Aktion wird das wieder Datum+Zeit im Unix-Format in die Variable copy_end geschrieben.
    Danach wird berechnet wie viele Minuten unterschied zwischen den beiden Variablen sind + eine Minute.
    Dann wird nach Dateien gesucht, die innerhalb dieses Zeitraums eine Statusänderung hatten. Von der Suche werden die Dateitypen txt, ain, und res Ausgeschlossen. Durch -exec bzip2 werden die Dateien komprimiert (-v = Verbose, k = alte Dateien beibehalten, f = vorhandene komprimierte Dateien überschreiben).


    Das einzige was das script noch nicht macht, ist es bz2-Dateien zu löschen, von denen keine unkomprimierte Kopie mehr vorhanden ist.
    Das ließe sich mit einer for Schleife einfach erledigen. Ich suche momentan aber noch nach einer schnelleren Lösung.


    Das Script kannst du ja mal testen. Später, wenn es komplett ist, kann es ins Startscript der Server so eingebaut werden, dass es nach einem Neustart des Server ausgeführt wird (kein -autoupdate im Startbefehl).


    EDIT: Hier noch der Teil des Codes, der die alten bz2 Dateien löscht.



    Der Hack ist für Pfade und Dateien, die Leerzeichen enthalten.

  • Danke Dead_eye!


    Das war genau das was ich gesucht habe! :mrgreen:


    Aber ich habe auch noch ein anderes Programm gefunden, dass diese Aufgabe übernimmt.
    Ich werde testen, welches besser ist. :D


    Danke für deine Mühe. :!:


    Ich werde nach umfangreichen Tests entscheiden welche Lösung besser ist. 8)


    PS: Das Programm heißt SourceRSC



    mfg B.

  • SourceRSC beendet sich ja nachdem er die Daten komprimiert hat oder garnichts gemacht hat.


    Wie kann ich es irgendwie machen, dass er nach jedem map-restart bzw mapchange die daten prüft?
    Weil auch wärhend des Betriebs neue Maps dazu kommen könnten.


    Oder doch per Cronjob ~ alle 5 min. :mrgreen:



    Mfg Basti

  • Zitat

    SourceRSC beendet sich ja nachdem er die Daten komprimiert hat oder garnichts gemacht hat.


    Jo, normales Verhalten.



    Zitat

    Wie kann ich es irgendwie machen, dass er nach jedem map-restart bzw mapchange die daten prüft?


    Nein, wenn du es sicher haben willst.
    Ja, wenn du auf Experimente stehst.
    Es gibt ein Plugin, mit dem du ganz normal Befehle im System ausführen kannst: http://forums.mattie.info/cs/forums/viewtopic.php?t=7179
    Ich weiß allerdings nicht ob es auch wirklich lauffähig ist. Ich glaube das ist der Alptraum eines jeden GameserverHosters.


    autoexec.cfg

    Code
    system_register blubb123 //Befehl registrieren


    server.cfg

    Code
    blubb123 "/home/gameserver/SourceRSC/linux-sourcersc.sh //Shellscript ausfuehren


    linux-sourcersc.sh im Verzeichnis von SourceRSC:

    Code
    cd /home/gameserver/SourceRSC/
    /usr/bin/mono SourceRSC.exe /ini:deine.ini


    Ich hab es selber nicht getestet, aber es müsste so nach jedem Mapchange SourceRSC gestartet werden. Mir persönlich würde es auf den Wecker gehen, da die Dateien nach dem Mapchange eh noch nicht heruntergeladen werden können, weil sie ja erst nach dem Mapchange durch SourceRSC hochgeladen würden. D.h. du dürftest nie zur gerade erst frisch hochgeladenen Map wechseln.


    Zitat

    Oder doch per Cronjob ~ alle 5 min.


    Jo, ginge auch.


    Viel interessanter wäre es einfach ein Startscript zu nutzen. Bei jedem restart würde alles aktualisiert werden inkl. Steamupdate (kann ggf. auch aus dem Code rausgenommen werden).
    An der Stelle deines Startscripts, wo du den Screen für deinen Server erstellst, springst du ein.


    Code vorher:

    Code
    screen -mdS server1 srcds_run -game cstrike -maxplayers 12 -ip xxxxx -port xxxxx -autoupdate


    Code nachher (-autoupdate entfernen):

    Code
    screen -mdS server1 srcds_wrapper -game cstrike -maxplayers 12 -ip xxxxx -port xxxxx


    Script srcds_wrapper im gleichen Verzeichnis wie srcds_run


    Der Schalter -norestart bewirkt, dass dein Server bei einem Crash nicht neugestartet wird. D.h. selbst nach einem Crash würde der Server aktualisiert werden inkl. Fastdl. Der Befehl "rcon quit" würde dann automatisch den Server beenden und das Script srcds_wrapper würde von vorne anfangen (Steamupdate, Fastdl, Serverstart).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!