天渐冷 🔗
本月跑量目前已经 84.3 公里,灵白魔鬼线山路徒步 8 公里, 其中还有一段比较陡峭的崖降。刺激。
小本本 🔗
vmscan 问题 🔗
请教了F老师后,奇怪的 vmscan 问题得到了还算合理的解释。目前看来比较高的可能性是内存分配在 NUMA 节点上远不均匀:NUMA 0 上的 free 水位低过 high 水位,触发了内存回收。
# 下面是比较均匀的场景
$ grep -A50 '^Node.*Normal' /proc/zoneinfo | grep -A3 'pages free'
pages free 24244615
min 259039
low 323798
high 388557
--
pages free 19050868
min 263110
low 328887
high 394664
# 出现 vmscan 的时候
$ grep -A50 '^Node.*Normal' /proc/zoneinfo | grep -A3 'pages free'
pages free 349878
min 259039
low 323798
high 388557
--
pages free 1978028
min 263622
low 329399
high 395176
此外,如果内存分配在 NUMA 节点上已经非常不均匀,开启 numad
后再跑业务,
会观测到更多的 vmscan: 除了 mm_shink_slab
, wakeup_kswapd
之外,还会出现 direct_reclaim
. 从而导致性能波动更大。
- Debian 的
libtcmalloc-minimal4
来自gperftools,并不感知 NUMA; - google/tcmalloc里实现了 NUMA 感知。
RWF_UNCACHED 🔗
W老师提及了RWF_UNCACHED, 不过该功能还在 Jens Axboe 的仓库里。
RDMA 数据异常 🔗
最近碰到的一个偶现问题,数据量大的时候可能会发生。通过加日志对 RDMA 连接做标识、以及对 RPC 做标识后发现:一个 RDMA 连接上的两个(相邻?)RPC 在接收端出现了数据错误。把错误数据 dump 出来后和原始请求数据做比较应该会有所发现。