The /proc/diskstats
raw data source interface of the I/O latency analysis tool iostat is optimized in Alibaba Cloud Linux 2 and 3 to calculate the amount of time consumed by read, write, and special I/O (discard) operations on devices. The bcc tool is provided to track I/O latency. This topic describes the optimized /proc/diskstats
interface and the bcc tool.
Interface description
The /proc/diskstats interface in Alibaba Cloud Linux allows you to query the disk I/O information of a device and the amount of time consumed by read, write, and discard operations on a device.
Example: Query the /proc/diskstats interface
cat /proc/diskstats
Sample output:
254 0 vda 6328 3156 565378 2223 1610 424 25160 4366 0 1358 5332 0 0 0 0 2205 3347 0
In the command output, the last three domains are new domains added in Alibaba Cloud Linux. The following table describes the domains.
Domain | Description |
The sixteenth domain | The amount of time consumed by read operations on the device. Unit: ms. |
The seventeenth domain | The amount of time consumed by write operations on the device. Unit: ms. |
The eighteenth domain | The amount of time consumed by discard operations on the device. Unit: ms. |
For information about other domains, see the kernel document Documentation/iostats.txt
. You can obtain the kernel document from the Debuginfo package and source code package of Alibaba Cloud Linux 2. For more information, see Use Alibaba Cloud Linux 2.
bcc
Alibaba Cloud Linux provides the bcc tool to track I/O latency. You must download the tool before you can use it. Run the following command to download the tool:
yum install -y bcc-tools
You can run one of the following commands to query the description of the bcc tool:
Run the following command to query the description of the bcc tool:
/usr/share/bcc/tools/alibiolatency -h
Sample description:
usage: alibiolatency [-h] [-d DEVICE] [-i [DIS_INTERVAL]] [-t [AVG_THRESHOLD_TIME]] [-T [THRESHOLD_TIME]] [-r] Summarize block device I/O latency optional arguments: -h, --help show this help message and exit -d DEVICE, --device DEVICE inspect specified device -i [DIS_INTERVAL], --dis_interval [DIS_INTERVAL] specify display interval -t [AVG_THRESHOLD_TIME], --avg_threshold_time [AVG_THRESHOLD_TIME] display only when average request process time is greater than this value -T [THRESHOLD_TIME], --threshold_time [THRESHOLD_TIME] dump request life cycle when single request process time is greater than this value -r, --dump_raw dump every io request life cycle examples: ./alibiolatency # summarize block I/O latency(default display interval is 2s) ./alibiolatency -d sda3 # inspect specified device /dev/sda3 ./alibiolatency -i 2 # specify display interval, 2s ./alibiolatency -t 10 # display only when average request process time is greater than 10ms ./alibiolatency -T 20 # dump request life cycle when single request process time is greater than 20ms ./alibiolatency -r # dump every io request life cycle
Run the
man
command to query the description of the bcc tool:man bcc-alibiolatency