找回密码
 -注册-
查看: 9310|回复: 62
打印 上一主题 下一主题

Linux音频系统中的延迟优化实践,兼谈preempt rt和augomagic preemption

[复制链接]
跳转到指定楼层
1
发表于 2023-11-4 01:34 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式 来自 荷兰
经常看到有烧友说hifi要降低延迟。很多动手能力强的烧友用上了daphile、snakeoil os、audiolinux/gentooplayer等的rt内核,用上了hqplayer os的低延迟内核,甚至是xenomai内核。有的烧友强化路由器和交换机的性能,获得更低的网络延迟。还有些公司使用带有特别低延迟控制单元的soc,如Bricasti M5/M21用了TI的pru。本帖首先简单介绍这些降低延迟的方案和音频回放的关系,之后介绍我实践的Linux音频系统低延迟优化方案。

1. 什么是延迟,为什么要rt
2. 硬件因素
3. 内核补丁
4. 内核设置
5. 软件设置
6. 小结

来自 11楼
发表于 2023-11-4 10:21 | 只看该作者 来自 上海宝山区
延迟测试对比

1 低延迟内核
gentoo-rpi4 /usr/src # cyclictest  -l 10000 -m -Sp98 -i100 -d0                                                                                             
# /dev/cpu_dma_latency set to 0us                                                                                                                           
policy: fifo: loadavg: 0.08 0.33 0.17 2/108 7829                                                                                                            

T: 0 ( 7826) P:98 I:100 C:  10000 Min:      8 Act:    9 Avg:    9 Max:      60                                                                              
T: 1 ( 7827) P:98 I:100 C:   9936 Min:      8 Act:    9 Avg:    9 Max:      16                                                                              
T: 2 ( 7828) P:98 I:100 C:   9823 Min:      7 Act:    9 Avg:    8 Max:      14                                                                              
T: 3 ( 7829) P:98 I:100 C:   9691 Min:      9 Act:    9 Avg:    9 Max:      30



2 automagic内核 (做了内核隔离,所以只有三cpu的测试结果)
GentooRed /usr/src/linux # cyclictest  -l 10000 -m -Sp98 -i100 -d0                                                                                          
WARN: stat /dev/cpu_dma_latency failed: No such file or directory                                                                                          
policy: fifo: loadavg: 0.97 0.43 0.16 1/124 25456                                                                                                           

T: 0 (25454) P:98 I:100 C:  10000 Min:      4 Act:    4 Avg:    4 Max:      26                                                                              
T: 1 (25455) P:98 I:100 C:   9942 Min:      4 Act:    5 Avg:    5 Max:      61                                                                              
T: 2 (25456) P:98 I:100 C:   9839 Min:      4 Act:    5 Avg:    4 Max:      27


回复

使用道具 举报

来自 39楼
 楼主| 发表于 2023-12-16 20:58 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2023-12-16 21:36 编辑

补充三组数据,图1是我树莓派4(cm)上的,延迟2/3/2/22;图2是audiolinux在树莓派5下超频到2800的数据2/3/2/10(多组数据取最优);图3是m1p的数据,作为一台普通或者高性能电脑的数据,比优化过的延迟差距是很大的。这么看的话,

1. 树莓派5可能未必是一个好的选择了,一方面性能可能提升有限,另一方面引入南桥芯片管理包括usb、网卡等等在内的“低速设备”


2. 当然了,如图2 audiolinux的说法,他的树莓派4b延迟是树莓派5的4-5倍,那就是8/12/8/40……如果用我的配置,树莓派5可能也会是个不错的选择


3. 最终用哪个还是要靠听感的,优化延迟就是随便玩玩


图1,我的配置下树莓派4(cm)延迟测试,2/3/2/22


图2,audiolinux树莓派5延迟测试,2/3/2/10



图3,看看正常数据是什么样的,apple silicon来被吊打



回复

使用道具 举报

63
发表于 2024-11-11 21:15 | 只看该作者 来自 陕西渭南
感谢楼主发这么好的技术贴,等有时间自己编译个rt内核玩玩。
回复

使用道具 举报

62
 楼主| 发表于 2024-6-5 21:40 | 只看该作者 来自 北京
中关村东路 发表于 2023-12-16 20:58
补充三组数据,图1是我树莓派4(cm)上的,延迟2/3/2/22;图2是audiolinux在树莓派5下超频到2800的数据2/3/2/ ...


树莓派5延迟,比al的低多了...
回复

使用道具 举报

61
 楼主| 发表于 2024-2-26 14:21 | 只看该作者 来自 北京
xbt123ufo 发表于 2024-2-26 13:29
随便优化了一下Chromebook,延迟测试的数据就比audiolinux的树莓派5的数据低了

恭喜恭喜
回复

使用道具 举报

60
发表于 2024-2-26 13:29 | 只看该作者 来自 湖北武汉
随便优化了一下Chromebook,延迟测试的数据就比audiolinux的树莓派5的数据低了
回复

使用道具 举报

59
发表于 2024-2-26 13:23 | 只看该作者 来自 湖北武汉
按照楼主的方法,我给我的Chromebook,编译了实时内核,开启Automagic模式,打了cpu优化补丁,另外简单修改了一些选项,rootfs分区用void linux官网提供的rootfs。相比没有优化的通用内核,感觉音乐更有节拍感,身体打节拍更带劲了,不知道是不是脑放。
回复

使用道具 举报

58
发表于 2024-1-15 16:08 | 只看该作者 来自 香港
中关村东路 发表于 2024-1-15 15:49
主要还是hqplayer naa没提供RTOS的版本吧

这个确实,RTOS很多软件都没是硬伤。
回复

使用道具 举报

57
 楼主| 发表于 2024-1-15 15:49 | 只看该作者 来自 荷兰
leonjo 发表于 2024-1-15 15:34
lz有考虑过用RTOS来试试么。比如QNX

主要还是hqplayer naa没提供RTOS的版本吧
回复

使用道具 举报

56
发表于 2024-1-15 15:34 | 只看该作者 来自 香港
lz有考虑过用RTOS来试试么。比如QNX
回复

使用道具 举报

55
 楼主| 发表于 2024-1-15 15:27 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2024-1-15 15:31 编辑
clark8888 发表于 2024-1-15 12:36
实时 Linux 内核音质会更好吗? - invalid s的回答 - 知乎
https://www.zhihu.com/question/530950907/answ ...

首先呢,我所有的帖子都不说音质,只讨论技术问题。其次,你发个这种低智网站的低级程序员发的帖子想说明什么……但凡你稍微读懂了我的原贴也不会把cpu延迟和延迟联系当成一个东西,如果没读懂就不要来污染
回复

使用道具 举报

54
发表于 2024-1-15 12:36 | 只看该作者 来自 北京
实时 Linux 内核音质会更好吗? - invalid s的回答 - 知乎
https://www.zhihu.com/question/530950907/answer/3360679626
回复

使用道具 举报

53
发表于 2023-12-27 11:59 | 只看该作者 来自 湖南长沙
楼主技术NB
回复

使用道具 举报

52
 楼主| 发表于 2023-12-27 02:23 | 只看该作者 来自 荷兰
linang 发表于 2023-12-26 23:21
我也觉得没哪么大,可能想尝试下吧,数据输出时不被中断和干扰是不是会更好些

你如果想折腾一下,建议搞一下cpu隔离,好不好听我不知道,确实是不被干扰,性能也是有提升的尤其是responsiveness。举个例子,树莓派4b/cm4网桥有四个核,一个给乱七八糟的东西"housekeeper",一个给roon/naa,一个给usb解码器,一个给网卡。隔离之后网卡就不需要和其他线程进程抢cpu时间了。有更多核心也可以类似利用,我的roon core的八核,四个核心加64G内存给了zfs,另外四个核心和32G内存给roon core。
可参考我在本站的帖子【1】"Roon系统硬核安装笔记",先看目录直接找想要的段落即可。也可以参考ubuntu的手册【2】,opensuse的手册【3】,方案都是类似的,并不必须是实时内核才能用。
【1】http://erji.net/forum.php?mod=viewthread&tid=2253401
【2】https://ubuntu.com/blog/real-time-kernel-tuning
【3】https://www.suse.com/c/cpu-isolation-introduction-part-1/
回复

使用道具 举报

51
发表于 2023-12-26 23:21 | 只看该作者 来自 广东佛山
中关村东路 发表于 2023-12-26 23:14
算错了吧,印象中dsd512应该是和100M网卡一个数量级的。我有时候升dsd1024,有时候升dsd512,树莓派的千 ...

我也觉得没哪么大,可能想尝试下吧,数据输出时不被中断和干扰是不是会更好些
回复

使用道具 举报

50
 楼主| 发表于 2023-12-26 23:14 | 只看该作者 来自 北京
linang 发表于 2023-12-26 23:03
hqplayered输出DSD512数据时,达到500MB,网线要输出又输入会造成拥堵,这时有必要让hq网络输出子进程独 ...

算错了吧,印象中dsd512应该是和100M网卡一个数量级的。我有时候升dsd1024,有时候升dsd512,树莓派的千兆网卡就可以搞定
回复

使用道具 举报

49
发表于 2023-12-26 23:03 | 只看该作者 来自 广东佛山
中关村东路 发表于 2023-12-25 22:25
kidding,archlinux用的systemd,可以实现这个功能,改一下hqplayerd的systemd文件应该就可以,我没有arc ...

hqplayered输出DSD512数据时,达到500MB,网线要输出又输入会造成拥堵,这时有必要让hq网络输出子进程独占一个网口是有必要的,对吗
回复

使用道具 举报

48
发表于 2023-12-26 15:29 | 只看该作者 来自 北京
atioox 发表于 2023-12-26 00:22
音乐回放而言,时延平稳比时延低更有意义
当然,现实是,更多的设备只是模拟输出没做好,而不是什么时钟ji ...

你似乎把播放时延跟实时系统的内部处理延迟搞混了
回复

使用道具 举报

47
 楼主| 发表于 2023-12-26 01:21 | 只看该作者 来自 北京
atioox 发表于 2023-12-26 00:22
音乐回放而言,时延平稳比时延低更有意义
当然,现实是,更多的设备只是模拟输出没做好,而不是什么时钟ji ...

嗯,我在绿檀所有帖子都不讨论听感,只说一个目标如何实现。不过如果你观察一下就会发现,延迟低和延迟的方差低(因为所有延迟都在一个很低的水平上)基本是正相关的
回复

使用道具 举报

46
发表于 2023-12-26 00:22 | 只看该作者 来自 江苏
音乐回放而言,时延平稳比时延低更有意义
当然,现实是,更多的设备只是模拟输出没做好,而不是什么时钟jitter,处理延迟影响了听感
回复

使用道具 举报

45
 楼主| 发表于 2023-12-25 22:25 | 只看该作者 来自 荷兰
linang 发表于 2023-12-25 16:24
楼主你好,我主板是双网口,安装arch linux ,能不能实现hqplayer输出独占或优先使用一个网口

kidding,archlinux用的systemd,可以实现这个功能,改一下hqplayerd的systemd文件应该就可以,我没有archlinux无法测试了。参考【1】,搜索 RestrictNetworkInterfaces

  1. sudo systemd-run -t -p RestrictNetworkInterfaces=enp0s8 ping 8.8.8.8
复制代码


【1】https://kinvolk.io/blog/2021/04/extending-systemd-security-features-with-ebpf/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-11-27 06:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表