{"id":464,"date":"2026-10-14T15:01:33","date_gmt":"2026-10-14T15:01:33","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2015\/12\/12\/20-iostat-commands-examples-in-linux-unix\/"},"modified":"2026-10-14T15:01:33","modified_gmt":"2026-10-14T15:01:33","slug":"20-iostat-commands-examples-in-linux-unix","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/20-iostat-commands-examples-in-linux-unix\/","title":{"rendered":"iostat Command Guide for Linux: 20 Practical Examples for CPU and Disk I\/O Troubleshooting"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <code>iostat<\/code> command helps Linux and Unix operators quickly understand <strong>CPU usage<\/strong> and <strong>disk I\/O behavior<\/strong>. If you troubleshoot slow applications, storage latency, or noisy hosts, this guide gives you practical commands and a repeatable workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2015-12-12; fully revised and updated.<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2015\/12\/iostat-commands-examples-in.png\" alt=\"iostat command examples\"\/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">What iostat reports<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>iostat<\/code> (part of the <code>sysstat<\/code> package on Linux) reports two main categories:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>CPU statistics<\/strong> (overall CPU state percentages such as user, system, idle, and iowait).<\/li><li><strong>Device I\/O statistics<\/strong> (throughput, operation rates, queueing, and utilization for block devices and partitions).<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Linux builds usually read from kernel-provided interfaces such as <code>\/proc\/stat<\/code>, <code>\/proc\/diskstats<\/code>, <code>\/proc\/partitions<\/code> (older kernels), and <code>\/sys<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">iostat vs related system tools<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool<\/th><th>Best for<\/th><th>Typical use<\/th><\/tr><\/thead><tbody><tr><td><code>iostat<\/code><\/td><td>Disk and CPU I\/O view<\/td><td>Find busy disks, high await, high device utilization<\/td><\/tr><tr><td><code>vmstat<\/code><\/td><td>Memory and scheduler behavior<\/td><td>Check run queue, swap activity, system pressure<\/td><\/tr><tr><td><code>mpstat<\/code><\/td><td>Per-CPU analysis<\/td><td>Detect imbalanced CPU load and per-core hotspots<\/td><\/tr><tr><td><code>pidstat<\/code><\/td><td>Per-process resource usage<\/td><td>Map host-level pressure to specific processes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Install and verify iostat on Linux<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On most Linux distributions, <code>iostat<\/code> is shipped by <code>sysstat<\/code>. You usually do not need a root shell for reading stats, but package installation needs elevated privileges.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\"># Check whether iostat is already installed<\/span>\nwhich iostat\n\n<span class=\"hljs-comment\"># Show version (sysstat version)<\/span>\niostat -V\n\n<span class=\"hljs-comment\"># RHEL\/CentOS\/Amazon Linux<\/span>\nsudo yum install -y sysstat\n\n<span class=\"hljs-comment\"># Fedora and newer RHEL-family systems<\/span>\nsudo dnf install -y sysstat\n\n<span class=\"hljs-comment\"># Debian\/Ubuntu<\/span>\nsudo apt-get update &amp;&amp; sudo apt-get install -y sysstat\n\n<span class=\"hljs-comment\"># RPM-based verification<\/span>\nrpm -qa | grep -i sysstat<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Workflow: triage storage bottlenecks with iostat<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Alert high app latency] --> B[Run iostat -x 1 5]\n    B --> C{High await or high util}\n    C -- no --> D[Check CPU memory network with mpstat vmstat]\n    C -- yes --> E[Identify busiest device]\n    E --> F[Correlate with process tools]\n    F --> G[Apply fix tune rebalance or scale]\n    G --> H[Re-run iostat and validate]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">20 practical iostat commands (Linux sysstat)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following examples are Linux-focused. Option availability can vary by <code>sysstat<\/code> version and by Unix flavor, so confirm with <code>man iostat<\/code> on your host.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>#<\/th><th>Command<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td><code>iostat<\/code><\/td><td>Default CPU and device report (first report is since boot).<\/td><\/tr><tr><td>2<\/td><td><code>iostat -c<\/code><\/td><td>CPU statistics only.<\/td><\/tr><tr><td>3<\/td><td><code>iostat -d<\/code><\/td><td>Device statistics only.<\/td><\/tr><tr><td>4<\/td><td><code>iostat -x<\/code><\/td><td>Extended device statistics.<\/td><\/tr><tr><td>5<\/td><td><code>iostat -t<\/code><\/td><td>Add timestamp to each report.<\/td><\/tr><tr><td>6<\/td><td><code>iostat -m<\/code><\/td><td>Show throughput in MB\/s units.<\/td><\/tr><tr><td>7<\/td><td><code>iostat -k<\/code><\/td><td>Show throughput in kB\/s units.<\/td><\/tr><tr><td>8<\/td><td><code>iostat 2<\/code><\/td><td>Refresh every 2 seconds until interrupted.<\/td><\/tr><tr><td>9<\/td><td><code>iostat 2 3<\/code><\/td><td>Refresh every 2 seconds, 3 reports total.<\/td><\/tr><tr><td>10<\/td><td><code>iostat -d 1 5<\/code><\/td><td>Device-only report every second, 5 times.<\/td><\/tr><tr><td>11<\/td><td><code>iostat -x 1 5<\/code><\/td><td>Extended report every second, 5 times.<\/td><\/tr><tr><td>12<\/td><td><code>iostat -p sda<\/code><\/td><td>Show device and partition stats for one device.<\/td><\/tr><tr><td>13<\/td><td><code>iostat -p ALL<\/code><\/td><td>Show all devices and partitions.<\/td><\/tr><tr><td>14<\/td><td><code>iostat -x sda 1 5<\/code><\/td><td>Extended stats focused on one device over time.<\/td><\/tr><tr><td>15<\/td><td><code>iostat -N<\/code><\/td><td>Display device-mapper or LVM-friendly names (if supported).<\/td><\/tr><tr><td>16<\/td><td><code>iostat -c -d<\/code><\/td><td>Explicitly request CPU and device sections.<\/td><\/tr><tr><td>17<\/td><td><code>iostat -t -x -m 2 10<\/code><\/td><td>Timestamped extended report in MB\/s every 2 seconds.<\/td><\/tr><tr><td>18<\/td><td><code>iostat -y 1 5<\/code><\/td><td>Skip first boot-average report (if supported).<\/td><\/tr><tr><td>19<\/td><td><code>iostat -z 1 5<\/code><\/td><td>Hide idle devices in output (if supported).<\/td><\/tr><tr><td>20<\/td><td><code>iostat -V<\/code><\/td><td>Show iostat\/sysstat version information.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\"># Example live triage session<\/span>\niostat -x -m <span class=\"hljs-number\">1<\/span> <span class=\"hljs-number\">10<\/span>\niostat -p ALL <span class=\"hljs-number\">1<\/span> <span class=\"hljs-number\">5<\/span>\nmpstat <span class=\"hljs-number\">1<\/span> <span class=\"hljs-number\">5<\/span>\nvmstat <span class=\"hljs-number\">1<\/span> <span class=\"hljs-number\">5<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">How to read key extended fields<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field (common names)<\/th><th>What it indicates<\/th><th>Troubleshooting hint<\/th><\/tr><\/thead><tbody><tr><td><code>r\/s<\/code>, <code>w\/s<\/code><\/td><td>Read\/write operations per second<\/td><td>Useful for understanding IOPS demand pattern.<\/td><\/tr><tr><td><code>rkB\/s<\/code>, <code>wkB\/s<\/code><\/td><td>Read\/write throughput<\/td><td>Compare bandwidth demand across devices.<\/td><\/tr><tr><td><code>await<\/code><\/td><td>Average time for I\/O completion<\/td><td>Rising await often means latency pressure.<\/td><\/tr><tr><td><code>avgqu-sz<\/code> or <code>aqu-sz<\/code><\/td><td>Average queue depth<\/td><td>Growing queue with rising await suggests contention.<\/td><\/tr><tr><td><code>%util<\/code><\/td><td>Device busy time percentage<\/td><td>Sustained high values can indicate saturation.<\/td><\/tr><tr><td>CPU <code>%iowait<\/code><\/td><td>CPU time waiting on I\/O<\/td><td>High iowait with high disk latency points to storage bottlenecks.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Compatibility notes across Linux and Unix variants<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Older tutorials often mix Linux and non-Linux <code>iostat<\/code> options. For example, some Unix variants document flags not present in current Linux <code>sysstat<\/code> builds. Always validate command syntax with the local man page before automating.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Capture repeated samples (<code>interval count<\/code>) instead of relying on one snapshot.<\/li><li>Use <code>-x<\/code> during incidents to see latency and queue behavior, not just throughput.<\/li><li>Correlate host-level metrics with process-level tools (<code>pidstat<\/code>, <code>iotop<\/code>) before changing configuration.<\/li><li>Record timestamps (<code>-t<\/code>) when comparing with application and database logs.<\/li><li>Treat field names as version-dependent; confirm on each distribution baseline.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to use iostat to monitor CPU and storage performance on Linux systems. This revised guide covers installation, 20 practical commands, metric interpretation, and a troubleshooting workflow.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4957],"tags":[378,632,1283,1284,1285,1288,1287,460,1286,169],"class_list":["post-464","post","type-post","status-publish","format-standard","hentry","category-linux","tag-commands","tag-examples","tag-iostat","tag-iostat-command","tag-iostat-command-examples","tag-iostat-command-line","tag-iostat-commands-tutorials","tag-linux","tag-linux-iostat-command","tag-unix"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":5,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"predecessor-version":[{"id":79348,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/464\/revisions\/79348"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}