none
WS2016 Terminalserver - Langsamer visueller Aufbau via RDP RRS feed

  • Frage

  • Hallo zusammen,

    die Reaktionszeit der visuellen RDP-Verbindung auf einem (Terminal-)Server ist sehr langsam.

    Das Bild baut sich sehr langsam auf.

    Andere Server mit derselben Windows-Version funktionieren einwandfrei (Internetverbindung/VPN schließe ich daher aus).

    Ich habe schon verschiedene RDP-Einstellungen angepasst bisher ohne Erfolg und gehe aktuell davon aus, dass die CPU der Grafikanforderung nicht gerecht wird und daher das Bild langsam ist.

    Aktuell bin ich etwas ratlos, da wir nicht weitere Kosten haben möchten für einen Terminalserver, welcher für max. 5 Mann gedacht ist und nur sporadisch (für gewisse Operationen) genutzt wird.

    Über einen Ratschlag bzw. Hilfe wäre ich sehr dankbar.

    Gerne liefere ich auch weiteren Input. :-)

    Danke schon mal und Grüße

    Martyn

    Freitag, 5. April 2019 08:40

Alle Antworten

  • Moin, VPN kannst Du erst ausschließen, wenn das Phänomen auch im LAN beobachtet wird. Ansonsten: beschreib mal, was für Hardware unter dem RDSH läuft und wie er konfiguriert ist.

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Freitag, 5. April 2019 09:10
  • Und auch welche Software verwendet wird.
    Der Windowsexplorer geht auch bei mir ziemlich schnell, Office 2016 ist da eher sehr träge da die Grafikanforderungen erheblich höher geworden sind.
    Da ein Terminalserver i.d.R. keine Grafikkarte hat, wird diese emuliert.
    D.h., alle grafischen Anforderungen werden in eine Bitmap umgeleitet und diese wird dann an den Client gesendet.
    Ich musste meine RDP-Einstellungen via VPN auf 2-MBit und High-Color (65535 Farben) reduzieren um halbwegs vernünftig arbeiten zu können. Komplexere Garfiksoftware kann nur lokal verwendet werden.

    Die Lösung soll RemoteFX bringen, in dem man eine Grafikkarte mit viel Power installiert und RemoteFX aktiviert. Viel Power daher, da die Grafikkarte ja von vielen Benutzern gemeinsam verwendet wird.
    Ausprobiert habe ich es bis her noch nicht.

    • Als Antwort markiert Martyn30 Montag, 8. April 2019 14:27
    • Tag als Antwort aufgehoben Martyn30 Montag, 8. April 2019 14:28
    Freitag, 5. April 2019 11:50
  • Da ein Terminalserver i.d.R. keine Grafikkarte hat, wird diese emuliert.
    D.h., alle grafischen Anforderungen werden in eine Bitmap umgeleitet und diese wird dann an den Client gesendet.

    Ich musste meine RDP-Einstellungen via VPN auf 2-MBit und High-Color (65535 Farben) reduzieren um halbwegs vernünftig arbeiten zu können. Komplexere Garfiksoftware kann nur lokal verwendet werden.

    Die Lösung soll RemoteFX bringen, in dem man eine Grafikkarte mit viel Power installiert und RemoteFX aktiviert. Viel Power daher, da die Grafikkarte ja von vielen Benutzern gemeinsam verwendet wird.

    Moin,

    das kann ich nicht unkorrigiert lassen, da in diesem Punkt schon viel Verwirrung gesät wurde.

    1. Nein, der Terminalserver rendert in keinem Modus gewohnheitsmäßig Bitmaps, wenn sie als Zeichenbefehle aus der Anwendung ausgegeben werden (z.B. ein Rahmen um das aktuell ausgewählte Steuerelement). Die Zeichen-Anweisungen werden an den Client übermittelt und dort lokal nachgeführt. Wenn natürlich die Anwendung bereits ein Bitmap erzeugt, ist hier jede Technologie machtlos. Da kann theoretisch höchstens die Komprimierung auf die Hardware abgeladen werden, dazu siehe Punkt 3 unten.

    2. RemoteFX im Kontext eines Terminalservers verwendet andere Komprimierungskodizes, die, je nach Bandbreite und Latenz, entweder die CPU des Servers oder die Netzwerkbandbreite entlasten. Voraussetzungen dafür sind, dass 1. der Client ebenfalls RemoteFX unterstützt, und 2. die Farbtiefe server- und clientseitig auf 32 Bit steht.

    3. Bis inklusive Server 2016 konnte noch kein Microsoft RDS-basierender Terminalserver von einer lokal verbauten Grafikkarte profitieren. Die diesbezügliche Ausprägung von RemoteFX ist ausschließlich VDI vorbehalten - ein Hyper-V Host stellt die lokale Grafikleistung den Desktop-VMs zur Verfügung. Das sollte sich mit Server 2019 ändern, da bin ich aber noch nicht dazu gekommen, das eingehend zu testen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Freitag, 5. April 2019 13:34
  • zu 1)

    Da hast du natürlich recht, wenn die Standard-GDI-Funktionen verwendet werden, die für Fenster&Co. da sind. Moderne Anwendungen wie Office 2013ff verwenden dies aber so nicht mehr.
    Hier werden komplexere Grafikmethoden verwendet, die das Bild Schicht für Schicht (buttom->up) neu aufbauen. Ein partielles Rendern wie bei Windows-GDI gibt es dabei nicht mehr.
    WPF ist z.B. so ein Kandidat.
    Somit wird nun halt eine Bitmap aufbereitet, die natürlich zu übertragen ist.
    Mittels C++ Spy kann man z.B. keine "Fenster"-Elemente bei Word2016 mehr entdecken, deshalb klappen auch so Maus-Features wie "OK-Button finden" nicht mehr, da es diese Form nicht mehr gibt.
    Desweiteren kann hier eine Grafikarte das Rendern beschleunigen, da ein Großteil der Emulation wegfällt.
    Dies klappt natürlich nur mit vGPU (Hyper-V, VM-Ware und Virtual Box unterstützen dies).

    zu 2)

    RemoteFX benötigt ja eben vGPU um das Rendern und im Endeffekt das Übertragen zu beschleunigen. In Verbindung mit DirectX oder auch OpenGL sollen dann eben die Grafikbefehle beschleunigt werden, da dann die reale Hardware übernimmt.
    Für Windows-Standardprogramme bringt dies natürlich nichts sondern nur für DirectX-Pprogramme.

    zu 3)

    Dann weiß ich nicht wozu das bereits seit 2008 R2 bereits existiert:
    https://en.wikipedia.org/wiki/RemoteFX
    Die Hardwarebeschleunigung alleine bringt schon einiges ohne das RDP was davon mitbekommen muss, denn Bitmaps wurden schon immer komprimiert übertragen.

    Das Hauptproblem ist ja gerade, dass Standardsoftware (wie auch Office) eben immer mehr Grafikleistung erfordern um die Frontends schön zu machen. Dazu gehören Farbverläufe, Schatten, Transparenz und was der Effekte mehr sind. Das geht alles zu Lasten der Terminalserver, da die geforderte Grafikleistung nun von der CPU durchgeführt werden muss, die sich viele User teilen müssen.

    Und wie gesagt, Office 2016 funktioniert remote via VPN nur mit reduzierter Grafikleistung, da die Grafikbibliotheken die Möglichkeit der Befehle passend zur Grafkkarte (es gibt immer eine virtuelle) abfragt und dann Ersatzbefehle durchführt oder einfach ignoriert.
    Ich habe in Office remote daher nur gerasterte Farbverläufe und keine Transparanz mehr, aber dafür kann man damit noch arbeiten.


    Freitag, 5. April 2019 15:23
  • Äh, jetzt hab ich viel zu lesen. Erstmal danke - ich melde mich.

    Schönes Wochenende


    — Edit Wow, ich habe grade viel gelernt und bin erschlagen :-) Ich poste am Montag mal die Hardware des Servers. Danke für die lebhafte Diskussion, ich schaue mir das mal genauer an. Weiterhin schönes Wochenende und nochmals Danke. Grüße Martyn
    • Bearbeitet Martyn30 Freitag, 5. April 2019 16:36
    Freitag, 5. April 2019 15:48
  • Hallo zusammen,

    der Server hat folgende Konfiguration:

    • 64 GB RAM
    • AMD Opteron Processor 6128 (2 GHz, 2 Prozessoren)
    • 2x 1 TB HDD (RAID 1)
    • 1 GB NIC
    • Windows Server 2016 Standard
    • Benutzeranzahl: bis zu 5

    Der Server wird nur für Sitzungen genutzt (normales RDP).

    Hierauf läuft Office 2016 und einige weitere kleinere Verwaltungstools zur Erfüllung kleinerer Aufgaben wie z.B. Notepad++, WinSCP, SSMS, MMC, SP Designer, Filezilla, DNS und WSUS Tools...

    Im Endeffekt sollte das alles machbar sein, m.M. nach...

    Gerne liefere ich weitere Infos.

    Danke und Grüße


    • Bearbeitet Martyn30 Montag, 8. April 2019 13:22 Benutzeranzahl
    Montag, 8. April 2019 13:22
  • Bei den Bitmaps bin ich noch etwas verwirrt...

    Es gibt beim RDP eine Option mit "Persistent Bitmap Caching".

    Bedeutet diese Einstellung nicht, dass er für den Moment wo das Bild gleich bleibt (wie z.B. in Office), dass er hier nicht alles neu schickt, sondern eben diese cached?

    Äh und werden nun Bitmaps bei O2016 verwendet?

    Ich hab den Post schon mehrmals gelesen bin aber noch verwirrt...

    Montag, 8. April 2019 13:39
  • Und auch welche Software verwendet wird.
    Der Windowsexplorer geht auch bei mir ziemlich schnell, Office 2016 ist da eher sehr träge da die Grafikanforderungen erheblich höher geworden sind.
    Da ein Terminalserver i.d.R. keine Grafikkarte hat, wird diese emuliert.
    D.h., alle grafischen Anforderungen werden in eine Bitmap umgeleitet und diese wird dann an den Client gesendet.
    Ich musste meine RDP-Einstellungen via VPN auf 2-MBit und High-Color (65535 Farben) reduzieren um halbwegs vernünftig arbeiten zu können. Komplexere Garfiksoftware kann nur lokal verwendet werden.

    Die Lösung soll RemoteFX bringen, in dem man eine Grafikkarte mit viel Power installiert und RemoteFX aktiviert. Viel Power daher, da die Grafikkarte ja von vielen Benutzern gemeinsam verwendet wird.
    Ausprobiert habe ich es bis her noch nicht.

    Bzgl. Windows Explorer - der ist meistens auch eher langsam...

    Aber nicht immer...

    Montag, 8. April 2019 14:28
  • Also dass der Windows-Explorer langsam ist, kann u.U. an Netzwerkzugriffen oder sonstigen Auslastungen sein. Dazu gehören auch Vorschauen o.ä.

    Nun, um "Windows" darzustellen, bedarf es eben sog. Fenster, daher der Name.
    EIn Fenster ist ein Objekt im grafischen Umfeld. Hierfür gibt es zahlreiche native Kernel-Funktionen, die sogenannte GDI = Grafical Device Interface.
    Jede Bitmap, jedes Icon, jedes Textfeld, Dropdownbox usw., jedes Steuerelement, wurde native durch Windows unterstützt.
    Diese hatte den charmanten Vorteil, dass jeder Treiber, der diese Befehle unterstützt, kompatibel dazu ist. Somit kann ich sowohl Fenster ausgeben als auch drucken.
    Welche Möglichkeiten der GDI-Befehle zur Verfügung stehen wird vom Device-Driver abgefragt.
    https://de.wikipedia.org/wiki/Graphics_Device_Interface

    Hinzu kommt noch ein interessantes Clipping-Verfahren, dass automatisch nicht eingeschlossene Bereiche nicht überschreibt. Wenn ich also ein kleines Rechteck zeichne und dann außerhalb dieses Rechteckes zeichne, hat dies keinen Effekt.
    Wenn nun ein Fenster ein anderes überlagert, erzeugt Windows eine Clipregion. Wenn das Fenster dann verschoben wird, kann Windows diesen Teil des Fenstern selbstständig neu zeichnen ohne dass die Anwendung aktiv wird. Somit ließ sich auch sehr einfach Zoom und Scroll realisieren ohne ständig neuzeichnen zu müssen. Man verschob einfach den "Viewport" und das Bild wurde verschoben.

    Nun werden die Ansprüche an die Ausgabe halt immer komplexer und somit gab es neue Möglichkeiten:
    GDI+ erlaubt ein paar mehr Funktionen wie Farbverlauf, Transparent o.ä.
    https://de.wikipedia.org/wiki/GDI%2B
    Hinzu am auch die sog. "Windowless"-Darstellung, also Fenster ohne eigentlich Fenster zu erstellen.

    Nun stellt RDP eine virtuelle Grafikarte zur Verfügung, die die GDI/+-Befehle einfach an den Client routed und von der dortigen Software an das Fenster der Sitzung über das dortige GDI an die Grafikkarte weitergeleitet wird.

    Da nun GDI für die meisten grafischen Anwendungen nicht mehr ausreichte, wurde DirectX sowie OpenGL entwickelt.
    https://de.wikipedia.org/wiki/DirectX
    https://de.wikipedia.org/wiki/OpenGL

    Dies sind nun Bibliotheken, deren Schnittstellen erheblich mehr Möglichkeiten bieten und vor allem, direkt von der Hardware, also der Grafikkarte unterstützt werden.
    Somit können viel mehr Möglichkeiten visualisiert werden. Da eine Grafikkarte aus z.T. mehreren 1000 Prozessoren bestehen, lassen sich eben viele Bilder parallel berechnen. Da werden dann Texturen und 3D-Effekte realisiert. Die Grafikkarte baut dann eine Bitmap auf, die dann direkt an den Bildschirm übertragen werden kann.
    Durch den übergroßen Speicher lassen sich eben mehrere Bilder parallel oder sehr schnell hintereinander berechnen, so dass Filme entstehen können (25Bilder/Sekunde).
    Nun sind diese Bibliotheken allerdings so gestrickt, dass Funktionen, die nicht durch die Grafikkarte selber aufgelöst werden, dann in viele Einzelbefehle von der CPU zerlegt werden um sie dann an die Grafikkarte zu übertragen. Beispiel Polygon (Vielfacheck): Ich kann eine Liste der Koordinaten aller Punkte senden oder jeden einzelnen Zeichenbefehl von Punkt zu Punkt. Ersteres geht schneller, letzteres passiert durch die CPU.

    Gleichzeitig bringen die Runtimelibs nun ihre eigenen Steuerelemente, die eben komplexe Zeichnungen ermöglichen. Somit gibt es u.U. auch keine einfache Textbox mehr. Das Zeichen der Tastatur geht an die aktive Anwendung und diese errechnet nun das Layout um die Textbox darzustellen. Buttons, Dropdownlisten, Grid u.v.m. bestehen zu großen Teilen nur noch aus Zeichenfunktionen (also zeichnen).
    Da das Clipping nun zu aufwenig geworden ist, bekommt eine Anwendung bei Überlagerungen von Fenstern nur noch den Befehl, sich neu zu zeichnen. Und dies geht (wie bereits beschreiben), bottom-up, also erst der Hintergrund dann Bilder, dann Schaltflächen und zum Schluss ggf. Eingabefelder.

    Nun ist aber RDP eine Software, die nur eine virtuelle Grafikkarte ohne eigenen Prozessor emuliert. D.h., alle Funktionen der GDI/DirectX/OpenGL müssen von RDP-Server ausgeführt werden und dies kostet nun mal Rechenleistung bevor auch nur 1 Bild übertragen ist.

    Und Bilder sind nun mal Bitmaps.

    Du hast recht, dass RDP Bitmaps cachen kann. Dies sind allerdings z.B. feste Symbole oder kleine Bilder auf Schaltflächen o.ä.
    Nun nimm aber mal das Ribboncontrol. Hier gibt es auch viele Bilder/Icons usw., allerdings werden gleichzeitig auch Zustände angezeigt. Mit jeder Cursorbewegung im Text kann sich Schrift, Zeichensetzung oder sonstige Formate ändern, Icons sind aktiv oder passiv  oder ändern ihre Darstellung beim Mousehover. Das Ribbon wird also ständig neu gezeichent. Und dafür reicht GDI+ schon länger nicht mehr aus.

    Somit wird von Office eben alles über DirectX als Bitmap gezeichnet, und da der gesamte Bildschirm u.U. als ganze Bitmap fungiert, kann RDP da nichts cachen, was sich nun mal in der Performance auswirkt.

    Andere Anwendungsframeworks, wie z.B. WPF sind ebenso stark grafikintensiv.

    Nun zu RemoteFX und vGPU.
    Die virtuelle Grafical Processing Unit ist ein Treiber der Virtualisierung (HyperV, VM-Ware, Virtual Box), die eine Verbindung zur physischen Grafikkarte herstellt. Dies geht nun mal nicht mit dem nativen Treiber, da virtualisierte Hardware nicht im Direktzugriff einer VM ist, was aber der originale Treiber will.
    Hinzu kommt, dass die Grafikkarte auch noch über mehrere VM's und bei Terminalservern mehrere User geteilt werden muss.
    RemoteFX klinkt sich nun in die RDP-Sitzung als virtuelle Grafikkarte ein und kann DirektX/OpenGL an die Grafikkarte  weiterleiten, bekommt das gerenderte Ergebnis zurück und stellt es als Bitmap dem RDP-Client zur Verfügung. Hierbei kommt auch die Komprimierung zum Tragen.
    Software, die nur GDI/+ verwendet profitiert davon nicht, da diese Befehle ja an den Client direkt gehen können.

    Der Wechsel bei Office von GDI+ zu DirectX muss nach Office2010 erfolgt sein. Bis Office 2010 konnte man flott arbeiten, beim Wechsel auf Office 2016 musste ich die Remoteleistung drastisch reduzieren.

    Montag, 8. April 2019 18:03
  • Moin,

    kontrolliere mal, ob bei "Performance" unter "Erweiterte Einstellungen" die Ausführung auf "Vordergrundanwendungen" und nicht auf "Hintergrundprozesse" eingestellt ist.

    Auch die Energieverwaltung kann bei einer physischen Bereitstellung eine Rolle spielen. Stell das Profil mal auf "Maximale Leistung".

    Was Du auch mal probieren kannst, ist den Haken bei "Hardwaregrafikbeschleunigung deaktivieren" zu setzen. Den Haken findest Du in jedem Office-Programm, die Einstellung wirkt auf alle anderen Komponenten. Sie ist aber pro Benutzer.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Montag, 8. April 2019 19:26
  • Alle Einstellungen sind wie angegeben. Da ja keine (Grafik)Hardware vorhanden ist, ist die Einstellung "Hardwaregrafikbeschleunigung deaktivieren" ja nicht relevant da es ja nichts zu beschleunigen gibt.

    Und die Energieeinstellungen hast du ja oft genug als Muss für einen Server angepreisen.
    Die Einstellung Vorder-/Hintergrund bringt bei unserem TS auch nichts, da wir ja keine nennenswerten Hintergrundprozesse (außer den üblichen Services mit unter 0,01%) haben.

    Ohne die Reduzierung der Pixeldichte auf Highcolor und Reduzierung der Bandbreite auf 2-10MBit wird Office zäh.
    Schon beim simplen scrollen in Outlook kann man sehen, wie das Bild "nachläuft".

    Wenn wir denn mal unsere Hardware austauschen versuche ich eine Grafikkarte installieren zu lassen.

    Montag, 8. April 2019 20:57
  • Noch als Nachtrag:

    Ich habe noch mal Word 2013 (in einer VM) geprüft. Mit Spy++ (kommt mit Visual Studio) kann man sehr schön sehen, dass Office kaum noch sog. "Fensterhandle" hat.
    Öffnet man z.B. den Schriftart-Dialog und such mit Spy++ ein Fenster, kann man sehen, dass außer den Texteingaben alles andere (Reiter, Dropdowns, Buttons) über ein und dieselbe Klasse gezeichnet werden.

    Nimmt man zum Vergleich Notepad und öffnet den Schriftart-Dialog kann man mit Spy++ sehr schön die Standardklassen Button, Combobox, Edit,... ermitteln, die durch Standard-GDI verwaltet werden.

    In Virtualbox mit vGPU merkt man keinen nennenswerten Nachteil.

    Montag, 8. April 2019 21:36