"komplett" im RAM laufen lassen,
Guten Tag MailingListe Opensuse, Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ? Ich möchte verhindern, das sich die Anwedung der Festplatte bedient. diese ist mit 60 Mb/s recht langsam und ich glaube ich der flaschenhas hier. -- Mit freundlichen Grüßen Sebastian Gödecke mailto:simpsonetti@googlemail.com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Sebastian! On Do, 03 Sep 2009, Sebastian Gödecke wrote:
Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ?
Nur ein Gedanke: von einer Ramdisk starten?
Ich möchte verhindern, das sich die Anwedung der Festplatte bedient. diese ist mit 60 Mb/s recht langsam und ich glaube ich der flaschenhas hier.
Das ist doch gar nicht so schlecht? Das hört sich nicht unbedingt nach Flaschenhals an… Mit freundlichen Grüßen Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On 03.09.2009, Sebastian Gödecke wrote:
Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ?
In dem du den Quellcode entsprechend umschreibst. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Thu 03 Sep 2009, Sebastian Gödecke wrote:
Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ? Ich möchte verhindern, das sich die Anwedung der Festplatte bedient. diese ist mit 60 Mb/s recht langsam und ich glaube ich der flaschenhas hier.
Deine Frage ist ein wenig unklar, insbesondere der Begriff "Anwendung". Wenn Du als Anwendung alles definierst, was der Computer macht, dann bau einfach die Platte aus. Alles, was er dann tun kann, muß aus dem RAM kommen. Zugegeben, das Starten der Anwendung wird ein bissel schwierig. Man könnte das aber zur Not über's Netz lösen. Nun ein wenig erster, Du könntest im initrd ein Script aufrufen, das die Platte komplett in einen RAM-Disk kopiert. Diesen benutzt Du dann als Root-Filesystem. Beim Shutdown müßtest Du dann das Ganze wieder zurück schreiben. Zwischendurch läuft es aber nur im RAM, vorausgesetzt Du hast genug. Noch ein wenig erster, schalt erstmal allen Swapspace aus. Dann modifizierst Du Deine Anwendung, daß sie zu geeigneten Zeitpunkten mlockall aufruft. U.U. reicht es das einmal in einer mit LD_PRELOAD geladenen Library zu machen. Mit diesem Syscall kannst Du dem Kernel nämlich sagen, er soll den gesamten Prozeß in den RAM laden und mit einem Parameter auch noch, daß er alle weiteren RAM Anfragen auch so behandeln soll. Insgesamt ist das aber nur bei Programmen zu empfehlen, die wenig bis gar keine shared libs benutzen. Die glibc ist nämlich recht groß und die meisten Funktionen werden bei weitem nicht von jedem Programm benutzt. Du würdest also einen großen Batzen RAM verschenken. Wenn Du nur zu einem Großteil vermeiden willst, daß ein Prozeß auf die Platte zugreift, dann steck richtig viel RAM rein (so 50-100GB) und kopier einfach die Dateien, die Du brauchst nach /dev/null bevor Du Deine Anwendung startest. Dadurch muß der Kernel das Zeug nämlich von der Platte lesen und es landet im Cache (RAM). Wenn Du genug RAM hast, vergißt der Kernel diesen Cache kaum wieder. Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Guten Tag Torsten Foertsch, am Donnerstag, 3. September 2009 um 20:53 schrieben Sie:
On Thu 03 Sep 2009, Sebastian Gödecke wrote:
Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ? Ich möchte verhindern, das sich die Anwedung der Festplatte bedient. diese ist mit 60 Mb/s recht langsam und ich glaube ich der flaschenhas hier.
Deine Frage ist ein wenig unklar, insbesondere der Begriff "Anwendung".
Wenn Du nur zu einem Großteil vermeiden willst, daß ein Prozeß auf die Platte zugreift, dann steck richtig viel RAM rein (so 50-100GB) und kopier einfach die Dateien, die Du brauchst nach /dev/null bevor Du Deine Anwendung startest. Dadurch muß der Kernel das Zeug nämlich von der Platte lesen und es landet im Cache (RAM). Wenn Du genug RAM hast, vergißt der Kernel diesen Cache kaum wieder.
Torsten
Okay, ich konkretisiere das mal: also es handelt sich da um ein Privatprojekt. "wir" betreiben einen gameserver. Dieser ist bei hetzner gehostet und hat als grobe kenndaten : AMD Athlon 64 X2 5600+ Dual Core Arbeitsspeicher 4 GB DDR2 Festplatten 2 x 400 GB SATA II Als aktuelles OS ist das OS11.1 drauf in einer Minimalinstallation, wie es hetzner anbietet. Dort läuft nun ein etwas älteres spiel drauf, was so im schnitt ca 40% CPU Auslastung verursacht und einen RAM verbrauch von 600 MB hat. Die grundlast des system beträgt grob 350 Mb. (gemessen mit htop) Läuft der Gameserver alleine ist es kein problem. starte ich aber unter einer anderen benutzerkennung und im anderen pfad noch mal ein spiel (das gleiche) und wenn er dann läuft, kommt es zu aussetzern. Dabei ist noch lange nicht die RAM marke von 1GB erreicht und die CPU-last beträgt dann so grob 60% (schwankend). Ein zugriff auf die Platte findet soweit ich weiß dann nicht statt, da die daten in den RAM geladen worden sind. erst beim mapchange lädt er nach. Um nun wie gesagt, auszuschliessen, das die HDd den engpass bildet, wollte ich den "pfad zur anwendung und deren kompletter inhalt" in den RAM laden. Mir ist es nämlich unbegreiflich, das die anwendung, die aus dem jahre 2002 stammt, auf einer recht dicken kiste, solche aussetzer verursacht. Ich dachte, das es ohne probleme möglich sein sollte, 2 von den gameservern laufen zu lassen. das scheint aber nur bedingt der fall. andere sachen habe ich shcon überprüft und versucht zu beheben: die cpu läuft immer mit volldampf, die HDD läuft auch mit UDMA6. Mehr fällt mir da nicht ein. Hat dazu noch jemand einen Tipp. -- Mit freundlichen Grüßen Sebastian Gödecke mailto:simpsonetti@googlemail.com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Fri 04 Sep 2009, Sebastian Gödecke wrote:
Ein zugriff auf die Platte findet soweit ich weiß dann nicht statt, da die daten in den RAM geladen worden sind. erst beim mapchange lädt er nach.
Schuldigung, daß ich Dein Spiel nicht kenne, aber was bedeutet "mapchange"? Holt er da eine neue Landkarte (=größere Datei) von der Platte?
Um nun wie gesagt, auszuschliessen, das die HDd den engpass bildet, wollte ich den "pfad zur anwendung und deren kompletter inhalt" in den RAM laden.
Wenn ja, dann lege diese doch einfach in einen RAM-Disk. Moderne Linuxe kennen das tmpfs Filesystem. Das ist dafür geeignet. Unter Suse ist bei mir /dev als tmpfs gemountet. Unter früheren Versionen auch mal /dev/shm. Du kannst also Deine Daten dorthin kopieren oder tmpfs nochmal woanders im Filesystem mounten. Bist Du sicher, daß die Aussetzer nicht vom Netz kommen? Torsten -- Need professional mod_perl support? Just hire me: torsten.foertsch@gmx.net -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Guten Tag Torsten Foertsch, am Freitag, 4. September 2009 um 10:43 schrieben Sie:
On Fri 04 Sep 2009, Sebastian Gödecke wrote:
Ein zugriff auf die Platte findet soweit ich weiß dann nicht statt, da die daten in den RAM geladen worden sind. erst beim mapchange lädt er nach.
Schuldigung, daß ich Dein Spiel nicht kenne, aber was bedeutet "mapchange"? Holt er da eine neue Landkarte (=größere Datei) von der Platte? Jepp, genau, da muss nachgeladen werden und die neue information befindet sich auf der HDD
Um nun wie gesagt, auszuschliessen, das die HDd den engpass bildet, wollte ich den "pfad zur anwendung und deren kompletter inhalt" in den RAM laden.
Wenn ja, dann lege diese doch einfach in einen RAM-Disk. Moderne Linuxe kennen das tmpfs Filesystem. Das ist dafür geeignet. Unter Suse ist bei mir /dev als tmpfs gemountet. Unter früheren Versionen auch mal /dev/shm. Du kannst also Deine Daten dorthin kopieren oder tmpfs nochmal woanders im Filesystem mounten.
AHHH, das ist doch mal ein Stichwort, "tmpfs" danach werde ich mal suchen.
Bist Du sicher, daß die Aussetzer nicht vom Netz kommen?
ich habe immer wieder mal das sowohl mit "pathping" unter windows XP, als auch mit MTR von OSS probiert und mir ist bei den tests (was ja KEINE langzeittests sind) kein sonderlich hoher packetlost aufgefallen. es kann aber auch sein, dass das problem an hetzner liegt. ausschliessen möchte ich das nicht.
Torsten
Sebastian -- Mit freundlichen Grüßen Sebastian Gödecke mailto:simpsonetti@googlemail.com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag 04 September 2009 10:43:33 schrieb Torsten Foertsch:
On Fri 04 Sep 2009, Sebastian Gödecke wrote:
Ein zugriff auf die Platte findet soweit ich weiß dann nicht statt, da die daten in den RAM geladen worden sind. erst beim mapchange lädt er nach.
Schuldigung, daß ich Dein Spiel nicht kenne, aber was bedeutet "mapchange"? Holt er da eine neue Landkarte (=größere Datei) von der Platte?
Für's Protokoll (und den Mehrwert) ein mapchange beschreibt hier wohl den Wechsel einer Spielkarte. Je nach Spiel sind die unterschiedlich groß, ich vermute einfach mal, dass es sich um einen First-Person-Shooter handelt und schätze mal, das die Datei nicht größer als 20MiB ist (u.U. muss sie aber erst entpackt und verarbeitet werden, was zu einem kurzzeitigen Peak in der Auslastung führen könnte - hast du das mal beobachtet Sebastian?). Grüße Michael
At Fri, 4 Sep 2009 10:24:07 +0200, Sebastian Gödecke wrote:
starte ich aber unter einer anderen benutzerkennung und im anderen pfad noch mal ein spiel (das gleiche) und wenn er dann läuft, kommt es zu aussetzern.
Du hast latency Probleme. Das kann zum einen am schlechten Programmierstil des Spieles liegen (unnoetig haeufige fsync, schlechtes memory management usw.), aber auch am System selbst. Das allererste, das ich pruefen wuerde ist, wie die Dateisysteme gemountet und formatiert sind, du kannst gerne mal die Ausgabe von "mount" posten, wenn du willst. Dann bitte auch gleich noch die Ausgabe von "uname -a" mitschicken. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Guten Tag Heinz Diehl, am Freitag, 4. September 2009 um 11:22 schrieben Sie:
At Fri, 4 Sep 2009 10:24:07 +0200, Sebastian Gödecke wrote:
starte ich aber unter einer anderen benutzerkennung und im anderen pfad noch mal ein spiel (das gleiche) und wenn er dann läuft, kommt es zu aussetzern.
Du hast latency Probleme. Das kann zum einen am schlechten Programmierstil des Spieles liegen (unnoetig haeufige fsync, schlechtes memory management usw.), aber auch am System selbst.
Das allererste, das ich pruefen wuerde ist, wie die Dateisysteme gemountet und formatiert sind, du kannst gerne mal die Ausgabe von "mount" posten, wenn du willst.
Dann bitte auch gleich noch die Ausgabe von "uname -a" mitschicken.
also das hier ist pathping: 5 --- 100/ 100 =100% 100/ 100 =100% dtag-gw.hetzner.de [193.159.226.2] das heißt, 100% verloren, kann ein temporäres problem sein. uname-a Linux openSUSE-111-64-minimal 2.6.27.25-0.1-default #1 SMP 2009-07-01 15:37:09 +0200 x86_64 x86_64 x86_64 GNU/Linux mount: /dev/sda2 on / type ext3 (rw) /proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) debugfs on /sys/kernel/debug type debugfs (rw) udev on /dev type tmpfs (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) /dev/sdb1 on /backup type ext3 (rw) /proc on /var/lib/ntp/proc type proc (ro) nun, da ich am schlechten programmierstil des spiels nichts ändern kann, kann ich nur versuchen, hier am server etwas zu verbessern. meine idee wäre es deshalb tmpfs zu nutzen. -- Mit freundlichen Grüßen Sebastian Gödecke mailto:simpsonetti@googlemail.com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
At Fri, 4 Sep 2009 11:35:59 +0200, Sebastian Gödecke wrote:
Linux openSUSE-111-64-minimal 2.6.27.25-0.1-default #1 SMP
Es wurde sehr viel sowohl an ext3/4 wie auch an der latency allgemein am Kernel ab 2.6.29.x gedreht. Ausgangspunkt war ein Ereignis, welches Linus Torvalds auf seinem Rechner hatte, als er eine Email schrieb waehrend gleichzeitig im Hintergrund "yum update" lief, und zu einer umfassenden Diskussion auf der lkml gefuehrt hatte. Lange Rede, kurzer Sinn: ich wuerde dir empfehlen, auf 2.6.30.5 upzudaten. Beim Update dann bitte gleich CONFIG_PREEMPT aktivieren. Danach hast du schon einen sehr guten Ausganspunkt.
mount: /dev/sda2 on / type ext3 (rw)
Die Standard Optionen der 11.1 also. Hier kannst du etwas abhelfen, indem du deine ext3 Partitionen mittels "noatime,data=writeback" mountest.
nun, da ich am schlechten programmierstil des spiels nichts ändern kann, kann ich nur versuchen, hier am server etwas zu verbessern. meine idee wäre es deshalb tmpfs zu nutzen.
Das Problem mit einer Ramdisk und aehnlichem ist, dass es nichts hilft, wenn das Programm entweder auslagert oder haeufig auf die Disk schreibt. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Sebastian Gödecke schrieb:
Guten Tag MailingListe Opensuse,
Hallo, folgende Frage: wie ist es möglich, das ich für eine Anwendung ALLES zugehörige zu der Anwendung in den RAM lade ? Ich möchte verhindern, das sich die Anwedung der Festplatte bedient. diese ist mit 60 Mb/s recht langsam und ich glaube ich der flaschenhas hier.
Moin Sebastian, Du kannst das ganze Betriebssystem im RAM laufen lassen. Ich kenn' mich in SuSE nicht so aus, aber boote mal ein Knoppix! Das lääst deine Festplatte ganz in Ruhe! Gruß, Boris -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
Boris
-
Christian Brabandt
-
Heinz Diehl
-
Michael Skiba
-
Sebastian Gödecke
-
Torsten Foertsch