Section 4.2. Random vs. Sequential IO


4.2. Random vs. Sequential I/O

We frequently use the terms random and sequential while discussing disk behavior. Random activity means the disk accesses blocks from random locations on disk, usually incurring a time penalty while the disk heads seek and the disk itself rotates. Sequential activity means the disk accesses blocks one after the other, that is, sequentially.

The following demonstrations compare random to sequential disk activity and illustrate why recognizing this behavior is important.

4.2.1. Demonstration of Sequential Disk Activity

While a dd command runs to request heavy sequential disk activity, we examine the output of iostat to see the effect. (The options and output of iostat are covered in detail in subsequent sections.)

# dd if=/dev/rdsk/c0d0s0 of=/dev/null bs=64k $ iostat -xnz 5                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device     1.1    0.7   16.2   18.8  0.3  0.0  144.4    2.7   0   0 c0d0     0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.2   0   0 jupiter:vold(pid564)                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b  device   819.6    0.0 52453.3    0.0  0.0  1.0    0.0    1.2   1  97  c0d0                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device   820.9    0.2 52535.2    1.6  0.0  1.0    0.0    1.2   1  97 c0d0                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device   827.8    0.0 52981.2    0.0  0.0  1.0    0.0    1.2   1  97 c0d0 ... 


The disk was 97% busy, for which it delivered over 50 Mbytes/sec.

4.2.2. Demonstration of Random Disk Activity

Now for random activity, on the same system and the same disk. This time we use the filebench tool to generate a consistent and configurable workload.

filebench> load randomread filebench> set $nthreads=64 filebench> run 600  1089: 0.095: Random Read Version 1.8 05/02/17 IO personality successfully loaded  1089: 0.096: Creating/pre-allocating files  1089: 0.279: Waiting for preallocation threads to complete...  1089: 0.279: Re-using file /filebench/bigfile0  1089: 0.385: Starting 1 rand-read instances  1090: 1.389: Starting 64 rand-thread threads  1089: 4.399: Running for 600 seconds... $ iostat -xnz 5                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device     1.0    0.7    8.6   18.8  0.3  0.0  154.2    2.8   0   0 c0d0     0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.2   0   0 jupiter:vold(pid564)                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b  device   291.6    0.2 1166.5    1.6  0.0  1.0    0.0    3.3   0  97  c0d0                     extended device statistics     r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device   290.0    0.0 1160.1    0.0  0.0  1.0    0.0    3.3   0  97 c0d0 ... 


This disk is also 97% busy, but this time it delivers around 1.2 Mbytes/sec. The random disk activity was over 40 times slower in terms of throughput. This is quite a significant difference.

Had we only been looking at disk throughput, then 1.2 Mbytes/sec may have been of no concern for a disk that can pull 50 Mbytes/sec; in reality, however, our 1.2 Mbytes/sec workload almost saturated the disk with activity. In this case, the percent busy (%b) measurement was far more useful, but for other cases (storage arrays), we may find that throughput has more meaning.




Solaris Performance and Tools(c) Dtrace and Mdb Techniques for Solaris 10 and Opensolaris
Solaris Performance and Tools: DTrace and MDB Techniques for Solaris 10 and OpenSolaris
ISBN: 0131568191
EAN: 2147483647
Year: 2007
Pages: 180

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net