Performance impact of GC strategies in GJS 1.54+
Following up on the discussion in !261 (closed).
System information
System: Host: SANDY4 Kernel: 5.0.0-050000-lowlatency x86_64 bits: 64 Desktop: Cinnamon 4.0.9
Distro: Ubuntu 18.04.2 LTS
Machine: Device: desktop Mobo: ASRock model: X99 Taichi serial: N/A UEFI: American Megatrends v: P1.80 date: 04/06/2018
CPU: 14 core Intel 0000 (-MT-MCP-) speed/max: 1275/2201 MHz
Graphics: Card-1: NVIDIA GP102 [GeForce GTX 1080 Ti]
Card-2: NVIDIA GP104 [GeForce GTX 1070]
Display Server: x11 (X.Org 1.19.6 ) driver: nvidia
Resolution: 2560x1080@60.00hz, 2560x1080@60.00hz, 3440x1440@59.97hz
Info: Processes: 674 Uptime: 1 day Memory: 22312.8/128914.5MB Client: Shell (bash) inxi: 2.3.56
I have also tested this on my other laptops with Intel (Skylake) and AMDGPU (Polaris) graphics.
CJS master, with or without patches from GJS master (PR), and GJS 1.54+ + Cinnamon master.
Bug information
Steps to reproduce
This is difficult because it probably depends on the hardware and environment. I suspect I may be more sensitive to this because of usage of low latency kernels, and using an ES Xeon E5-2680 v4 CPU with poor single-threaded performance that can only reach clocks of 2.4ghz.
Try to use GNOME Shell or Cinnamon on multiple high resolution displays, so that compositing is stressed in the best circumstances, and from there try to see how different Big Hammer patches affects synchronization of window rendering with the cursor in applications such as VSCode. Chromium based applications are a good choice for testing because they can easily stress the compositor in my experience.
Current behaviour
This is mostly noticeable on Cinnamon when upgrading CJS from its current GJS 1.52 base to the linked PR above, or applying this patch and using an unmodified version of GJS 1.54+ with Cinnamon.
Expected behaviour
No change in perceptible input latency.
I am open to the possibility that this may exist due to a bug in Cinnamon. This discussion is more about trying to understand why this happens, and how it can be mitigated in GJS or its consumer applications.