linuxmint / linuxmint/cinnamon

Periodic pauses in cinnamon cause stutter in screen updates

Open
#8,581 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

BUG Gathering Info
Dominant language
JavaScript
Stars
5.6k
Forks
915
Avg merge
5d 22h
Merged PRs (30d)
3

Description

  • Cinnamon version: 4.0.10
  • Distribution: LMDE 3 (Cindy)
  • Graphics hardware: Nvidia Quadro K2100M w/ Nvidia driver
  • 64 bit
Issue

Cinnamon (the process/window manager) stutters periodically while updating the screen, about every 2 seconds on my system. My intuition was that a repeating pause like this is probably related to garbage collection, and some brief performance profiling seems confirm that (see the attachment below).

Steps to reproduce
  • Log into a cinnamon session
  • apt-get install libmozjs-52-0-dbgsym libcjs-dbg linux-tools
  • Open a terminal and run perf top -p $(pgrep -x cinnamon) -d1 -z to see approximately what cinnamon is doing in any given second
  • Move a window around, autoscroll, run glxgears. Anything that produces a smooth animation over time
Expected behaviour

Smooth animation, with no pauses or stuttering.

Actual behaviour

A pause that occurs about once every 2 seconds on my system. The perf top update immediately after the pause seems to show evidence of a GC operation taking place, with lots of time spent in symbols like js::GCMarker::drainMarkStack, js::GCMarker::markAndScan<*>, and so on. To illustrate what I mean, I've attached a snapshot of some perf terminal output at cinnamon-perf-top-sample.txt, from a one second window that included one of these pauses.

More info

I see this problem with browsers, 3D applications like glxgears, terminals, and the window manager itself, so I can rule out problems with any specific application. The perf output seems to confirm this.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the pause in a Cinnamon session using the listed animation steps and the provided perf top command. Review cinnamon-perf-top-sample.txt and compare profiling output around a pause, especially the reported GC symbols. Done means smooth animations without the roughly two-second stutter.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, linux
Domain
desktop, operating-systems, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.