kitty 作者说 tmux waste CPU cycles,具体是指啥?

2022-08-14 14:04:50 +08:00
 haoliang

出处

照我目前的理解应该是指 tmux client/server 结构下的通信消耗:通过 unix socket 通信、client 转发 stdin 到 server 、server 转发输入命令的 stdout 、stderr 给 client 。不知道对不对?还有没有其他方面?

4605 次点击
所在节点    Linux
15 条回复
codehz
2022-08-14 14:19:20 +08:00
不只是转发,tmux 还要自己缓存屏幕内容(基本上也在做另一个终端模拟器要做的事,只是不直接渲染到屏幕上),还会在输出过快的时候截断(并且丢弃输出内容!这个设置还不能调)如果终端模拟器自己做的话,这部分工作就可以少一份,终端模拟器支持的情况下,单纯为了分页和 split 上 tmux 确实是可以说是浪费(
haoliang
2022-08-14 15:11:51 +08:00
@codehz 谢谢回复!

> 自己缓存屏幕内容、丢弃输出内容
这几点是意料之中的,也是 tmux 的 history-limit 这个选项的意义吧。

> 如果终端模拟器自己做的话,这部分工作就可以少一份
作为对比,st 没有这部分设置(刚用没多久,我单纯依靠配置项来判断的);这是不是说 st 跟 tmux 绝配?
urxvt 、alacritty 有,这部分缓冲确实是多余的
codehz
2022-08-14 16:39:02 +08:00
@haoliang 即使 tmux 它不显示,也需要计算屏幕的显示内容才知道下次连接的时候需要哪些信息才能恢复((考虑 vim 这样复杂的界面,显然没办法简单的记录输出内容来恢复屏幕
Dart
2022-08-14 16:43:01 +08:00
kitty 作者没钱买新电脑 哈哈哈哈哈哈 好傻感觉这个人
haoliang
2022-08-14 17:09:04 +08:00
> 没办法简单的记录输出内容来恢复屏幕
哦,这大概是 terminfo 存在的部分意义了;那应该也意味着 tmux 给运行其中的程序设置了自己的 TERM ,然后在渲染的时候还要转成最终 terminal 能理解的格式
ensonmj
2022-08-14 20:08:39 +08:00
tmux 最大的作用就是断线重连
chenxytw
2022-08-14 20:26:35 +08:00
呃....虽然吧,总感觉从一个周围组建和扩展选择用 Python 开发的人嘴里说出来 waste CPU cycles 是件很滑稽的事情......
aloxaf
2022-08-14 21:39:00 +08:00
@codehz #1
确实,此处要点名批评一下 alacritty ,声称自己渲染很快,但是不支持 tab 、split ,让你去用 tmux 实现这些功能。
但问题是套了层 tmux 它就没有速度优势了……想通了这点后的我后面又滚回用 konsole 了……
haoliang
2022-08-14 22:18:38 +08:00
@chenxytw 你这话也太片面了吧,虽然我不主用 kitty ,但据我之前看过的 benchmark ,它与其他 terminal 并没有很大的性能差距。而且在我今天的测试中(同时开启 50 个同类终端),alacritty 纯用 rust 实现的终端在处理键盘输入的时候能感觉到明显的延迟,作为对比我也试了 urxvt 、st 、kitty ,后三者则没有感受到。(当然这纯感受显然没有很强的说服力,只不过在我这里,alacrity 跟后三者不是在响应速度上不是同一梯队的)
chenxytw
2022-08-14 23:19:34 +08:00
@haoliang 呃,怪我没说清楚,我没有否定这个软件本身的性能,他的核心组件全是 C 写的,在核心功能上如果和其他终端有性能差异的话,就太离谱了,遑论他本身还是做了 GPU 加速的。
我的点在于,他自身为了扩展性和功能性,引入了 Python 这一明显有性能问题的语言,说明他是认可为了便利性可以大幅度牺牲性能的(不然他至少会选 Lua 了)。那么他在否决一个功能时,就不能仅从性能角度去阐述。他拒绝这个特性的理由其实仅仅是他不喜欢那种方式而已,和性能其实一点关系没有,虽然他说的关于性能的点是对的。
chenxytw
2022-08-15 00:07:53 +08:00
@haoliang 干扰你的帖子讨论十分抱歉,我试着拉回来主题吧,这个问题本身因为我并没有仔细分析过 tmux 的代码,所以并不能给出什么猜测,或许你发个邮件直接问 kitty 作者本人更靠谱。

但关于 tmux 本身性能很慢这件事,在 tmux 那边的 issue 搜索 performance 是能搜出一些有价值的信息的。

比如
https://github.com/tmux/tmux/issues/1720#issuecomment-489415912
https://github.com/tmux/tmux/issues/1269
haoliang
2022-08-15 02:28:18 +08:00
@chenxytw 哦哦,不好意思,没理解到你的意思。看比赛来着,没能及时回复。(这 aster 第三局我是看不下去了)
ThinkCat
2022-08-15 10:30:43 +08:00
@haoliang 大半夜不要看 dota ,最好早上起来看结果,歪了一下楼。不过作为普通用户,是没有感到 tmux 的消耗。
ruanimal
2022-08-15 11:29:37 +08:00
既要又要
gengchun
2022-08-17 21:55:04 +08:00
总觉得虚拟终端要速度本身是件很奇怪的事情。照这么说最浪费 CPU 的是 X 子系统。

就算真有大量输出要渲染,很早以前不一样有 skip scrolling 吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/872763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX