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

Roon索引数据的内存化实现笔记

[复制链接]
跳转到指定楼层
1
发表于 2022-10-15 21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自 北京
本帖最后由 中关村东路 于 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首发,未经作者允许请勿转载。欢迎各司免费使用。


2
 楼主| 发表于 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

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-8-14 04:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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