JBD2优化接口

更新时间:
复制 MD 格式

JBD2作为ext4文件系统的内核线程,在使用过程中常会遇到影子状态(BH_Shadow),影响系统性能。为解决使用JBD2过程中出现的异常,Alibaba Cloud Linux 2(内核版本4.19.81-17.al7开始)和Alibaba Cloud Linux 3对JBD2进行了优化。本文主要介绍优化JBD2的接口。

背景信息

ext4作为最常用的日志文件系统之一,更新日志(journal)的内核线程为JBD2,JBD2对ext4文件系统而言,是一个全局资源。您在使用过程中,可能出现JBD2内核线程对缓存尝试获取访问权限时,发生缓存页处于影子状态(BH_Shadow),从而引发JBD2持续等待缓存页回写到磁盘的时间过长的情况,该情况会影响系统性能。因此Alibaba Cloud Linux针对特定场景进行了优化,增加了内核接口force_copy,允许用户启用优化功能,以强制进行缓存页拷贝,从而减少在缓存页处于影子状态的等待。同时,为了辅助分析文件系统相关的服务质量(QoS)中的问题,Alibaba Cloud Linux增加了一个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。