linuxmint / linuxmint/cinnamon
Periodic pauses in cinnamon cause stutter in screen updates
Nobody has claimed this yet.
- 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 -zto 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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