samoshkin / tmux-plugin-sysstat

Prints CPU usage, memory & swap, load average, net I/O metrics in Tmux status bar
MIT License
157 stars 48 forks source link

cpu.sh is long-running routine which breaks status line refresh behavior #4

Closed samoshkin closed 6 years ago

samoshkin commented 6 years ago

See the background for this issue here: https://github.com/samoshkin/tmux-config/issues/4

In a short, cpu.sh is long running process, which takes $status-refresh-interval-1 seconds to complete. This cause various issues regarding status line refresh behavior:

The idea for solution is to split cpu.sh logic into:

samoshkin commented 6 years ago

Redesigned cpu.sh logic, split it into 2 files:

Now, from a sysdig trace, we can ensure, that cpu.sh, mem.sh, loadavg.sh are run strictly once per $status-refresh-interval.

19:43:46 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/mem.sh 13638
19:43:46 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/loadavg.sh 13639
19:43:46 | /home/alexeys/.tmux/plugins/tmux-online-status/scripts/online_status_icon.sh 13641
19:43:46 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/cpu.sh 13637

19:43:51 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/mem.sh 13786
19:43:51 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/loadavg.sh 13787
19:43:51 | /home/alexeys/.tmux/plugins/tmux-online-status/scripts/online_status_icon.sh 13789
19:43:51 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/cpu.sh 13785

19:43:56 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/mem.sh 13934
19:43:56 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/loadavg.sh 13935
19:43:56 | /home/alexeys/.tmux/plugins/tmux-online-status/scripts/online_status_icon.sh 13937
19:43:56 | /home/alexeys/.tmux/plugins/tmux-plugin-sysstat/scripts/cpu.sh 13933

As a side effect, when you start tmux session, you will immediately get average CPU usage since the system bootstrap in your status line, which is replaced by CPU average of each next interval.