Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Fragen, Anregungen oder Tipps und Tricks? Hier ist der erste Anlaufpunkt.
Nicht sicher, wo ein Thema hingehört? Hier hinein - wir kümmern uns! :)

Moderator: Forum Moderatoren

Forumsregeln
TM-Startforum - "offen für alle Themen".
Beiträge, die in einen anderen Bereich passen, werden bei Bedarf verschoben.
Antworten
Benutzeravatar
Thomas
Beiträge: 720
Registriert: Dienstag 27. Februar 2007, 09:24
18
Hat sich bedankt: 45 mal
Hat Dank erhalten: 66 mal
Kontaktdaten:

Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Thomas »

Liebe Mitstreiter,

ich habe einmal intensiv das Verhalten des FastObjects Datenbankservers von TM in Verbindung mit dem /cachepraxisdb untersucht, speziell im Hinblick auf Nebenwirkungen oder Unverträglichkeiten, auch besonders bei knappem Arbeitsspeicher bzw. sehr großen Praxisdatenbanken. Bei dieser Gelegenheit habe ich auch die Funktion von TM unter 64-Bit Windows angetestet (unter Windows 2008 Server). Das folgende beschreibe ich ausschließlich im Hinblick auf den Einsatz von TM am Server und gehe dabei auf 32-Bit Betriebssysteme (getestet mit Windows XP) und 64-Bit Betriebssystemen (wie gesagt, Windows 2008 Server) ein. Die Optimierung von TM als Client ist eine andere Sache und nicht Bestandteil dieses Aufsatzes.

Grundsätzliches

TM wie auch der FastObjects-Datenbankserver sind 32-Bit Anwendungen, d.h. sie bekommen von Windows üblicherweise nur maximal 2 GB als Programm-Speicher zugewiesen. (Man kann das mit Windows-Tuning-Parametern auf 3 GB erhöhen, ob das sinnvoll ist, bezweifle ich aus Gründen der Stabilität erst einmal. Für diesen Aufsatz, und auch in der Praxis, lasse ich es also.)

Unter einem 64-Bit Windows lief TurboMed offenbar einwandfrei, allerdings arbeitete ich nur an einem Testsystem (Windows 2008 Server) und habe deshalb nicht intensiv alle Funktionen ausprobiert, wie man es an einem Produktivrechner wohl tun würde. Es hat jedoch ohne sichtbare Probleme "gezuckt". Allerdings konnte der Datenbankserver das bekannte F-Symbol nicht im System-Tray anzeigen, wenn er als Dienst eingerichtet war. Das lag vermutlich an der geänderten Arbeitsweise der Konsolen unter Windows 2008 Server. War jedoch nur kosmetisch - der Dienst lief dennoch.

Caching unter Windows

Das folgende ist vereinfacht dargestellt. Die reale Arbeitsweise ist naturgemäß recht komplex und in vielen, seeehr vielen technischen Dokumenten dargestellt. Ich habe vieles davon gelesen und fasse es natürlich nur knapp zusammen. Bitte also keine Aufschreie, wenn das eine oder andere stark komprimiert wurde - für den Einsatz unter TM (am Server) unterschlage ich jedoch nichts essentielles.

Windows nutzt den Arbeitsspeicher, der nicht den Programmen zugewiesen wurde, als Datei-Cache und nennt diesen System Cache. (Wichtig, diesen Begriff gut merken!) Dabei legt es Dateiteile, die von der Festplatte abgerufen wurden, im Speicher ab. Fragt ein Programm dann diesen Dateiteil erneut ab, so bedient Windows die Anfrage aus dem System Cache, also direkt aus RAM, und muss nicht auf die Festplatte zugreifen. Dadurch entstehen massive Geschwindigkeitsvorteile. (Ab hier verwende ich vereinfacht Cache für den System Cache.)

Windows nutzt dabei natürlich viele clevere Mechanismen, um den Cache effizient zu nutzen. Ein paar einfache Grundregeln sind jedoch:
  • Alterung: Wenn nicht mehr genügend Arbeitsspeicher frei ist, um den Cache zu vergrößern, dann wirf die ältesten Daten raus um Platz für die neuesten Daten zu machen.

    Daten, die erneut angefragt und aus dem Cache bedient werden konnten, werden wieder als "neu" markiert und rutschen dann wieder an eine bessere Stelle in der Alterungsliste.

    Nutze soviel Speicher wie möglich für den Cache! Unter einem 64-Bit Windows kann das praktisch der gesamte physikalische Speicher sein, also etliche Gigabyte. Unter 32-Bit Windows ist das naturgemäß eingeschränkt, meist maximal 2 GB. (Man sollte jedoch – wie unten beschrieben – das System für die Cache-Nutzung in den Systemeigenschaften konfigurieren.)

    Nutze den Cache nur zum Lesen - Schreibzugriffe werden immer direkt zur Platte durchgereicht! (Das kann man beeinflussen, ist aber kritisch, denn bei einem Stromausfall kann die Datenbank beschädigt werden und Daten verlieren.) Was aber einmal auf die Platte geschrieben wurde, landet auch gleich im Cache - werden die Daten dann erneut gelesen, braucht man wieder keinen Festplattenzugriff.

    Der Cache ist für alle laufenden Programme da und nicht für ein spezielles reserviert. Hier gilt Gleichberechtigung!
Hierbei ist es wichtig, dass Windows auch den Hauptteil des Arbeitsspeichers als Cache nutzen darf. Die Windows Server sind standardmäßig so eingestellt, Windows XP ist da zunächst konservativer und überlässt das Feld erst einmal den Programmen und nimmt sich nur den ungenutzten Rest als System-Cache. Hier ist es wichtig, auch XP auf intensive Cache-Nutzung zu trimmen. Gehen Sie dazu in die Systemeigenschaften (Systemsteuerung – System), Erweitert, Systemleistung einstellen, Erweitert, Speichernutzung „Systemcache“ auswählen.

Aus dem ganzen ergibt sich folgende Kette von logischen Konsequenzen:
  • Damit TurboMed also schnell laufen kann, soll es möglichst wenig auf die sehr langsame Festplatte zugreifen müssen

    Also soll möglichst die ganze Datenbank im Cache sein und dort auch möglichst immer bleiben(!)

    Da andere Programme auch den Cache nutzen (bzw. Windows den Cache auch für die Dateizugriffe der anderen Programme nutzt) sollte man genug Arbeitsspeicher als Cache für alle Datenzugriffe aller Programme haben - im Idealfall also soviel Arbeitsspeicher wie Festplattenspeicher.

    Da man das wohl nie bekommen wird 8) sollte man
    a) so viel Arbeitsspeicher wie möglich als Cache im System haben und
    b) so wenig wie möglich andere Programme laufen lassen, die sich mit dem TM-Datenbankserver den Cache teilen müssen
Was ist der Backup-Mode beim Datenbankserver?

Das habe ich nicht en detail evaluiert, gehe aber von folgender Arbeitsweise aus, wie sie bei Datenbankservern allgemein praktiziert wird: Einige Systemrelevante Daten (z.B. Indexdaten, manchmal auch Benutzerdaten, also echter Dateninhalt) werden zunächst im Arbeitsspeicher gehalten, bevor sie auf die Platte geschrieben werden. Das spart Zeit, weil das Schreiben einige Sekunden später gemacht werden kann, wenn der Rechner wieder nichts mehr zu tun hat. Wenn man jedoch die Datenbanken sichern möchte, sollten doch schon alle relevanten Daten in der physikalischen Datei sein, sonst sichert man nur halbe Sachen. Außerdem sollte die Datenbank ruhiggestellt sein, es sollte also nicht darin geschrieben werden. Mit dem Starten des Backup-Modes wird FastObjects mitgeteilt, dass er bitteschön einmal alles wegschreiben soll, was noch nicht geschrieben wurde. Bis zum Ende des Backup-Modes schreibt er dann in sogenannte Logdateien, die sich bei TM im Verzeichnis PraxisDB\recovery befinden. Gelesen wird nach wie vor direkt aus den Dateien objects.dat und objects.idx. Beim Ende des Backup-Modes werden dann alle Schreibvorgänge, die der Datenbankserver sich in den Logdateien "gemerkt" hat, in die Datenbank integriert. Während der Sicherung sind die Datenbanken also schön konsistent und weil alle Programme (Sicherungsprogramm und der Datenbankserver) nur lesend darauf zugreifen, gibt es auch keine Konflikte.

(Im Folgenden spreche ich nur noch von Datenbank und meine dabei natürlich die beiden Dateien objects.dat und objects.idx, die zusammen die TM-Praxisdatenbank ausmachen.)

Was genau macht denn nun TMAdmin /cachepraxisdb?

Verblüffend wenig: TMAdmin bringt den Datenbankserver kurz in den Backup-Modus, liest dann einfach einmal die kompletten Datenbankdateien von vorne bis hinten durch und beendet den Back-Modus wieder. Das ist ein ebenso simpler wie cleverer Ansatz, das System zu beschleunigen. Denn dadurch wird Windows gezwungen, sich einmal mit dem kompletten Inhalt der beiden Dateien zu beschäftigen, was zur Folge hat, dass die Daten komplett in den System-Cache wandern. Das kann man gut beobachten: Starten Sie den Task-Manager und gehen Sie auf den Reiter Systemleistung (XP und Windows 2003 Server) bzw. Leistung (Windows 2008 und Vista). Dort finden Sie im Block "Physikalischer Speicher" den Wert "Systemcache" (XP und Windows 2003) bzw. "Im Cache" (Windows 2008 und Vista). Bei einem frisch gestarteten System ohne nennenswerte laufende Programme (also auf dem Server idealerweise nur Windows und der FastObjects Datenbankserver) ist dieser Wert recht niedrig. Rufen Sie nun TMAdmin /cachepraxisdb auf und beobachten Sie, wie der Wert schnell ansteigt. Am Ende ist er recht genau um die Summe der Größen der beiden Datenbankdateien objects.dat und objects.idx angewachsen - Windows hat nun beide Daten - die komplette Praxisdatenbank - im Arbeitsspeicher.

Probieren Sie dann doch einmal folgendes: Starten Sie TMAdmin /cachepraxisdb einfach gleich noch einmal. Das wird dann sehr viel schneller gehen, als beim ersten Durchlauf, denn Windows hat die Datenbank ja schon im Speicher und bedient TMAdmin's einfaches Durchlesen der Daten direkt aus dem Cache! (Wenn es nicht wirklich schneller ist, dann ist Ihre Datenbank entweder sehr klein, oder Sie haben nicht genügend Arbeitsspeicher für den Cache.)

Dieser Ansatz ist deshalb so clever, weil sich der Datenbankserver selbst nicht um das Cachen im großen Stil kümmern muss. Das könnte er als 32-Bit Applikation auch gar nicht, denn selbst unter einem 64-Bit Windows bekommt er nur bzw. kann er nur mit 2 GB Speicher umgehen! Wenn die Praxisdatenbank größer als 2 GB ist (objects.dat und objects.idx zusammengerechnet) käme FastObjects nicht weiter und könnte nicht alle Daten cachen. Windows hat diese Limitierung nicht und kann den ganzen verfügbaren Arbeitsspeicher effizient nutzen.

Risiken von /cachepraxisdb

Risiken und Nebenwirkungen hat das meiner Ansicht nach gar keine! Gehen wir einmal davon aus, dass Windows den Cache gut im Griff hat (das ist schließlich eine der Hauptaufgaben des Betriebssystems), dann passiert hier nichts Außergewöhnliches. Es kann damit auch keine negativen Auswirkungen auf Hausbesuchsmodule, Datensicherungen, usw. geben, denn es wird kein Programm angewiesen, irgendetwas anders als sonst zu machen! Auch hat prinzipiell der verfügbare Arbeitsspeicher keine Auswirkungen auf TMAdmin /cachepraxisdb. Man kann das selbst dann durchführen, wenn die PraxisDB 10 GB groß ist, der Rechner aber nur 1 GB Arbeitsspeicher hat. Natürlich bringt das auch keine Vorteile, denn Windows schiebt die ersten Gigabyte der Datenbank, die es gerade in den Cache gepackt hat, beim Lesen der nächsten Gigabyte Daten direkt wieder raus. Und es dürfte Glückssache sein wenn der Patient, den ich gerade aufrufen will, just eben in dem knappen Cache ist und nicht von der Festplatte nachgelesen werden muss. Aber es schadet auch nicht!

Nachteile dieses Ansatzes

Nachteile bestehen dahingehend, als dass der Datenbankserver keinen direkten Einfluss auf den Cache hat. (Er könnte technisch zwar Eingriff nehmen und den Cache zu seinen Gunsten manipulieren. Es gibt Funktionen, mit denen Applikationen den Cache von Windows beeinflussen können, aber diese werden - meiner Recherche nach - nur von Windows Komponenten und Programmen wie Exchange und SQL Server genutzt. Ich finde, das ist auch so in Ordnung, denn wenn alle Programme sich selbst den Cache zuordnen wollen, wäre ein System wohl kaum mehr lauffähig. Ein Moderator (Windows), der sich um den Cache alleine kümmert, ist sicherlich sinnvoll und nötig.)

Wenn also der Datenbankserver den Cache lange nicht nutzt (TM tut nichts und langweilt sich), ein anderes Programm aber intensiv von der Festplatte liest (ich schaue mir z.B. ein Video an oder spiele Musik ab), dann wird der Cache langsam alle TM-Daten altern lassen und letztlich zugunsten der neuen Daten (hier im Beispiel die Videos und Musik) aus dem Cache werfen. Beim nächsten Zugriff auf die TM-Daten müssen sie wieder frisch von der Festplatte gelesen werden und sind erst ab diesem Zeitpunkt wieder im Cache.

Meine eigene Frage in dem anderen Thread "wie lange hält /cachepraxisdb" beantwortet sich deshalb so: Es hält so lange, wie die Daten von Windows im System Cache gehalten werden - entweder, weil schlichtweg genug RAM für das Cachen aller Plattenzugriffe da ist, oder weil kein anderes Programm läuft, das die Festplatte und damit den Cache auch intensiv nutzt und die TM-Daten wegen Alterung irgendwann aus dem Cache fliegen.

Was ist mit der Datensicherung?

Eine Datensicherung beeinflusst den Systemcache damit theoretisch eigentlich nicht, denn es wird streng genommen auch nur die Datenbank komplett gelesen - wenn sie vorher im Cache war, wird sie dadurch ja nicht aus dem Cache geworfen. Aber: Bei einer Datensicherung wird auch die Sicherungsdatei geschrieben, und die ist bei großen Praxisdatenbanken auch recht groß (kleiner zwar, wegen Komprimierung, aber immer noch beachtlich). Wenn der Arbeitsspeicher, bzw. genauer der für den Cache nutzbare Teil, nun gerade groß genug war, um die Praxisdatenbank zu cachen, passiert folgendes: Direkt nach dem Aufruf von TMAdmin /cachepraxisdb ist das System schnell, denn die ganze TM Datenbank ist im Cache. Während der Sicherung fliegt die Datenbank aber teilweise wieder aus dem Cache, weil auch die Sicherungsdatei kurzfristig darin gepuffert wird. Danach ist die Leistung von TM also erst einmal wieder mehr oder weniger reduziert.

Wie arbeitet man mit TMAdmin /cachepraxisdb am effizientesten

Ich sehe folgende Szenarien:
  • a) Rechner mit sehr knappen Arbeitsspeicher - kleiner als die Praxisdatenbanken. Hier bringt /cachepraxisdb nichts. Schadet nichts, aber bringt auch nichts.

    b) Rechner mit knappen Arbeitsspeicher - so groß, dass die Praxisdatenbanken in den Cache passen, aber eben nicht viel mehr. Hier besteht die Gefahr, dass die Daten irgendwann aus dem Cache herausdiffundieren. Man sollte auf solchen Rechnern möglichst wenige Programme neben dem TurboMed Datenbankserver betreiben. Ich sehe es auch als sinnvoll an, TMAdmin /cachepraxisdb immer wieder mal neu zu starten, z.B. automatisch zeitgesteuert morgens, vor Praxisbeginn und Mittags, in der Pause.

    c) Rechner mit viel Arbeitsspeicher - wesentlich mehr als die Größe der Praxisdatenbanken. Schön, nur sollte hier /cachepraxisdb eigentlich gar nicht nötig sein, weil irgendwann alle Daten einmal angefasst wurden und dann automatisch im Cache landen. Da der groß genug für alle Programme ist, fliegen die Daten auch nicht wieder raus. Theoretisch.... Ich würde aber dennoch den gleichen Ansatz wie unter b) machen, d.h. TMAdmin /cachepraxisdb immer wieder mal aufrufen, damit die Daten ja auch wirklich im Cache sind. Waren sie es ohnehin schon, dann läuft der Befehl ruckzuck durch - waren sie es nicht, sind es danach eben auf jeden Fall!
Braucht man ein 64-Bit Windows?

Ein 64-Bit Betriebssystem lohnt sich auf jeden Fall, sobald die beiden Praxisdatenbanken zusammen größer werden als - sagen wir einmal - ein bis eineinhalb Gigabyte. Ich basiere diese Schätzung auf der Tatsache, dass unter 32-Bit Windows maximal 3 GB RAM genutzt werden können (von zweifelhaften Tricks abgesehen). Windows und Programme (TM Datenbank, vielleicht ein Faxserver und das übliche, was man sonst noch so auf den Server packt) belegen so etwa ein Gigabyte. Bleiben zwei für den Cache. Die anderen Programme bekommen auch etwas vom Cache ab, bleiben also in 1.5 GB für die Praxisdaten übrig. Werden die Praxisdatenbanken größer, so ist die Gefahr unter 32-Bit Windows größer, dass die Daten schneller aus dem Cache fliegen. Mit 64-Bit Windows kann man - je nach Rechner - problemlos 8 und mehr Gigabyte RAM ins System packen. Das kostet heute nicht mehr die Welt, kann aber eben unter 32-Bit Windows nicht genutzt werden.

Nebenbei: Multiprozessor-CPUs

Ich habe die Versuche mit Windows 2008 mit einem 4-Kern-Prozessor, 8 GB RAM und einer 4 GB Praxisdatenbank gemacht. Bei einer komplexen "erweiterten Suche" wurde nur ein Kern wirklich genutzt, ebenso bei der Kassenabrechnung. Und dabei lief am Testrechner auch noch das TurboMed selbst, also nicht nur der Datenbankserver! Ein Doppelkernprozessor sollte also meiner Ansicht nach als Datenbankserver völlig ausreichen, denn dann kommen sich die verschiedenen parallel laufenden Programme (Datenbank, Fax, Windows, usw.) nicht so oft in die Quere. Ein Ein-Kern-Prozessor dürfte aber auch nicht wirklich benachteiligt sein, viel Arbeitsspeicher ist da meiner Ansicht nach wesentlich wertvoller. Wenn man jedoch den Server als Terminalserver betreibt, dann kann man wohl nie genug Kerne haben, denn dann arbeiten ja etliche TM-Instanzen nebeneinander auf dem gleichen Rechner, meist noch Word etc. dazu!

Viele Grüße und schöne Pfingsten noch,

Thomas
Stefan
Beiträge: 546
Registriert: Dienstag 15. August 2006, 23:46
19
Wohnort: Land Brandenburg

Beitrag von Stefan »

Hallo,

ein super Beitrag und sehr informativ.
Das nimmt mir jetzt die Scheu den Parameter /cachepraxisdb
zu benutzen, da z.B. eine erweiterten Suche bei der alle Patienten
überprüft werden den gleichen Effekt haben müsste.
Und danach ist das System auch nicht instabiler als davor.

Einen Wechsel auf ein 64Bit-System(Win XP, Vista) habe ich auch
schon in Betracht gezogen aber Mangels Erfahrungen hier im
Forum wieder verworfen.

Gruß und ein schönes Pfingstfest

Stefan
Benutzeravatar
Geigenberger
Beiträge: 1302
Registriert: Dienstag 9. Dezember 2003, 22:26
21
Hat Dank erhalten: 4 mal

Beitrag von Geigenberger »

Hallo Thomas,

Danke für diesen tollen Beitrag!!

Das Thema Caching unter Windows habe ich noch nie so klar zusammengefasst gelesen.

Noch einen schönen Pfingstmontag!!


A. Geigenberger
Kasimir
PowerUser
Beiträge: 1670
Registriert: Mittwoch 11. Mai 2005, 20:23
20
Wohnort: Land Brandenburg
Hat sich bedankt: 9 mal
Hat Dank erhalten: 59 mal

Beitrag von Kasimir »

Also, wenn ich das richtig verstehe: Viel Arbeitsspeicher für den Server (bei mir ist Server und Station 1 ein und der selbe PC) ist also gut. Alles klar.
Eine Frage hätte ich aber noch: Wie wichtig ist viel Arbeitsspeicher für die anderen Arbeitsplätze?
Viele Grüße
Kasimir
rfbdoc
PowerUser
Beiträge: 3044
Registriert: Sonntag 30. April 2006, 19:31
19
Hat sich bedankt: 55 mal
Hat Dank erhalten: 87 mal

Beitrag von rfbdoc »

Diese Frage interessiert mich auch. Leider musste ich die Erfahrung machen, dass eine Erweiterung von 512MB Arbeitsspeicher auf 2048MB keinen spürbaren Geschwindigkeitsgewinn gebracht hat. Vielleicht muss man noch weitere Einstellungen z.b. Auslagerungsdatei o.ä. tätigen ?? Die bloße Speichererweiterung der Arbeitsstation scheint es nicht zu bringen.
R.F.B.
Benutzeravatar
Thomas
Beiträge: 720
Registriert: Dienstag 27. Februar 2007, 09:24
18
Hat sich bedankt: 45 mal
Hat Dank erhalten: 66 mal
Kontaktdaten:

Beitrag von Thomas »

An den Arbeitsstation ist das Caching der TurboMed Daten nicht so relevant, denn Windows puffert die Daten an der Quelle, also am Server. Die Arbeitsstation fragt immer wieder den Server ab und bekommt die Daten von dort - entweder von der (Server-)Festplatte, oder aus dem (Server-)Cache. Insofern bringt mehr System Cache an der Arbeitsstation nichts.

Es bringt aber insoweit etwas, als lokale Daten gepuffert werden, z.B. die TM Formulare, Stammdaten, Programmmodule, usw. (sofern in den Grundeinstellungen nicht auf den Server umgelegt). Allerdings sind da die Anfragen meist a) nicht so häufig, b) weniger komplex und c) meist ohnehin schneller zu bedienen, sodass sich hier ein größerer Puffer nicht wirklich signifikant auswirkt.

Ich schaue immer in den (XP-)Taskmanager, und zwar wenn alle "üblichen" Programme gleichzeitig gestartet sind, also z.B. TM, ifap, Word, Virenscanner, E-Mail. Dann schaut man sich an, wieviel Speicher insgesamt zugesichert wurde (im Reiter Systemleistung). Dieser Wert sollte deutlich kleiner sein als der insgesamt zur Verfügung stehende Physikalische Speicher. Wenn man auf der komfortablen/sicheren Seite sein will, dann addiert man den Systemcache noch zum zugesicherten Speicher hinzu und vergleicht diese Summe mit dem Physikalischen Speicher.

Meiner Erfahrung nach sind 512 MB unter Windows 2000 komfortabel, unter XP (wenn nicht zu viel Extra neben TM herläuft) ok, unter Vista zu knapp. Da Speicher heute nicht sooo viel kostet, würde ich in einen XP Rechner 1024 MB Speicher packen, unter Vista 2048 MB. Mehr bringt Reserven, aber - wie bereits von rfbdoc angemerkt - (heute noch) nicht viel mehr Leistung.

Noch ein Kommentar zu 64 bit Betriebssystemen am Arbeitsplatz: Da 64 bit in den allermeisten Fällen nur wegen des größeren Arbeitsspeichers (>3 GB) sinnvoll ist, bringt ein Arbeitsplatz unter 64 bit Windows unter normalen Umständen nichts - außer Treiberstreß :wink: Also lasst es!

Dann noch mein Kommentar zu Vista am Arbeitsplatz: Kann man nehmen, bleibt einem ja auch so langsam nicht mehr viel übrig, denn es werden nur noch wenige neue PCs mit XP ausgeliefert. (Klar, man kann es immer noch selbst nachinstallieren...) Es läuft meiner Erfahrung nach auch gut, aber mit Video-Karten, speziell zur Sono-Anbindung, wäre ich noch seeeehr zurückhaltend und würde dort lieber noch XP einsetzen. An einem "nackten, einfachen" Arbeitsplatz, läuft Vista aber durchaus ordentlich und auch im großen und ganzen nicht signifikant langsamer - einen aktuellen PC mit entsprechend RAM vorausgesetzt 8)

Viele Grüße,
Thomas
Benutzeravatar
Thomas
Beiträge: 720
Registriert: Dienstag 27. Februar 2007, 09:24
18
Hat sich bedankt: 45 mal
Hat Dank erhalten: 66 mal
Kontaktdaten:

Wichtiger Nachtrag

Beitrag von Thomas »

Hallo,

ich muss hier zu meinem obigen Aufsatz noch einen wichtigen Nachtrag hinzufügen:

Es ist auf dem TurboMed Server, der mit /Cachepraxisdb beschleunigt wird, nicht ausschließlich relevant, wie viele Programme gleichzeitig auf dem Server laufen. Vielmehr wird der Systemcache auch für alle anderen Netzwerkzugriffr auf beliebige Daten verwendet. Das Betriebssystem differenziert hier nicht und bevorzugt auch nicht die eine Datei vor einer anderen.

Wenn also z.B. ifap auf dem Server liegt und von den anderen Arbeitsplätzen über's Netzwerk genutzt wird, dann läuft ifap zwar nicht auf dem Server, aber die ifap-Daten wandern dennoch mit der Zeit in den Cache und verdrängen dort ältere TM-Daten. Das hat dann zur Folge, dass bei großen Suchen über den ganzen Datenbestand der Server dann doch wieder TM-Daten von der Festplatte einlesen muss.

Auf der einen Seite ist das schlecht für TM - man sollte, um die TM Daten im Cache zu halten, wirklich das /cachepraxisdb wiederholen. Ich schlage hier vor, es automatisch jeden Morgen vor Praxisbeginn durchzuführen, bei knappen Speicher auch noch mal während der Mittagspause.

Auf der anderen Seite haben wir hier natürlich auch die angenehme Möglichkeit, ifap zu Beschleunigen. Es muss eben nur genügend RAM im Server sein, um zu den TM Praxisdaten noch die Ifap Datenbanken vorzuhalten. Dann müsste man noch ifap in den Systemcache zwingen, dazu sollte ein einfaches Kopieren der Datenbanken mit dem Copy-Befehl gegen Nul: schon ausreichen, muss man ausprobieren... (kopieren und dabei im Taskmanager den Systemcache-Wert im Auge behalten, der sollte um die Größe des Verzeichnisses ansteigen). Allerdings ist das ganze Datenbank-Verzeihnis von PraxisCenter schon 1,2 GB groß, es braucht hierfür also definitiv einen 64bit Server mit viel RAM, ich würde 8 GB oder mehr vorschlagen.

Viele Grüße,
Thomas
TMFreund
Beiträge: 48
Registriert: Mittwoch 10. Januar 2007, 11:29
18

Ich habe es mal verglichen...

Beitrag von TMFreund »

Mit der RAMDisklösung ist man schon schneller, ich vermute, wie es "Thomas" schon sagt:
".....man sollte, um die TM Daten im Cache zu halten, wirklich das /cachepraxisdb wiederholen. Ich schlage hier vor, es automatisch jeden Morgen vor Praxisbeginn durchzuführen, bei knappen Speicher auch noch mal während der Mittagspause.
Wird der Cache von anderen Programmen okkupiert, dann wirds wieder lahm. Mit der Ramdisk hat man quasi einen "dedizierten Cache". Außerdem fällt der Strom / Server mal aus, hab ich wenigstens einen sauberen Stand und muss nicht erst wieder die ganze Datenbank nach "inkonsistenten" Patienten durchsuchen, dann reparieren oder gar das Backup einspielen.
Nicht anders (aber zusätzlich mit Onboard USV) funktionieren andere kostenträchtige Lösungen. Die Testergebnisse im Vergleich zur schnellsten "Platte" sind wohl eindeutig: http://www.tomshardware.com/de/hyperos- ... 336-6.html
holgerhi
Beiträge: 280
Registriert: Sonntag 30. September 2007, 10:57
17
Hat Dank erhalten: 1 mal

Beitrag von holgerhi »

Hallo,

ich möchte "TMAdmin /cachepraxisdb" als Dienst täglich starten unter Server 2003.
Wenn ich den "Dienst" einrichten will, darf ich "nur" TMAdmin.exe starten; OHNE den Zusatz "/cachepraxisdb".
Wie komme ich zum Ziel?

Vielen Dank im voraus !

Grüße
HH
DerEchteFreund
Beiträge: 224
Registriert: Donnerstag 17. August 2006, 13:02
19

Beitrag von DerEchteFreund »

Sie starten doch wohl nicht täglich Ihren Server neu?
Ansonsten reicht ein Eintrag in die Autostart...
GRÜSSE,

ein Freund.
Benutzeravatar
Thomas
Beiträge: 720
Registriert: Dienstag 27. Februar 2007, 09:24
18
Hat sich bedankt: 45 mal
Hat Dank erhalten: 66 mal
Kontaktdaten:

Beitrag von Thomas »

@DerEchteFreund

Zunächst einmal vielen Dank für die vielen hilfreichen Beiträge hier im Forum! Aber ein Eintrag im Autostart reicht meiner Ansicht nach nicht - die Details dazu habe ich im obigen Aufsatz ausführlich dargestellt. Oder haben Sie Insiderkenntnisse, die meinen Beobachtungen und Schlussfolgerungen entgegenstehen? Ihre Meinung interessiert mich sehr!

@holgerhi

Wenn Sie am Ende des Erstellungsvorgangs "Erweiterte Eigenschaften anzeigen" (sinngemäß) auswählen, oder wenn die Task schon fertig ist, mit einem Doppeklick, dann können Sie den Befehl verändern und das /cachepraxisdb dahinterschreiben.

Viele Grüße,
Thomas Staudte
heinerle
Beiträge: 60
Registriert: Montag 6. August 2007, 07:19
18

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von heinerle »

Wie sieht das ganze mit einem Linux-Server aus ?
(linux server, rel schnell 2 Jahre alt, 3-4 xp clients pent IV, 1-2 gigb ram)
Aktuell habe ich ebenfalls erhebliche Reformancprobleme mit der Kartei, antwortzeit zwischen 15s un 30s, ich habe es zunächst an meinem Platz gar nicht gemerkt, wohl aber die helferin am paltz 1 bei "anahme" des Patienten, rezept etc
ich habe die datenbank reorgnisert, das hat praktisch
nichts gebracht, ich habe das gefühl das das erste aufrufen der
Karteieinträge eines Patiene an einem Tag erstemalig 15-30 sekunde dauert,
wenn man dann bei dem geleichne Patienten wieder in die Kartei geht, dauert
es dannur noch 2 sekunden, unabhängig vom Platz, das würd doch für eine
cache problem wie geschildert sprechen oder ?
Ich sehe gerade die Abrechnung durch, bin alleine in der parxis und das geht natürlich bei einer Antwortzeit von 30 s irgendwie gar nicht (1200 x 0,5 = 600 =10 stunden)
Also wie sihet das auf einem Linuxserver aus, kann man den Befehl da auch starten und wie macht man das ganz praktisch ?
Benutzeravatar
Roland_Colberg
Beiträge: 491
Registriert: Freitag 12. Dezember 2003, 17:16
21
Wohnort: Dachau
Hat Dank erhalten: 1 mal
Kontaktdaten:

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Roland_Colberg »

heinerle hat geschrieben:Also wie sihet das auf einem Linuxserver aus, kann man den Befehl da auch starten und wie macht man das ganz praktisch ?
Zunächst einmal gibt es das TMAdmin-Programm ja nicht für Linux. Mit Hilfe von wine lässt es sich zwar unter Linux auch nutzen, siehe http://vondoczudoc-wiki.oblomov.de/doku ... nter_linux. Allerdings scheint der Aufruf mit /cachepraxisdb unter Linux nichts zu bewirken :-(

Nach meinem Verständnis der Linux-Speicherverwaltung holt sich der Kernel die PraxisDB aber ohnehin automatisch in den RAM (ausreichend RAM vorausgesetzt). Wieviel RAM hat denn Ihr Server, und wie groß ist die PraxisDB? Bei mir dauern die meisten Funktionen nach einem Neustart des poetd auch deutlich länger, und nach kurzer Zeit läuft Turbomed dann etwas schneller. Allerdings sind die Unterschiede bei weitem nicht so ausgeprägt wie bei Ihnen (http://www.vondoczudoc.de//viewtopic.ph ... =45#p11214)

Wenn das neu Problem neu aufgetreten ist, könnte auch die Server-Festplatte ein Problem haben und bald den Geist aufgeben!!! Daten sichern!!!

Testen Sie mal den Festplattendurchsatz mit

Code: Alles auswählen

dd if=/dev/zero of=/opt/testfile bs=1024 count=100000
dd if=/opt/testfile of=/dev/zero bs=1024
Da sollten schon je nach Interface 80 - 300 MByte/s erscheinen.
Frankolas
Beiträge: 351
Registriert: Sonntag 18. Januar 2009, 11:07
16
Wohnort: Stralsund
Hat sich bedankt: 77 mal
Hat Dank erhalten: 51 mal

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Frankolas »

Wo und wie gebe ich denn nun den Parameter ein?

Kann man das für Dummies noch einmal detailliert erläutern? :?:

Mit Gruß
Frank
Benutzeravatar
Roland_Colberg
Beiträge: 491
Registriert: Freitag 12. Dezember 2003, 17:16
21
Wohnort: Dachau
Hat Dank erhalten: 1 mal
Kontaktdaten:

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Roland_Colberg »

Am einfachsten starten Sie C:\turbomed\Programm\TMWinAdmin.exe und rufen die Funktion über Server - List PraxisDB auf.
Frankolas
Beiträge: 351
Registriert: Sonntag 18. Januar 2009, 11:07
16
Wohnort: Stralsund
Hat sich bedankt: 77 mal
Hat Dank erhalten: 51 mal

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Frankolas »

Also ich habe gestern noch diesen Parameter unter Win-XP eingegeben, wo TM in Parallels auf einem MacBook als Einzelplatz
läuft. Ich habe vorher der virtuellen Maschine den maximal möglichen Arbeitsspeicher zugeteilt.
Es gab hier einen erheblichen Performanceschub. 8)

Das werde ich heute nachmittag mal an meinem Server auch so machen.

Vielen Dank für den Beitrag!

Gruß
Frank
heinerle
Beiträge: 60
Registriert: Montag 6. August 2007, 07:19
18

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von heinerle »

Ich bin in der Fehleranalyse weitergekomm und müsste eigentlich eine neuen tread eröffnen, aber da es um Performance geht bleib ich erstmal hier.
zunächst zu den Fragen:
Der Linuxserver hat mein ich 4 gb ram, mindestens aber 2 gb, ich guck das nochmal nach.
die praxisdb ist , denke ich die datei objects.dat, die ist 516.046 kb groß, das müsst also passen, die datenbank umfasst mhr als 30.245 patienten aus 13 Jahren.

Nochmale eine genauere Problemanalyse
Ich arbeite seit 1.6.2009 in einer Einzelpraxis, die aus einer Gemeinschaftpraxis von 2 Ärzten hervorgegaangen ist. Die Umstellung von Dos auf Windows erfogt im übrigen (erst) zum 1.7.2008.

Das im weiteren geschilderte Problem tritt nach meiner bisherige Anlyse in der form erst seit der Linzenzteilung auf.
Fehlerbeschreibung:
Patient suche dauert 4-5 s, egal welche, das mag noch ok sein.

Wenn mann dann mit F3 in die Kartei wechselt dauert es bei aktuellen Kassenpatienten des laufenden Quartal, egal wie lange sie schon in der Praxis sind 15,5 bis 17 Sekunden.

Bei Privatpatienet dauert der Wechsel in die Kartei 0-2 Sekunden, eher unter 1 Sekunde

Bei Kassenpatienten die lange nicht in der Praxis (zuletzt vor 1.7.2008) waren (zB Verstorbene) ebenso 0-2 Sekunden.

Bei Patienten die nach der Umstellung auf von Dos auf Windows in der Praxis waren, aber seit der Lizensteilung vom 1.6.2009 nicht wieder ebenfals 15,5 bis 17 s.

Soweit zu Anamnese. Als Arbeitshypthese schließe ich daraus das Patienten denene ein Arzt bei TM zugewiesen wurden und bei denen eine Kassenabrechung durchgeführt werde muss betreoffen sind, dann irgendeine Datei abgefragt wird, 15 s auf eine antwort gewartet wird und dann die übelichen antwort mit der akzeptablen Antwort von 1-2 s erfolgt.

Bei Benutzereinstellung -Arztauswahl ist im übrigen für alle Benutzer eingestellt "arbeitet für alle Ärzte" und kein Arzteintrag

Die Lizenzteilung und die notwendigen Einstellugnen wurde vom Hamburger Regianlvertretung firma corrent durchgeführt (war nicht ganz billig).
Meine Ex-Kollegin benutzt in ihrer Praxis seitedem eine Windows Server (ich vemute XP) , dort treten die Probleme , soweit ich weis nicht auf, dort hat die Firma corrent möglicherweise aberweitere Anpassungen vorgenomme, das sie die ganz Praxis neu ausgestattet hat.
Benutzeravatar
Roland_Colberg
Beiträge: 491
Registriert: Freitag 12. Dezember 2003, 17:16
21
Wohnort: Dachau
Hat Dank erhalten: 1 mal
Kontaktdaten:

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von Roland_Colberg »

heinerle hat geschrieben:Als Arbeitshypthese schließe ich daraus das Patienten denene ein Arzt bei TM zugewiesen wurden und bei denen eine Kassenabrechung durchgeführt werde muss betreoffen sind, dann irgendeine Datei abgefragt wird, 15 s auf eine antwort gewartet wird und dann die übelichen antwort mit der akzeptablen Antwort von 1-2 s erfolgt.
Das scheint mir auch die plausibelste Erklärung. Ich würde wohl folgendermaßen weiter verfahren:
1. die aktuelle Datenbank auf ein Einzelplatz-System spiegeln, idealerweise einen Laptop
2. auf dieser gespiegelten Version (sofern der Fehler dort ebenfalls besteht) eine Datenbankprüfung und -konsistenzprüfung durchführen
3. falls das nicht hilft, mit dem Laptop zu der Firma fahren, die die Trennung durchgeführt hat und auf Nachbesserung bestehen.
heinerle
Beiträge: 60
Registriert: Montag 6. August 2007, 07:19
18

Re: Aufsatz zum Thema Performancesteigerung mit /cachepraxisdb

Beitrag von heinerle »

Hallo allerseits, meine Problem mit der 15 s latenz wie obern geschildert mit einspielen des update 9.4.1 gelöst, tm hotline hat mir nach eingen fruchtlosen optimierungversuchen geraten das up-date einzuspielen. vielleicht hab sie da ja einen bug beseitigt. da system ist jetzt wieder ausreichend schnell. auch ohne cachdb

mfg
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot], Google [Bot], Semrush [Bot] und 17 Gäste