Skip to content

Using iostat utility to find I/O bottlenecks in Linux

Iostat is a command-line tool that can be used to monitor input/output (I/O) statistics of a Linux system. It can be used to identify I/O bottlenecks in a Linux system, which can be caused by various factors such as slow disk I/O, high network traffic, or a high number of I/O operations.

Installing Iostat:

Iostat is not installed by default on most Linux systems. However, it can be easily installed using the package manager of your Linux distribution. On Ubuntu and Debian, you can use the following command to install iostat:

sudo apt-get install sysstat

On Red Hat/Oracle Linux and Fedora, you can use the following command to install iostat:

sudo yum install sysstat

 

Using Iostat:

Once iostat is installed, you can use it to monitor I/O statistics of your system. The basic syntax of the iostat command is:

iostat [options] [interval [count]]

The options specify the type of statistics to display, the interval specifies the time interval between two reports, and the count specifies the number of reports to display.

Identifying I/O Bottlenecks:

To identify I/O bottlenecks using iostat, you need to look at the following statistics:

%util: This is the percentage of time the disk was busy during the interval. A high value indicates a bottleneck.

await: This is the average time for an I/O operation to be completed. A high value indicates a bottleneck.

svctm: This is the average service time for an I/O operation. A high value indicates a bottleneck.

%iowait: This is the percentage of time the CPU spent waiting for I/O operations to complete. A high value indicates a bottleneck.

r/s and w/s: These are the number of read and write operations per second. A high value indicates a bottleneck.

 

Analyzing the Results:

Once you have collected the statistics, you need to analyze the results to determine if there is an I/O bottleneck. If the %util, await, svctm, and %iowait values are high, it indicates that there is a bottleneck. Also, if the r/s and w/s values are high, it indicates that the disk is busy.

Some common causes of I/O bottlenecks include slow disk I/O, high network traffic, and a high number of I/O operations.

Let’s say that you are running a web server on a Linux system and you are experiencing slow performance. You suspect that the slow performance is caused by an I/O bottleneck. To confirm this, you can use iostat to monitor the I/O statistics of the system.

1. To view the I/O statistics of your system, you can run the following command:

iostat

This command will display the current I/O statistics of your system. By default, iostat will display the statistics for all the devices and partitions on your system.

You can also specify a specific device or partition to monitor by using the -d or -p option. For example, to monitor the I/O statistics of the sda1 partition, you can use the following command:

iostat -p sda1

 

You can also specify the interval and count for the statistics. For example, to view the I/O statistics every 2 seconds for a total of 5 times, you can use the following command:

iostat 2 5

You can also specify the statistics that you want to display. For example, to display only the device statistics and the CPU statistics, you can use the following command:

iostat -d -c

Some of the key statistics to look at when identifying I/O bottlenecks include %util, await, svctm, %iowait, r/s, and w/s. For example, to display these statistics you can use the following command:

iostat -x -d 2 5

 

There are other useful commands also that can be used to find I/O bottlenecks on a Linux system:

vmstat: vmstat is a command that can be used to monitor virtual memory statistics. It provides information on system activity, including the number of processes, memory usage, and I/O statistics.

vmstat -d 2 5

This command will display disk statistics every 2 seconds for a total of 5 times.

dstat: dstat is a versatile replacement for vmstat, iostat, netstat and ifstat. It can report resource statistics for the entire system, all individual processors, and specific processes.

dstat -d

This command will display disk statistics for the entire system.

iotop: iotop is a command that can be used to find the processes that are causing high I/O on a Linux system. It is similar to the top command, but it is specifically designed to monitor I/O activity.

iotop -o

This command will display the processes that are causing high I/O, sorted by the amount of I/O they are generating.

pidstat: pidstat is a command that can be used to monitor the process-level statistics. It can be used to monitor I/O statistics, memory usage, and other process-level statistics.

pidstat -d -p <PID>

This command will display disk statistics for a specific process, identified by its PID.

sar: sar is a command that can be used to collect, report and save system activity information. It can be used to monitor various system performance statistics, including I/O statistics, memory usage, and CPU usage.

sar -b 2 5

This command will display I/O statistics every 2 seconds for a total of 5 times.

All of these commands can be used to find I/O bottlenecks on a Linux system, and the specific command that you choose to use will depend on the information that you are trying to gather and your specific needs.

Brijesh Gogia
Leave a Reply