耳机网-耳机大家坛

标题: Roon索引数据的内存化实现笔记 [打印本页]

作者: 中关村东路    时间: 2022-10-15 21:29
标题: Roon索引数据的内存化实现笔记
本帖最后由 中关村东路 于 2022-10-15 23:11 编辑

目录

1. 背景
2. 思路
2.1 Roon的数据
2.2 实现思路和所需内核模块介绍
3. overlay+tmpfs/zram实现
3.1 overlay+tmpfs实现
3.2 overlay+tmpfs实现解释(可选)
3.3 overlay+zram实现思路(可选)
4. 纯tmpfs/zram实现思路(可选)
5. 小结

本帖的想法很简单,直接读写SSD尽管比机械硬盘快,但延迟还是比内存差得多,尤其是很多同学的无扇Roon Core性能还是在一定程度上受限的,用本帖的方法能让你更容易在性能和发热之间找到平衡。说实话,本帖代码只写了不到半小时,但写这个帖子真花了我好长时间,确实不太容易讲清楚,如果对你有所帮助,或者遇到什么问题,可以回帖表示支持。

本文为“中关村东路”原创,在erji.net首发,未经作者允许请勿转载。欢迎各司免费使用。



作者: 中关村东路    时间: 2022-10-15 21:29
1. 背景

本帖主要讨论如何在基于Linux的Roon Core上实现数据库的内存化,可以提升数据库读写速度,并极大优化数据库读写延迟。具体到我个人的特定测试环境下,大规模读写速度可提升三到四倍,小包读写延迟可降低七百到一千倍。在百万音轨数量级的Roon环境中,大多数操作都是小包读取,使用体验会有显著提升。

如果您觉得现在自己的设备体验很好没觉得慢、认为太多音乐没有必要、或者Roon根本没必要用单独的机器用笔记本就很好等等,就不要往下看了,也麻烦不要特地为此来批评我。本帖只是记录和分享昨晚一个突然的想法和具体实现。感兴趣的读者将发现,虽然这思路非常直接,代码非常简单,但实现到你的系统上需要对Linux有初步的了解。我个人并不是IT从业人员,编程水平和精力都有限,本帖的实现并不能直接运行,需要读者看懂,找到几个目录才能用起来。调试过程中如果遇到困难可以留言讨论,但请不要因此攻击我。使用代码之前请先备份数据。

我的Roon系统之前简单分享过【1】,这里再次简要介绍。分为ZFS NAS服务器,Roon Core,Roon Ready/Bridge三部分共五台机器,输出给不同房间三套解码,因为这几台机器都是无扇的,所以另外有一台交叉编译兼HQPlayer服务器。其中ZFS NAS用的是10代标压Intel,32G内存缓存,2T NVME缓存,存储音乐的硬盘做了raidz冗余。Roon Core小主机用的12代低压Intel,24G内存,128G SSD。Roon Bridge小主机是一台老式J3455,16g内存和16G Optane闪存。另外有一台树莓派4b【1】和一台Beaglebone Black Industrial【2】,两台自己山寨的Roon Ready网桥的解码不好其实不常听。上述系统全部使用Gentoo Linux,我也在我的repo【3】里维护了不同版本的xanmod内核和Roon/NAA包,以后我可能会开贴介绍一些内核优化技巧,也欢迎大家使用。为了保证下列思路和代码对你有用,如下硬件条件需要满足:1、Roon Core在一台有root权限的Linux系统运行;2、Roon Core的内存应该尽量保证在16G以上,如果数据较多,最好32G;3、如果你的数据量特别小,这个方案的意义可能并不大。

【1】http://erji.net/forum.php?mod=vi ... =2253401&extra=
【2】http://erji.net/forum.php?mod=vi ... =2276075&extra=
【3】https://github.com/zhjie/zhjie_gentoo_repo


作者: 中关村东路    时间: 2022-10-15 21:31
本帖最后由 中关村东路 于 2022-10-15 21:38 编辑

2. 思路

2.1 Roon的数据

在之前的帖子里【1】我曾经讨论过Roon几个线程的功能。这篇帖子要首先讨论一下Roon的数据。Roon的数据主要分为音乐数据、图片数据和索引数据三个部分,其他的都不影响日常使用不用管。其中音乐数据分为本地数据和qobuz等串流数据,本地数据支持本机硬盘和samba等网络存储两种,因为众所周知的原因我目前只能以本地为主qobuz为辅,这就导致了索引数据库臃肿,性能下降;图片在1.8早期和之前的版本中是在索引时就完全下载保存在本地的,当前的实现改为读取的时候才下载,同时缓存起来,这导致了图片依赖Roon服务器的稳定,官网论坛也有人批评,但似乎他们工程师不想改回去;索引数据是最影响Roon操作界面检索、浏览体验的,也是本帖讨论的重点。

在实现中,ROON_DATAROOT这个环境变量决定了你的Roon数据所在,一般要看你的sysv/systemd文件。常见的sysv启动文件八成叫做/etc/init.d/roonserver之类的,可以去那个目录下找。systemd启动文件一般放在/etc/systemd/system/multi-user.target.wants目录下,链接过来的。打开这个启动文件,应该能看得懂ROON_DATAROOT是什么。我的是在/var/roon,以下假定你的也在这个目录下。执行命令
  1. ls /var/roon/RoonServer/Database/Core/
复制代码

在我的Roon Core上可以看到如下几个目录,
  1. 1b1abcdefg230980fd1234567a13  MobileSync  Radiance  account_v3
复制代码

其中第一个是关键,应该是每个人都不一样的,我这个是打码了的,后面都会用这段字符串替代。在这个目录下有这四个文件夹,
  1. du -hcs *
  2. 3.5G        broker_3.db
  3. 24K            classicalness_v1.json
  4. 32K            clientdata.db
  5. 996K        genres_v2.fse
  6. 2.3G        images_1
  7. 6.2M        transport
  8. 5.8G        total
复制代码



其中broker_3.db这么大就是我们要优化的索引数据了。images_1是图片缓存数据,1.8时候这目录可能要好几十G,现在的版本实测删了也能跑起来。看你的数据量,这里的3.5G+2.3G就是日常使用所需的全部数据了,都是碎文件,随机读取延迟是很高的。如果你的内存很大,可以都放进内存试试。我内存只有24G,就只把关键的索引数据broker_3.db目录放在内存了,建议读者也这样操作即可。

2.2 实现思路和所需内核模块介绍

思路其实非常简单,一个目录放在内存里,供Roon读写操作,一个目录放在硬盘上,异步的同步。但这样做有个不大不小的问题,两个目录的全面同步需要一定的时间,虽然并不经常启动Roon Core,我们做孔乙己的毕竟还是希望有更优雅的实现方法。如果可以让内存目录开机即在逻辑上可以使用就好了,Roon该读的数据他没有才问硬盘要,这就是本帖的核心。至于把内存数据同步到磁盘上相对就容易了,我的办法是每天晚上半夜四点让他自己同步,反正是内存同步到ssd也没声音,这时间段执行也不会影响我听音乐。

具体的实现中,有三个内核模块供我们使用。分别是overlay【4,5】,tmpfs【6】和zram【7】,都是顾名思义。overlay分两层,下层实际磁盘目录,上层内存目录。tmpfs是内存中的临时目录,所以性能特别好,之前我的帖子介绍过【1】。zram不但在内存中还做了压缩,性能可能稍微差一点吧。本帖的代码使用了overlay和tmpfs,本来以为需要使用zram的,结果我的内存够了就没用到。如果你需要可以自行参考zram手册,用法应该是完全类似的。

这里多介绍一句overlay,早期版本叫overlayfs,到现在也很多人这么叫。这个模块的核心是四个目录:lowerdir放固化的数据,upperdir放内存里供读写的数据,workdir是临时操作用的目录我们也可以放内存里,最后我们把这几个目录组合起来,用mount命令挂载到逻辑上的broker_3.db索引目录,供Roon读写操作。我也是昨天才查到这个东西,有说的不对的请提出来。不过从实现效果上来看应该没问题。

【4】https://docs.kernel.org/filesystems/overlayfs.html
【5】https://github.com/graysky2/anything-sync-daemon
【6】https://wiki.gentoo.org/wiki/Tmpfs
【7】https://wiki.gentoo.org/wiki/Zram



作者: 中关村东路    时间: 2022-10-15 21:32
本帖最后由 中关村东路 于 2022-10-15 21:39 编辑

3. overlay+tmpfs/zram实现

3.1 overlay+tmpfs实现

直接上代码吧。首先是创建内存目录:
  1. mkdir -p /opt/roon/{tmpfs,1b1abcdefg230980fd1234567a13}
  2. mount -t tmpfs -o rw,noatime,nodiratime,size=12g tmpfs /opt/roon/tmpfs
  3. mkdir -p /opt/roon/tmpfs/{upper,work}
复制代码

之后是构造overlay提供给Roon Core,注意后面两行是自动换行了,其实是一行:
  1. mount --bind /var/roon/RoonServer/Database/Core/1b1abcdefg230980fd1234567a13 /opt/roon/1b1abcdefg230980fd1234567a13
  2. mount -t overlay -o rw,lowerdir=/opt/roon/1b1abcdefg230980fd1234567a13/broker_3.db,upperdir=/opt/roon/tmpfs/upper,workdir=/opt/roon/tmpfs/work overlay /var/roon/RoonServer/Database/Core/1b1abcdefg230980fd1234567a13/broker_3.db
复制代码

这一套拳法打完就可以启动roon了。启动速度一如既往的慢。但启动之后的操作就快了。除此之外,上一节说了,需要在每天半夜四点(按你的生物钟定)让cron或者systemd把数据从内存硬同步回硬盘。一定注意这里的几个斜杠别打错了。
  1. rsync -az --delete /var/roon/RoonServer/Database/Core/1b1abcdefg230980fd1234567a13/broker_3.db/ /opt/roon/1b1abcdefg230980fd1234567a13/broker_3.db
复制代码

如果想要在你的系统上跑起来,首先需要确定的是 ROON_DATAROOT=/var/roon ,这个是你的roon数据根目录,是你机器的具体环境决定的,我不知道,上节说的方法你可以试试,也可以去你电脑上找找哪个目录大;其次要查那个诡异的1b1abcdefg230980fd1234567a13,这个数字是我虚构的,你也可以按前面的方法查一下,在 ROON_DATAROOT 下翻翻就能找到。

3.2 overlay+tmpfs实现解释(可选)

下面简单解释一下原理吧,第一段三行建立了tmpfs/upper,tmpfs/work,还有逻辑上的lowerdir,1b1abcdefg230980fd1234567a13目录。为了方便,我们称呼最后这个目录为opt-db,如果你想理解这个方案需要记得,后面还会提到。

第二段,我们先搞了个小trick,没让这个opt-db直接存数据,而是把实际硬盘上的/var/roon/RoonServer/Database/Core/1b1abcdefg230980fd1234567a13 bind过来。为了方便,我们称呼这个目录为var-db吧。这个操作差不多就是windows的快捷方式,以后往opt-db写东西就直接写进var-db了。最后一句代码,再把这个bind过来的opt-db/broker_3.db目录作为lowerdir(实际存储数据的目录),加载回var-db/broker_3.db,这正是Roon Core所需的那个目录,供其读写。这样我们就用这段简短的代码实现了想要的逻辑——当Roon尝试从var-db/broker_3.db读写时候,实际上他操作的是tmpfs/upper,如果这里没有想要的东西,overlay模块会从lowerdir也就是opt-db/broker_3.db同步过来,然而回忆一下,这个opt-db并不是真的存了数据,而是我们从硬盘上的var-db bind过来的,所以读到的是硬盘上的var-db/broker_3.db目录。换句话说,Roon看起来是从逻辑上的var-db/broker_3.db读取东西,但这个目录是我们把好些东西组合起来的,但最终他读到的居然还是var-db/broker_3.db这个硬盘目录。我的天,这个逻辑是不是很酷。

第三段,每天半夜同步的这一步,会从逻辑上的var-db,读取数据同步到opt-db。有意思的是,这个opt-db实际上是从var-db bind过来的,看起来是不是好像从var-db同步到var-db?其实不是,因为这个opt-db是在第二段第一行从硬盘bind过来的,而现在逻辑上的var-db却不再是真正的存储在硬盘上var-db,而是overlay之后的,也就是说,先从内存中读取,内存找不到就去lowerdir找,而lowerdir是opt-db自己,是不是很呵呵,这样同步过来的就只有内存中的数据了。

怎么样,是不是绕糊涂了?下面你有两个选择,糊涂着用,看懂了之后再用,以及不用。是不是这回真糊涂了?开了个冷笑话,希望看懂的同学在弹幕上扣1。

3.3 overlay+zram实现思路(可选)

和3.1的overlay+tmpfs的实现完全类似,只要改第一段第二句为zram就可以了,具体代码可参考【7】。



作者: 中关村东路    时间: 2022-10-15 21:33
本帖最后由 中关村东路 于 2022-10-15 23:11 编辑

4. 纯tmpfs/zram实现思路(可选)

这套思路就简单多了,不过考虑到不够酷,性能也没优势,我就没采用。

首先你要用第3节中第一段的方法用tmpfs/zram创建一个逻辑上的目录给roon,我想,应该就是ROON_DATAROOT。之后用rsync从硬盘上的实际数据中(你需要把原来的Roon真是数据挪到这来)把数据库整体同步到内存里来。接下来就可以打开Roon Core使用了。最后,还是要在每天半夜把数据从内存用3节中第三段代码写回磁盘。



作者: 中关村东路    时间: 2022-10-15 21:33
5. 小结

本帖的想法很简单,直接读写SSD尽管比机械硬盘快,但延迟还是比内存差得多,尤其是很多同学的无扇Roon Core性能还是在一定程度上受限的,用本帖的方法能让你更容易在性能和发热之间找到平衡。说实话,本帖代码只写了不到半小时,但写这个帖子真花了我好长时间,确实不太容易讲清楚,如果对你有所帮助,或者遇到什么问题,可以回帖表示支持。



作者: 中关村东路    时间: 2022-10-15 21:33
打完收工。
作者: 中关村东路    时间: 2022-10-15 21:36
本帖方法很容易推广到其他带数据库的软件系统。

作者: jackylzf    时间: 2022-10-15 21:38
能不能给介绍 一下ROON的实用性  我总听说这个东西  但是一直没研究过

有了它是否可以在广域网访问家里局域网上的音乐?
作者: 中关村东路    时间: 2022-10-15 21:40
本帖最后由 中关村东路 于 2022-10-15 21:54 编辑
jackylzf 发表于 2022-10-15 21:38
能不能给介绍 一下ROON的实用性  我总听说这个东西  但是一直没研究过

有了它是否可以在广域网访问家里 ...

可以自己查看Roon的官方介绍或者问卖软件的人。我用着不错。主要用来听NAS的音乐和qobuz,再外面也能听。

作者: 姚鹏    时间: 2022-10-15 22:23
给大佬送膝盖来了
作者: leonbernieni    时间: 2022-10-15 22:25
中关村东路 发表于 2022-10-15 21:36
本帖方法很容易推广到其他带数据库的软件系统。

LMS低头弯腰du了下自己表示东西太小了用不上啊……
话说你这个是不是可以直接写在fstab里啊?
作者: 中关村东路    时间: 2022-10-15 22:26
姚鹏 发表于 2022-10-15 22:23
给大佬送膝盖来了

我跟着大佬您玩儿了hek玩儿黑胶^_^
作者: 中关村东路    时间: 2022-10-15 22:28
leonbernieni 发表于 2022-10-15 22:25
LMS低头弯腰du了下自己表示东西太小了用不上啊……
话说你这个是不是可以直接写在fstab里啊?

内存的两个操作不太方便。我有个启动文件专门写各种优化代码,放那了。放在roon启动脚本前面也可以
作者: leonbernieni    时间: 2022-10-15 22:31
中关村东路 发表于 2022-10-15 22:28
内存的两个操作不太方便。我有个启动文件专门写各种优化代码,放那了。放在roon启动脚本前面也可以

是不是还要考虑sleep下下的?不然老觉得它们会抢道
作者: 中关村东路    时间: 2022-10-15 22:33
leonbernieni 发表于 2022-10-15 22:31
是不是还要考虑sleep下下的?不然老觉得它们会抢道

这段代码发出来就是觉得很优雅,秒执行。
作者: haosong51    时间: 2022-10-15 22:35
中关村东路 发表于 2022-10-15 21:33
打完收工。

大佬牛批!多发点实用型技术贴。
作者: 中关村东路    时间: 2022-10-15 22:37
haosong51 发表于 2022-10-15 22:35
大佬牛批!多发点实用型技术贴。

我发的除了请教购买建议的都是实用技术贴啊……
作者: 中关村东路    时间: 2022-10-15 23:09
刚刚重启了一下系统,跑了一整天一切顺利,再次确认数据也都同步进来了。
补一张图吧,内存24G,绿色部分57%是Roon Core占用的,紫色部分是overlay的占用,黄色部分是缓存占用。Linux和windows内存使用机制不同,会尽量缓存用起来,可以看到swap占用是0k,说明内存实际上远没用尽。




作者: spk    时间: 2022-10-16 00:51
大佬太猛了
作者: 阳光游子    时间: 2022-10-16 01:52
好帖,先收藏。
另外请教LZ,我现在的ROON主机是NUC 10代I7,改了无风扇机箱,16G内存(8x2),256G NVME装ROCK系统,内置4T SATA固态做存储,没有走NAS,配了一个DIY线电给NUC供电,用的300W牛,19V输出。播放都是NUC主机本地读取,音轨数不到4万,USB直接输出给解码器,不知道更换成linux版本的ROON SERVER会不会有提升。
或者再加个bridge?但是DIY的bridge的USB输出品质也不一定比线电加持的NUC本身更强。
网络方面我用了2台交换机做光隔离,一台华为一台华三,没有用HIFI交换机。一般是从另外一台日常使用的台式电脑上运行ROON客户端进行播放控制,也就是网络只传输控制信号,不传输音频数据。
作者: 两厢爱好者    时间: 2022-10-16 07:51
我来认真学习一下
作者: boxerlc    时间: 2022-10-16 08:07
支持一下

大佬不是IT行业,但是比很多IT从业人员还猛,敢问大佬是做什么的
作者: boxerlc    时间: 2022-10-16 08:22
读了一遍,了解了意图,但是具体实现和逻辑还是没看懂
作者: 中关村东路    时间: 2022-10-16 10:03
阳光游子 发表于 2022-10-16 01:52
好帖,先收藏。
另外请教LZ,我现在的ROON主机是NUC 10代I7,改了无风扇机箱,16G内存(8x2),256G NVME ...

我不太喜欢讨论音质。但是按roon的推荐,哪怕再搞一台一样的nuc做桥都是更好的。

至于roon core用windows和linux哪个好,虽然我是重度Linux用户,但roon是用dotnet写的,很可能win也有一定优势,还是要看你熟悉哪个吧。直接刷rock也是个省心的办法
作者: 中关村东路    时间: 2022-10-16 10:07
boxerlc 发表于 2022-10-16 08:22
读了一遍,了解了意图,但是具体实现和逻辑还是没看懂

感谢看了实现和逻辑。机缘巧合我从中学开始就是Linux/macOS用户至今,熟悉一些而已。
作者: 老衲爱取经    时间: 2022-10-16 13:50
这是真大神,牛逼,佩服
作者: 中关村东路    时间: 2022-10-16 15:03
老衲爱取经 发表于 2022-10-16 13:50
这是真大神,牛逼,佩服

都是Linux内核内置功能,看着别人的脚本实现一下而已

作者: jackylzf    时间: 2022-10-16 17:17
中关村东路 发表于 2022-10-15 21:40
可以自己查看Roon的官方介绍或者问卖软件的人。我用着不错。主要用来听NAS的音乐和qobuz,再外面也能听。 ...

SMB不行吧  必须得NAS才能访问吧  

作者: 中关村东路    时间: 2022-10-16 17:42
jackylzf 发表于 2022-10-16 17:17
SMB不行吧  必须得NAS才能访问吧

可以。NAS一般也都是SMB共享。实际上Roon官方支持的网络协议就是SMB,其他都需要自己做些工作

作者: 阳光游子    时间: 2022-10-16 21:44
本帖最后由 阳光游子 于 2022-10-16 21:47 编辑
中关村东路 发表于 2022-10-16 10:03
我不太喜欢讨论音质。但是按roon的推荐,哪怕再搞一台一样的nuc做桥都是更好的。

至于roon core用wind ...

桥的原理是通过ROON主机串流到桥,再从桥的USB输出对么?我之前用过Aqua Linq,Linq再通过网线I2S输出给解码器,不走USB,声音确实更干净,不过Linq本身是内嵌HQP做升频的,也不是纯粹的桥,而且升频后感觉动态还是有损失,虽然是PCM升PCM,损失比PCM升DSD小,还是有,下次试试不升频。
windows我倒是很熟,最开始我是用win10做系统的,后来才换成rock,Linux要搞也没啥问题,原理都懂,只是那些命令不记得了,只能照着教程一步一步输入。ROCK就是个精简的Linux,没啥可设置的。

作者: 中关村东路    时间: 2022-10-16 23:55
阳光游子 发表于 2022-10-16 21:44
桥的原理是通过ROON主机串流到桥,再从桥的USB输出对么?我之前用过Aqua Linq,Linq再通过网线I2S输出给 ...

Roon Bridge是个程序,和Roon Core用RAAT协议通讯,你在Roon Bridge所在机器上装设备就可以输出什么,并不是必须用usb,比如树莓派和beaglebone black等等都可以装i2s输出或者同轴输出,或者用pcie/usb界面也可以i2s输出,和linq并没任何区别。当然我自己现在主力系统用的是usb,主要是解码作者推荐。其实也用过i2s和同轴,感觉在我的解码上不如usb效果好就闲置了。

作者: 阳光游子    时间: 2022-10-17 11:28
中关村东路 发表于 2022-10-16 23:55
Roon Bridge是个程序,和Roon Core用RAAT协议通讯,你在Roon Bridge所在机器上装设备就可以输出什么,并 ...

我知道ROON BRIDGE是个程序,和core一样,我找台主机装这个程序,这台主机就可以起到bridge的功能,接收core串流过来的数据,再从某个端口输出,只是同样用NUC或者别的小主机来做的话,多半也只能走USB输出,这样的话,和core直接USB输出,是不是还能有优势?或者roon在串流的过程中,对数据做了处理?
至于用其它口输出,那在硬件上就复杂了,迷你小主机多半无法胜任,成本也上去了,我觉得不如直接买成品的roon桥设备。同时用桥的话也有个问题,网线对声音是有影响的,这一点我自己也买了很多品牌的网线来试过了,确实会有区别,即使是工业网线,也各不相同。所以等于又多了一个环节要处理。

作者: 中关村东路    时间: 2022-10-17 12:46
阳光游子 发表于 2022-10-17 11:28
我知道ROON BRIDGE是个程序,和core一样,我找台主机装这个程序,这台主机就可以起到bridge的功能,接收c ...

Roon的说法是,桥核分离之后,bridge只专注播放,所以音质更好,也更容易优化。我觉得有道理。
作者: 阳光游子    时间: 2022-10-17 12:50
中关村东路 发表于 2022-10-17 12:46
Roon的说法是,桥核分离之后,bridge只专注播放,所以音质更好,也更容易优化。我觉得有道理。

如果是这样的话,那确实还是需要一个桥设备

作者: 中关村东路    时间: 2022-10-17 13:20
阳光游子 发表于 2022-10-17 12:50
如果是这样的话,那确实还是需要一个桥设备

Roon这点确实麻烦,好多机器,对音质有追求的往往再hqplayer,更多了
作者: 中关村东路    时间: 2022-10-17 13:22
阳光游子 发表于 2022-10-17 12:50
如果是这样的话,那确实还是需要一个桥设备

还有人在最后串一个diretta设备出声的……
作者: 阳光游子    时间: 2022-10-17 17:41
本帖最后由 阳光游子 于 2022-10-17 17:44 编辑
中关村东路 发表于 2022-10-17 13:20
Roon这点确实麻烦,好多机器,对音质有追求的往往再hqplayer,更多了

其实hqp也是有好有坏,我用的linq应该算不错的了,我是和la scala mk3配套用的,升频后对动态还是有损失,相应的提升了纯净度、声音的密度、细腻度等等,最近linq有点问题返厂了,用回USB直出,感觉也很不错,各有所长。
另外你说的那个diretta,好像又是个新玩意,我手头还有个树莓派4B貌似可以装,有空试试

作者: a353080017    时间: 2022-10-18 13:05
jackylzf 发表于 2022-10-15 21:38
能不能给介绍 一下ROON的实用性  我总听说这个东西  但是一直没研究过

有了它是否可以在广域网访问家里 ...

2.0可以,通过端口转发的方式,手机也要安装相应的app。前提是光猫要改桥接,避免光猫和路由器多层nat,最好还是先试用,毕竟每个人的网络环境不同

作者: 中关村东路    时间: 2022-10-18 14:11
阳光游子 发表于 2022-10-17 17:41
其实hqp也是有好有坏,我用的linq应该算不错的了,我是和la scala mk3配套用的,升频后对动态还是有损失 ...

linq似乎只能升到DSD128,是不是和这个也有关系。我升频是PCM1536/DSD512

作者: jackylzf    时间: 2022-10-18 15:02
a353080017 发表于 2022-10-18 13:05
2.0可以,通过端口转发的方式,手机也要安装相应的app。前提是光猫要改桥接,避免光猫和路由器多层nat, ...

光猫桥接倒是早就改过了 一直是路由器拨号  不过不知道访问速度如何  播放机制是预加载还是说实时读取
怕是那种实时读取的最后搞得很卡  其实一首歌无非二三十兆 完全可以预载

作者: 中关村东路    时间: 2022-10-18 15:09
a353080017 发表于 2022-10-18 13:05
2.0可以,通过端口转发的方式,手机也要安装相应的app。前提是光猫要改桥接,避免光猫和路由器多层nat, ...

这个其实问题不大。之前官方不支持时候,用zerotier也可以正常使用

作者: 阳光游子    时间: 2022-10-19 09:52
中关村东路 发表于 2022-10-18 14:11
linq似乎只能升到DSD128,是不是和这个也有关系。我升频是PCM1536/DSD512

是的,只支持128,而且我的解码器也只能支持128,最高384/32,而且PCM升DSD基本没法用,太卡,我一般是PCM升PCM,DSD我干脆就不做升频了。好处是PCM升频会自动做整数倍处理。目前我考虑把linq和scala全出了换formula,新款V2可以支持DSD512。

作者: 中关村东路    时间: 2022-10-19 13:04
阳光游子 发表于 2022-10-19 09:52
是的,只支持128,而且我的解码器也只能支持128,最高384/32,而且PCM升DSD基本没法用,太卡,我一般是PC ...

我平时也是用的pcm整数升频,dsd直接播。高码率dsd时候风扇会响,不太能接受。

作者: leonbernieni    时间: 2022-10-19 14:04
中关村东路 发表于 2022-10-19 13:04
我平时也是用的pcm整数升频,dsd直接播。高码率dsd时候风扇会响,不太能接受。

高采样率的dsd其实声音上的收益并不大,反而对时钟的精确度索求更苛刻,而且PDM信号在逻辑器件上的变形更厉害,DAC芯片的做法是把信号占空比加宽去迁就预估的变形。我也是摸索了好久才放下了追求极高采样率的执念,DSD直出滤波不做数字处理是最纯净的。
作者: 中关村东路    时间: 2022-10-19 14:52
leonbernieni 发表于 2022-10-19 14:04
高采样率的dsd其实声音上的收益并不大,反而对时钟的精确度索求更苛刻,而且PDM信号在逻辑器件上的变形更 ...

我就是听个响,没追求极致。用hq就是因为44.1/16不能直接nos,升了就省得滤波了

作者: leonbernieni    时间: 2022-10-19 15:02
中关村东路 发表于 2022-10-19 14:52
我就是听个响,没追求极致。用hq就是因为44.1/16不能直接nos,升了就省得滤波了

你这种表达也对,省去了漫无边际的吹嘘和争执。毕竟每个人的emerge --info都不一样。


作者: 中关村东路    时间: 2022-10-19 15:45
leonbernieni 发表于 2022-10-19 15:02
你这种表达也对,省去了漫无边际的吹嘘和争执。毕竟每个人的emerge --info都不一样。

你可以搜我的帖子,从来不讲听感。。延迟测试数据也从来不放。每个人听的音乐不一样,偏好不一样,设备、硬件也不一样,比了没意义。

作者: leonbernieni    时间: 2022-10-19 17:32
中关村东路 发表于 2022-10-19 15:45
你可以搜我的帖子,从来不讲听感。。延迟测试数据也从来不放。每个人听的音乐不一样,偏好不一样,设备、 ...

甘蔗地长的土豆吧。
不过也有土豆地里长甘蔗的。

在别处看的一帖,10/9我就提出神叨叨的不会是卖量子物件的吧,帖主不承认,还让我接收他的巨量信息,今天(10/19)果然,是卖神油的。


作者: deme    时间: 2023-3-12 01:30
本帖最后由 deme 于 2023-3-12 01:31 编辑

mount -t overlay -o rw,lowerdir=/opt/roon/7a15dc772fd5456baf78004300aa237c/broker_2.db,upperdir=/opt/roon/tmpfs/upper,workdir=/opt/roon/tmpfs/work overlay /var/roon/RoonServer/Database/Core/7a15dc772fd5456baf78004300aa237c/broker_2.db
报错: mount: /var/roon/RoonServer/Database/Core/7a15dc772fd5456baf78004300aa237c/broker_2.db: unknown filesystem type 'overlay'.
HQOS,请问怎么解决,谢谢!

作者: 中关村东路    时间: 2023-3-12 13:58
deme 发表于 2023-3-12 01:30
mount -t overlay -o rw,lowerdir=/opt/roon/7a15dc772fd5456baf78004300aa237c/broker_2.db,upperdir=/op ...

报错的意思是你用的内核没编译overlayfs模块,不能用
作者: deme    时间: 2023-3-12 18:58
中关村东路 发表于 2023-3-12 13:58
报错的意思是你用的内核没编译overlayfs模块,不能用

大侠,可以解决这个问题么,谢谢!

作者: 中关村东路    时间: 2023-3-14 14:43
deme 发表于 2023-3-12 18:58
大侠,可以解决这个问题么,谢谢!

可以啊,别用hqos,用正常的Linux发行版,或者想办法给hqos换个内核。后者可能比较麻烦

作者: deme    时间: 2023-3-14 20:43
谢谢大侠!




欢迎光临 耳机网-耳机大家坛 (http://erji.net/) Powered by Discuz! X3.2