You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@guacamole.apache.org by Michael Barkdoll <ma...@gmail.com> on 2019/05/06 13:53:54 UTC

General guacamole-server guacd questions

Hello,

I notice guacd uses 100% of one of my cores when I use the Docker container
implementation in my docker swarm when examining it with a basic top
command.  I'm curious about the following:


   1. Is this normal?  I can't seem to get video to play with full screen
   or high color depth 24/32 bit without it being very chopping.  The server
   has many cores @ 2.4Ghz so I'd like to have it support things like
   full-screen video, so maybe it has something to do with the way that I
   built guacd?
   2. Is VNC/XRDP an easier workload on guacd?  From my testing it seemed
   like XRDP on Ubuntu 19.04 used less than a VNC guacamole connection with
   TurboVNC.
   3. I'm having issues understanding how to install the xf86-video-guac
   driver for X.Org.

   Source:

   https://lists.apache.org/thread.html/5f4a5afa46dfcc974f254cc7bcf962d08e29b7af7459e3030b6f6448@%3Cuser.guacamole.apache.org%3E
   "For guacamole-server, you'll need to specify an additional
   '--with-xorg-module-dir' option for configure to locate the path for X.Org
   drivers:

   $ ./configure --with-xorg-module-dir=/usr/lib64/xorg/modules/"

   What exactly is that configure command being run on?  Is it X.Org being
   built from source?  Is there a Docker container project that uses the
   xf86-video-guac driver for X.Org project that I could use for testing?

   4. How do I modify the guacamole-server Dockerfile to support multiple
   threads or processors?  I saw some discussion about -j5 and j-19 on the
   mailing list previously.


guacamole-server version 1.1.0
------------------------------------------------
Library status:
freerdp ............. yes
pango ............... yes
libavcodec .......... no
libavutil ........... no
libssh2 ............. yes
libssl .............. yes
libswscale .......... no
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... no
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no
Protocol support:
Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ yes
VNC ........... yes
Services / tools:
guacd ...... yes
guacenc .... no
guaclog .... no
Init scripts: no
Systemd units: no
Type "make" to compile guacamole-server.

5. I did a session recording with and found the file on the guacd
container, but guacenc wasn't installed in the gaucd container.  How do I
add it or is there a basic FFmpeg command that I can use to convert it to a
.mp4?
6. I see support for kubernetes mentioned in guacamole-server 1.1.0.  I've
just learned docker swarm and now I'm thinking I should know kubernetes, is
that the direction that guacamole will support?  What support for
kubernetes is built into this guacamole-server mentioned above?

Michael Barkdoll

Re: General guacamole-server guacd questions

Posted by Greg_E <g_...@email.com>.
> I notice guacd uses 100% of one of my cores when I use the Docker container
implementation in my docker swarm when examining it with a basic top
command.  I'm curious about the following:
>
> Is this normal?  I can't seem to get video to play with full screen or
> high color depth 24/32 bit without it being very chopping.

>> Full screen video is going to be tricky. You are essentially asking
guacd to re-encode full screen video, frame by frame, in real time.
Multiple cores will not help here as the encoding process is not
parallelized, and a parallelized encoding process would likely be of
minimal help for something as intense as full screen video.

>> What you need is GPU support within guacamole-server.

Pulling this up from a search as I'm seeing the same thing and my video
performance is less than I'd like. Trying to play a Youtube video on a
Windows RDP host gives me like 10 fps and a single core at 100%. The cores
trade off once in a while. If I RDP directly through my vpn, video sources
play better and I'm not using a ton of bandwidth to do this over the direct
path.

Server is an old SuperMicro X7DB3 with dual 5310 processors (4 cores each)
and 16GB of RAM. Not exactly a mighty server, but it's what I had on hand,
when we were told to work from home. Trying to get something set up so our
students can log into our workstations. This is running on CentOS 7.7 and
was built from source. Running Guac version 1.1.0

I can buy some used X5460 processors to give it a little more power, but
that's as far as I can go without throwing good money away to gain a few
clock cycles of performance.

Is there a way to get ffmpeg using more cores?

Is there a way to get ffmpeg to use a video card to help with encoding?

I have an Nvidia K620 that I can put in this chassis. If I can get an H8
based board working again, I can use multiple similar GPU cards in the
chassis, but that board is giving me problems that I haven't looked into
since I hauled it out of the rack.

I've also tried adjusting the video coming out of the RDP hosts, letting
them compress things to h.264 and dropping the bit depth to 16 bit, things
like that. I saw no change in the performance through Guac so I may change
all this back as it may actually be causing ffmpeg to work harder.

All the hosts and the server are on a 1gbe connection and bandwidth has not
been an issue so far.

Any help would be most appreciated.



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
For additional commands, e-mail: user-help@guacamole.apache.org


Re: General guacamole-server guacd questions

Posted by Mike Jumper <mj...@apache.org>.
On Mon, May 6, 2019 at 6:54 AM Michael Barkdoll <ma...@gmail.com> wrote:
>
> Hello,
>
> I notice guacd uses 100% of one of my cores when I use the Docker container implementation in my docker swarm when examining it with a basic top command.  I'm curious about the following:
>
> Is this normal?  I can't seem to get video to play with full screen or high color depth 24/32 bit without it being very chopping.  The server has many cores @ 2.4Ghz so I'd like to have it support things like full-screen video, so maybe it has something to do with the way that I built guacd?

Full screen video is going to be tricky. You are essentially asking
guacd to re-encode full screen video, frame by frame, in real time.
Multiple cores will not help here as the encoding process is not
parallelized, and a parallelized encoding process would likely be of
minimal help for something as intense as full screen video.

What you need is GPU support within guacamole-server.

>
> Is VNC/XRDP an easier workload on guacd?  From my testing it seemed like XRDP on Ubuntu 19.04 used less than a VNC guacamole connection with TurboVNC.
>

I don't think that can be generalized, no. It's possible that one
remote desktop server sends updates in a manner that requires less
work and optimization on guacd's part, and it's possible that the
circumstances that cause one remote desktop server to perform better
than another are specific to what you are doing.

>
> I'm having issues understanding how to install the xf86-video-guac driver for X.Org.
>
> Source:
> https://lists.apache.org/thread.html/5f4a5afa46dfcc974f254cc7bcf962d08e29b7af7459e3030b6f6448@%3Cuser.guacamole.apache.org%3E
> "For guacamole-server, you'll need to specify an additional '--with-xorg-module-dir' option for configure to locate the path for X.Org drivers:
>
> $ ./configure --with-xorg-module-dir=/usr/lib64/xorg/modules/"
>
> What exactly is that configure command being run on?

You would be running "configure" on the machine that you're building
the source on. It's part of the source archive and configures the
build.

>
> Is it X.Org being built from source?
>

No, X.Org is not being built from source. What you would be building
is a module for X.Org.

>
> Is there a Docker container project that uses the xf86-video-guac driver for X.Org project that I could use for testing?
>

No, there is no Docker container for testing the video driver. You
will need to build the guacamole-server source on the machine that you
wish to test the X.Org driver on, presumably also excluding the parts
of guacamole-server that you won't need from that build (guacd, other
protocol support).

>
> How do I modify the guacamole-server Dockerfile to support multiple threads or processors?  I saw some discussion about -j5 and j-19 on the mailing list previously.
>

guacd will already use multiple threads. The encoding work for an
individual connection is generally single-threaded, however each
connection has at least one separate thread within which it does that
work, and will leverage additional threads for processing the specific
remote desktop protocol in use, handling input, etc.

Those -j options deal with running the build process in parallel,
potentially speeding up the build. They have no effect on the actual
performance of the software being built.

- Mike