「十日谈」- 22 年 03 期 - 总第 0003 期

这里是 PsiACE,为你带来关于最近十天关于我的一切(并不)。

一直拖到今天才发,所以,我亲爱的朋友们:新春快乐,虎年大吉!

开源 & 研习

  • Databend 的 mysql server 部分用上了 async msql-srv 。不过还需要再跟进一下 jonhoo 那边的新进度。
  • Databend 中的 arrow2 跟进到了 ipc 的部分,下一步应该是移除 RecordBatch 相关逻辑。
  • 把 Clickhouse 那本勉强看完了,书还可以,和期望偏差较大,下次还是继续摸鱼数据库大部头吧。
  • 关于读论文,打算暂时刷一遍 redbook 5th , 随缘更新进度好了。

就还挺摆烂的,可能是过年模式吧(试图甩锅)。

娱乐 & 生活

  • 大扫除、大扫除、大扫除。
  • TowerConqust 真好玩,嘿嘿嘿,可惜破解版太破坏体验了。

过年,四舍五入就是合法熬夜。说起来还是上班有意思,虽然 unjuanable 。

迭代

  • 之后的迭代,所有内容都会整合到 GitHub - PsiACE/psiace
  • 争取把 arrow2 升级完。
  • 新的迭代有一半时间在休假,那么,争取把之前看了半截的《重塑组织》看完好了。

搞事还是躺平,这是个值得深思的问题。


那么,新的迭代,请多多指教了。

在 Fedora 上为 Btrfs 新建 32GiB Swapfile

受到 Databend - set swap to 10G 的感召,检查了一下自己本子的 Swap ,只有大概 8G 的 zram 。

[[email protected] ~]$ swapon -s
Filename				Type		  Size		  Used	Priority
/dev/zram0      partition	8388604		0	    100

完蛋,不能顺利跑完 grcov 限定版 unit-test 的原因大概就在这里了(之前有讨论过是 OOM)。本着「大就是好,多就是美」的原则,决定给它来个超级加倍,再塞个 32 GiB 的 Swapfile 上去。

Btrfs 限定之初始化 Swapfile

自 5.0 内核之后,Btrfs 才支持创建 Swapfile ,而且有一些特别的要求:

  • Swapfile 不能放在 snapshotted subvolume (快照子卷)上。
  • 不支持跨多设备文件系统上的 Swapfile 。

所以正确的做法是:新建一个 non-snapshotted subvolume ,然后在该子卷之下创建禁用压缩的 Swapfile 。

# 创建 non-snapshotted subvolume 。
[[email protected] /]$ sudo btrfs subvolume create swap
Create subvolume './swap'
# 进入子卷。
[[email protected] /]$ cd swap
# 新建长度为 0 的 Swapfile 。
[[email protected] swap]$ sudo truncate -s 0 ./swapfile
# 设置交换文件的属性,使其免于 copy-on-write 。
[[email protected] swap]$ sudo chattr +C ./swapfile
# 禁用压缩。
[[email protected] swap]$ sudo btrfs property set ./swapfile compression none

注意,这些需要在系统根目录下完成,以避免权限问题和设置问题。

设定 Swapfile 作为 Swap 成分之一

Swapfile 是创建特定交换分区的一种替代方案,好处是方便创建和删除、也便于动态变更大小。

这种方案比较适合 SSD 空间充裕的情况。刚好可以组成一个 memory -> zram -> swapfile 的多级交换。

# 将 Swapfile 填充至合适的大小,一般选择内存空间的一半或者与内存空间相当。
# 这里仅仅是为了好玩,选择了巨量的 32GiB ,有浪费之嫌。
[[email protected] swap]$ sudo dd if=/dev/zero of=./swapfile bs=1M count=32768 status=progress
33980153856字节(34 GB,32 GiB)已复制,20 s,1.7 GB/s
记录了32768+0 的读入
记录了32768+0 的写出
34359738368字节(34 GB,32 GiB)已复制,21.2624 s,1.6 GB/s
# 设置正确的权限。
[[email protected]ora swap]$ sudo chmod 600 ./swapfile
# 格式化 Swapfile 作为交换类型。
[[email protected] swap]$ sudo mkswap ./swapfile
正在设置交换空间版本 1,大小 = 32 GiB (34359734272  个字节)
无标签,UUID=2e48f371-62a9-487a-9613-382b386b2836
# 激活交换文件,并设定优先级。
# 由于 zram 的优先级是 100 ,所以这里设定成 50 。毕竟 zram 的性能比 swapfile 要强不少。
[[email protected] swap]$ sudo swapon --priority 50 ./swapfile

检查 Swap 空间并设置自动挂载

那么,经过之前两步,已经得到了接近 40GiB 的 Swap 空间,接下来就是检查一下,并设置挂载。

# 使用 free 查看概览。
[[email protected] ~]$ free -m
               total        used        free      shared  buff/cache   available
Mem:           15453        5206         290         109        9956        9808
Swap:          40959           2       40957
# 使用 swapon 查看详情。
[[email protected] ~]$ swapon -s
Filename				Type		  Size		  Used		Priority
/dev/zram0      partition	8388604		2560		100
/swap/swapfile  file		  33554428	0		    50
# 编辑 fstab ,添加指定条目以完成挂载。
# 这里必须带上子卷名,UUID 可以不写。
[[email protected] ~]$ sudo nano /etc/fstab
/swap/swapfile    none    swap    defaults    0    0

参考资料

笑死,一个多年 Fedora 用户看的文档大多都来自 Arch Wiki 。

  • https://wiki.archlinux.org/title/Improving_performance#zram_or_zswap
  • https://wiki.archlinux.org/title/Btrfs#Swap_file
  • https://wiki.archlinux.org/title/Swap#Swap_file_creation
  • https://wiki.archlinux.org/title/Fstab

克制 Rust 编译大型项目时 OOM 还有一些小技巧,也许下次可以水一点内容。

我没有摸鱼!(手动狗头)

「十日谈」- 22 年 02 期 - 总第 0002 期

这里是 PsiACE,为你带来关于最近十天关于我的一切(并不)。好吧,现在是十一天 :)

开源 & 研习

  • 做了 msql-srv 的 async 支持,不过是个很简陋的实现(datafuselabs/msql-srv#18)。
  • Databend 主 repo 只是简单看了几个 PR ,arrow2 还没更新,虽然 jorge 给了提示但是没搞定,要是有人顺手搞了就好了。
  • 给 tikv/fail-rs 提了 PR 也合并了,顺手就把之前 fork 的 failpoints 也发了 v0.2.0 。
  • 手抄了 64 bit cityhash 的实现,所以 naive-cityhash 的 v0.2.0 有一些原生的 Rust cityhash64 函数。
  • 两个小的依赖 PR 提交给 openraft 和 risinglight ,算是一个不合格的依赖替换工具人。
  • 大致读完了 Crystal 那篇,估计不会写小作文,大体上的思路是一个加了 Cache 的 DAL ,以及一些深入的工作:语义缓存、结果重用之类的。还行。

感谢 -Z symbol-mangling-version=v0 拯救了我的笔记本,上一次这么感恩大概是用上 mold 。

娱乐 & 生活

  • 收到了 LigaAI 的礼物,有特别的纪念徽章和立牌,不过没顾上放图。
  • 练字比较少,没少出去呼吸新鲜空气,晚上甚至开始背单词,虽然就几个。
  • 买了数据库那本帆船书,还挺大部头,80r 一点不亏。
  • 开始试着记账,主要是想量化一下自己的支出。股票多少赚点,基金简直是一言难尽。
  • 只做了一顿饭,色香味失衡,但是肉很多。加了苹果腌制和炖的,有果香,下次记得放盐。

这周总算没有购物了,买书可不能算进去,书是要供起来的。

迭代

  • 整合个人 repo 目前还在想要不要做,大概明天会有结果吧。
  • Clickhouse 那本书还只读了一二两章,算是没完成,只能后面看。
  • 争取多给 Databend 贡献代码,手里还攒着好几个 issue 没完成。
  • 再读篇论文,估计得找综述型的。没有发现别的就去按 reading list 读了。

感觉一个迭代的精力是有限的,关键还是要集中起来办大事。


每天看看时间轴上的动态,都觉得自己好菜。最大的乐趣应该是白嫖 Xuanwo 哥哥的笔记 :p

那么,新的迭代,请多多指教了。

「十日谈」- 22 年 01 期 - 总第 0001 期

这里是 PsiACE,为你带来关于最近十天关于我的一切(并不)。

开源 & 工作

  • 试着给 Databend 引进了 tokio-console 的支持,蛮好玩的(Databend#3739
  • 一些日常维护,最近在和 arrow2 做斗争 :( Jorge 做了几个比较大的变更,感觉要跟上需要改不少东西。
  • 把 ritelinked 归化到 DataSlime 下面,也升级了 2021 edition,要发版还需要做些新功能。
  • ritehash 居然迎来了第一个用户,所以更新了一下,其实只是 fxhash 的分叉维护版本啦。

什么是分步式?因为无法一次性完工所以不得不分步进行

娱乐 & 生活

  • 重新拾起练字,还没有写很多,不过顺便奖励了自己一支新的笔。
  • 买了一点瘦人(一个有意思的店家)的香,很有韵味,估计少有机会点。
  • 新入了词典笔,拿来读论文应该是个好工具。
  • 最近有试着周三做顿饭,比如之前熬了一锅完全不红的红菜汤,味道还行。

额,购物总是在不经意之间发生的。

迭代

  • 把关于自己的 repo 做一个整合,all in one,这样可以让大家从一个入口找到我的全部东西。
  • 坚持锻炼身体,至少每天出去呼吸一下新鲜空气。
  • 读一篇论文, f 叔 发的关于 Cache 的还没认真读完,就它了。
  • 争取把 Clickhouse 那本书里关于原理和实现的部分看完,算是补补课。

属于是伟大蓝图了!新赛季死活打不上铂金二,退游以后又多了不少时间。


唔,大体上「十日谈」这个 tag 应该会成为一个周期性总结的部分,一年大概会有 36 期。

那么,新的迭代,请多多指教了。

2021 年度总结 - Life is not a struggle

说是年度总结,却是在 2022 的第一天夜里才匆匆写几句,就是留个念头。

2021 年首要的关键字就是 「工作」 咯,从 7 月份入职,整整半年过去,应该算是顺利成为职场新人了。非常感谢虎哥和 Datafuse Labs,让我有机会体验「全职开源 + 远程办公」的生活。成功凑了不少 commits 在 GitHub 上,还要继续努力才行。

回过头看看 2021 上半年,几乎就只有两次答辩的时候去了一段时间学校,感觉确实是离校园生活越来越远了。中间五月份因为扭伤比较严重,在床上躺了将近一个月,想起来还挺怨念的。不知道能不能有机会边工作边读读书(xs,总想着回炉重造是怎么回事)。

总之呢,2021 已经过去了。「Life is not a struggle」,希望自己能够与生活和解。新的一年,不要那么贪心,做好每一件事情,扎扎实实投入到学习和工作之中。


另,昨天发了好多遍「早睡早起」,然而还是没做到 :(