-
Notifications
You must be signed in to change notification settings - Fork 89
Graphics Performance
CS-Studio has fundamentally been designed to use multiple threads, to handle received updates from process variables in background threads to make best use of multi-core CPUs. The display builder will open display files in background threads, using additional threads for embedded displays, to overall open displays as quickly as possible. Plots will be prepared in background threads, drawing to off-screen memory buffers. Eventually, however, the on-screen display needs to be updated, which can only be done on the one GUI thread.
Compared to for example EDM or MEDM where a button was mostly a flat rectangle and an LED was simply a filled circle, newer displays based on Qt or Gtk tend to have widgets rendered with gradients for the fill, with highlights in the border etc. The added workload tends to be handled by graphics hardware. On Windows and Mac OS X, the OS tends to fully support accelerated graphics. On Linux, details depend on the specific graphics card and Linux distribution.
Use x11perf -all
to check basic X graphics performance.
Running displays on the actual computer with locally connected monitor, mouse and keyboard will always
be faster than running displays via ssh -X ...
.
VNC or Thinlinc can offer slightly better remote display performance but will never reach the speed
of a locally running instance.
Run CSS/phoebus with
export JDK_JAVA_OPTIONS=" -Djdk.gtk.verbose=true -Dprism.verbose=true"
to see if it is able to use accelerated graphics or if it falls back to the "sw" software drawing pipeline.
You can try adding options -Djdk.gtk.version=2
vs. -Djdk.gtk.version=3
as well as -Dprism.forceGPU=true
vs. -Dprism.forceGPU=false
to see if that makes a difference.
You can throttle the display via these settings by increasing the various update delays:
# PV throttle (250)
org.csstudio.display.builder.runtime/update_throttle=250
# Display hesitation to accumulate updates (20)
org.csstudio.display.builder.representation/update_accumulation_time = 20
# Pause after updates (100)
org.csstudio.display.builder.representation/update_delay = 100
# Line Plot update throttle
org.csstudio.display.builder.representation/plot_update_delay = 250
# Image plot update throttle
org.csstudio.display.builder.representation/image_update_delay = 250
If your graphics are fast, you might also try to get more updates via these settings:
# Faster (for tests)
# Display actual update rate by setting
# -Dorg.csstudio.javafx.rtplot.update_counter=true
org.csstudio.display.builder.runtime/update_throttle=1
org.csstudio.display.builder.representation/update_accumulation_time = 1
org.csstudio.display.builder.representation/update_delay = 1
org.csstudio.display.builder.representation/plot_update_delay = 1
org.csstudio.display.builder.representation/image_update_delay = 1
For details, see the full list of preference settings, https://control-system-studio.readthedocs.io/en/latest/preference_properties.html