Prevent Zoom from consuming all your CPU on Linux
gist.github.com
gist.github.com
To set it up, just create a symlink once
# ln -s /usr/bin/firejail /usr/local/bin/zoom
and you should be all set (assuming that in your PATH, /usr/local/bin comes before wherever the real zoom binary is, more details on firejail: https://wiki.archlinux.org/title/firejail#Using_Firejail_by_...)In my case, I also have a ~/.config/firejail/zoom.local file with the contents
whitelist ${HOME}/Documents/Zoom/
noblacklist ${HOME}/Documents/Zoom/
to fine-tune access for storing chat logs under the default path.It is also very easy to sandbox X11 access with firejail (which uses Xpra or Xephyr), but I only have Zoom running when I use it, and I often need share my screen, so I don't enable it.
So… sketchy it is. I find myself wondering what it’s doing with 15% CPU when not in a meeting. Feelsbad.
If you get an AMD GPU then the web experience is a bit more performant, the Intel iGPUs are not quite potent enough.
They use the GPU for visual effects (background blur etc), but then do regular CPU video encoding. That's why they gobble so much CPU!
I think that helps with system compatibility. Hardware video encoders are full of bugs and corner cases, and it's very easy for someone to end up seeing a garbled image when the bitstream was truncated or bad in some way.
There shouldn't be any significant virtualization penalty. My guess is that it uses hardware video codec acceleration and that wasn't accessible in the VM you had set up? If the guest was Windows, looks like nvidia has supported this since host driver version v465 or later.
https://nvidia.custhelp.com/app/answers/detail/a_id/5173/~/g...
HTH!
The security problem is being able to talk to the same X server as trusted applications. X clients can do pretty much all the things you don't want Zoom to do; look at your screen, observe your keystrokes, etc. (Sadly, many of Zoom's features, like screen sharing, are also great things for spyware to do in the background. Not saying Zoom does this, but if you don't trust them, this level of access is the part that worries people, not consuming too much CPU.)
Use Ctrl+Alt+F<number> to switch into another VT and run a different X server. Run zoom in container there.
I found this a lot more convenient than messing with nested X servers and other types of X11 client isolation. Each time you leave an X server and switch to another VT, the clients perceive it like the monitor being turned on/off.
> Having issues with Zoom Client? Join from Your Browser
I just use this. I'm assuming that is what you're asking about.
To give credit where due, their web client has improved a lot over time, so now it is a legitimate replacement. (Apart from the nag screen to use their desktop version. It would also be great to have it as a separate PWA though rather than a tab, I should look into that)
I remember having a Sparc Ultra 5 that I used remote X with to run IE5 on my linux system at the time for those sites that absolutely insisted that I used IE and wouldn't work with NN. Fun times ... actually no, that kinda sucked.
I'm definitely not familiar with the tricks they're doing here. Looks like an ini file!
So to run `ls ~` on only cpu0 you would run:
taskset -c 0 ls ~
Run it each time you want to invoke the command.
tl;dr : parent to your comment suggests a more generalized 'for linux' solution that doesn't depend on specific flavor nuances and desktop environs.
(user 10000truths has a good point, it sets memory ceilings as well -- this should still be done in a way that is distro-agnostic.)
gtk-launch Zoom
gio launch ~/.local/share/applications/Zoom.desktop
systemd-run --user --slice=zoom.slice /opt/zoom/ZoomLauncher
Perhaps alias `zoom` to one of these, or create a shell script that execs one of those and add it somewhere higher in your path than /usr/bin.(Linux Mint 20 with 5.14.12-xanmod1 on a t480s, which reminds me I need to reboot since I have 5.14.18 installed and waiting...)
Really, there's no reason to permit the Zoom application to get anywhere near your computer. Just run it in a web browser.
Web client if it cant be helped.
All jest aside though, I wonder how long this type of thing will continue, or if Chrome will just consume all.