All Products
Search
Document Center

Alibaba Cloud Linux:JBD2 optimization interface

Last Updated:Feb 28, 2026

Alibaba Cloud Linux provides two kernel interfaces, force_copy and stats, to optimize JBD2 performance on ext4 file systems. Use force_copy to reduce journaling latency caused by the BH_Shadow state, and stats to diagnose whether JBD2 is the source of file system quality of service (QoS) issues.

How it works

ext4 is one of the most common journaling file systems. JBD2 is the kernel thread responsible for updating the ext4 journal and acts as a global resource for the file system. When JBD2 attempts to access a cache page, the page may be in the BH_Shadow state, which forces JBD2 to wait for the cache page to write back to disk. This wait increases latency and degrades system performance.

The force_copy interface copies the cache page instead of waiting for the BH_Shadow state to clear, reducing the time JBD2 spends blocked on disk writeback.

Supported versions

Distribution

Minimum kernel version

Alibaba Cloud Linux 2

4.19.81-17.al7

Alibaba Cloud Linux 3

All versions

Interface reference

force_copy

Property

Value

Path

/proc/fs/jbd2/<device>-8/force_copy

Default

Disabled (0)

Valid values

1 (enable), 0 (disable)

Function

Forces a cache page copy to avoid BH_Shadow wait time

Replace <device> with the block storage device name, such as nvme0n1.

Important

Enabling force_copy increases memory consumption. Evaluate your available memory before enabling this interface on memory-constrained instances.

stats

Property

Value

Path

/proc/fs/jbd2/<device>-8/stats

Function

Outputs JBD2 transaction statistics for diagnosing file system QoS issues

Replace <device> with the block storage device name, such as nvme0n1.

Enable force_copy

Run the following command to enable force_copy. Replace nvme0n1 with your block storage device name.

echo 1 > /proc/fs/jbd2/nvme0n1-8/force_copy

To disable force_copy:

echo 0 > /proc/fs/jbd2/nvme0n1-8/force_copy

Read stats output

Run the following command to query JBD2 transaction statistics:

cat /proc/fs/jbd2/nvme0n1-8/stats

Sample output:

337 336 65536 0 14837 1701504 16 0 20058 5 33082732 605 942 1000 1000

The output contains 15 space-separated fields. The following table describes each field.

Field

Position

Description

Transaction ID

1st

The ID of the current transaction

Transactions requested

2nd

The number of transactions requested

Max cached transactions

3rd

The maximum number of cached transactions

Wait time

4th

The time the transaction spent waiting to be processed

Request latency

5th

The latency of the transaction request

Run time

6th

The time the transaction ran

Lock time

7th

The time the transaction was locked

Flush time

8th

The time it took to flush the transaction

Log time

9th

The time it took to log the transaction

Average commit time

10th

The average time it took to commit the transaction

Handles

11th

The number of handles in the transaction

Blocks

12th

The number of blocks in the transaction

Logged blocks

13th

The number of blocks recorded for the transaction

Time constant (Hz)

14th

The kernel time constant (CONFIG_HZ). Unit: hertz

Time constant (ms)

15th

The kernel time constant. Unit: milliseconds

Use fields 14 and 15 to convert time-based fields from ticks to the unit of your choice. Compare stats output before and after enabling force_copy to measure the latency improvement on your workload.