JBD2作为ext4文件系统的内核线程,在使用过程中常会遇到影子状态(BH_Shadow),影响系统性能。为解决使用JBD2过程中出现的异常,Alibaba Cloud Linux 2在内核版本4.19.81-17.al7对JBD2进行了优化。本文主要介绍优化JBD2的接口。
背景信息
ext4作为最常用的日志文件系统之一,更新日志(journal)的内核线程为JBD2,JBD2对ext4文件系统而言,是一个全局资源。您在使用过程中,可能出现JBD2内核线程对缓存尝试获取访问权限时,发生缓存页处于影子状态(BH_Shadow),从而引发JBD2持续等待缓存页回写到磁盘的时间过长的情况,该情况会影响系统性能。因此Alibaba
Cloud Linux 2针对特定场景进行了优化,增加了内核接口force_copy
,允许用户启用优化功能,以强制进行缓存页拷贝,从而减少在缓存页处于影子状态的等待。同时,为了辅助分析文件系统相关的服务质量(QoS)中的问题,Alibaba Cloud
Linux 2增加了一个JBD2的相关信息统计接口stats
。
接口说明
接口 | 描述 |
---|---|
force_copy | 接口位于/proc/fs/jbd2/<device>-8/force_copy,其中变量device 指块存储设备名。当设置force_copy接口后,系统强制进行数据拷贝操作,从而减少处于BH_Shadow时的等待。
注意 设置该接口后会额外消耗一定的内存。
|
stats | 接口位于/proc/fs/jbd2/<device>-8/stats。用于辅助确认文件系统的QoS中的问题是否因JBD2引发。 |
接口示例
force_copy
和stats
接口示例如下。
force_copy
接口默认为关闭状态。将接口设置为1表示调用该接口;设置为0表示关闭该接口。echo 1 > /proc/fs/jbd2/nvme0n1-8/force_copy # 调用接口
- 使用以下命令查看
stats
接口。
返回结果如下。cat /proc/fs/jbd2/nvme0n1-8/stats
返回结果中,各域说明如下。337 336 65536 0 14837 1701504 16 0 20058 5 33082732 605 942 1000 1000
域 描述 第1个域 事务ID。 第2个域 请求的事务数。 第3个域 最大事务缓存。 第4个域 事务等待时间。 第5个域 事务请求延迟。 第6个域 事务运行时间。 第7个域 事务锁住时间。 第8个域 事务刷新时间。 第9个域 事务logging时间。 第10个域 平均提交时间。 第11个域 事务包含的原子操作handle个数。 第12个域 事务包含的块数。 第13个域 事务已记录的块数。 第14个域 HZ(内核配置中的时间常量)。 第15个域 HZ转化为ms。