Set 4k 10bit 120hz via HDMI with Ryzen 5700G & A520

(Try to write some blogs in English to improve my writing technic.)

I bought a Ryzen 5700G CPU with ASRock A520M-ITX/ac as my living room HTPC. With Sony 77A80J, I can’t even set color depth to 10bit with RBG4:4:4 at 4k 60hz, let alone at 4k 120hz. It said A520M-ITX/ac support HDMI ver 2.1 on ASRock’s website, but after changing several cables, the problem was not gone away. My conclusion is that the HDMI port’s bandwidth is likely limited to HDMI 2.0b. Limited by its 14.4Gbit/s bandwidth, 2.0b allows 4k 60hz 4:4:4 8bit(12.54) / 4k 60hz 4:2:2 10bit(10.45), but not allows 4k 60hz 4:4:4 10bit(15.68).

继续阅读: %s

ZFS on Linux 提升读取性能

我的 ZFS 系统是由 8 x 10T HDD 组成的 raidz2,读取性能一直在 190MB/s 左右。这个速度不算太慢,但是到达这个速度时,从 iostat 的情况看,磁盘使用率只有 25% 左右,cpu 占用率也不高,还有很大的提升空间。

在网上找了半天,看到 zfetch_max_distance 参数可能会影响读取性能,这个参数影响流预加载最大大小,或者可以说是读取 buffer 的大小(参考这个文档)。

使用命令 echo 67108864 > /sys/module/zfs/parameters/zfetch_max_distance 来将这个参数调整为 64MB 大小,可以显著提高读取速度。

ip rule 使用 fwmark 规则无效的解决办法

前端时间,尝试在软路由上,通过 iptables 的 mark 功能,配合 ip rule,来实现访问特定 ip set 的请求走特定的路由表。配置后,最初配置完 iptables 和 ip rule 后,一直都没有生效,其间试了不知道多少方法,有段时间直接创建了个几万条的路由表来实现这个功能。

继续阅读: %s

TL-SH5210PB 的一些隐藏参数

TP-Link 的交换机,官网上都没有背板带宽等等参数。刚刚询问了下在线客服 TL-SH5210PB 这个交换机的参数,记录在这里,方便其他大佬取用。

包转发率是42Mpps

背板带宽是80Gbps

无法通过 Thinkpad T470p 的 M.2 托盘使用 SATA Express 接口

之前购买的 MSI C236M 主板有一个 SATA Express 接口,但是没有 M.2 接口。SATA Express 作为一个著名的坑爹接口,推出后基本没有制造商制造了使用这个接口的 SSD,短短的一段时间后也再也没有主板厂商支持这个接口了。

因为希望安装一个 NVMe SSD,偶然看到了 Thinkpad T470p 的 M.2 托盘(FRU 01HY319)。这个托盘在 T470p 上可以将一个 SATA Express 接口转换为 M.2 接口,虽然带宽会降低为 PCI-E x2。当时以为终于找到了救星,说不定可以挽救我可怜的 SATA Express 主板。

在咸鱼上购买了一个,当到手的时候发现它的 SATA Express 接口上有可选的 PCI-E 时钟触点,感觉心中一凉。接上 SSD 尝试了一下,果然是不可以使用的。

背景知识是这样的:SATA Express 设计的时候,由于怕 PCI-E 时钟信号在传输的时候出现不稳定的情况,所以去掉了时钟信号,而推动 PCI-E 联盟增加了 SRIS(带独立展频时钟的分立式基准时脉)特性来在无时钟信号时维持正常运行。华硕曾经提供过将无时钟支持 SRIS 的 PCI-E 信号重新加回时钟信号的转换板,但是现在市场上无法找到了。联想的这个托盘没有使用这个时钟信号恢复的方法,而是使用了 SATA Express 可选的时钟信号触点(可以参考本网页中的 E7、E8 触点的定义),直接使用了主板上的 PCI-E 时钟信号。而从台式机主板上引出的 SATA Express 当然没有这些触点,当然也就不可以使用了。

所以如果有同学手上有一块有 SATA Express 的主板,我希望能在这里提醒大家一句,不用尝试了,看来是此路不通了……(手动苦笑)

zfs zed 升级后 CPU 占用率长时间 100% 问题排查

之前为了使用 BBR,将 NAS 的 kernel 从 4.4 升级到了 4.13,因为 Ubuntu 16.04 LTS 的 zfs 版本是 0.6.5,不支持 4.13 kernel,所以用一个 ppa 源将 zfs 升级到了 0.7.6。但是重启之后,发现 zed 这个 Daemon CPU 占用率长期保持 100%,尝试 zpool upgrade -a 来启用新特性,也报了错误。

网上对这个现象的描述有很多。似乎 N 久之前有个版本 bug,会造成类似的情况。尝试更新 zfs,仍然没有恢复正常。

后来看到一篇文章说,如果 zfsutils-linux 的版本和 Kernel Module 的版本不一致,可能会造成此类问题。modinfo zfs,发现版本还是 0.6.5。于是按照 github 上 zfsonlinux 项目的 wiki,Custom Packages 这块讲了如何编译安装。通过这个,将 Kernel Module 更新到了 0.7.6,重启后问题消失。

银欣 SST-DS380B 机箱散热优化

17 年中的时候,准备搭建一个 NAS,来存放乱七八糟的文件。因为希望使用 raid 6 以上系统,至少要有 6 个硬盘。又因为想加一个万兆网卡与台式机通讯,最后决定使用有 12 个 SATA 接口的永擎的 C2550D4I。了解到软 Raid 十分不靠谱,最后使用的是 ZFS(似乎更不靠谱了……)。正好 C2550D4I 可以使用 ECC 内存,配合起来非常方便。

按照计划组建了 8 个硬盘的 NAS 之后,发现的一个严重问题就是,磁盘温度常年保持在 50~60℃,让我对硬盘的寿命深深担忧。于是在网上看到了这个文章:Creating a Cooling Duct for the SilverStone DS380B

在开始详细描述这个文章使用的方法之前,请允许我先讲一下 DS380B 的风道结构。
继续阅读: %s

SS 引导式自动安装脚本

之前网上的脚本大概都只有 Shadowsocks 本身的安装,如果买了一个新服务器,还要做很多其他的工作。

昨天被宽带通的各种屏蔽搞的受不了了,想在阿里云国内的服务器上架个 SS 服务器,即使有各类脚本,最后还是要手动做各种调整。

所以写了这个脚本,可以用在一般的 Ubuntu Server VPS 上。
继续阅读: %s

矫枉论

唐末藩镇既起,将压君势,军阀逐鹿,涂炭中原。乃至宋起,太祖匡胤虑之,故释兵权,以文制武,聚诸权焉。将权轻而法密,兵员冗而乏习,遂亡于金元矣。

董子曰:矫者不过其正,弗能直。然今既矫枉,过中乃害也。前人辄以散相劫,终散矣。向时愚惑,既见劫而思之必散,遂决以速散也。而今思之,蚁穴于堤,既未溃也,除之乃可。弃堤而走,何异于溃堤?是谓过正矣。

共和六十八年七月癸亥,悔昔而记之。