1*c29d5175SchristosThe following are examples of seeksize.d. 2*c29d5175Schristos 3*c29d5175Schristosseeksize.d records disk head seek size for each operation by process. 4*c29d5175SchristosThis allows up to identify processes that are causing "random" disk 5*c29d5175Schristosaccess and those causing "sequential" disk access. 6*c29d5175Schristos 7*c29d5175SchristosIt is desirable for processes to be accesing the disks in large 8*c29d5175Schristossequential operations. By using seeksize.d and bitesize.d we can 9*c29d5175Schristosidentify this behaviour. 10*c29d5175Schristos 11*c29d5175Schristos 12*c29d5175Schristos 13*c29d5175SchristosIn this example we read through a large file by copying it to a 14*c29d5175Schristosremote server. Most of the seek sizes are zero, indicating sequential 15*c29d5175Schristosaccess - and we would expect good performance from the disks 16*c29d5175Schristosunder these conditions, 17*c29d5175Schristos 18*c29d5175Schristos# ./seeksize.d 19*c29d5175SchristosTracing... Hit Ctrl-C to end. 20*c29d5175Schristos^C 21*c29d5175Schristos 22*c29d5175Schristos 22349 scp /dl/sol-10-b63-x86-v1.iso mars:\0 23*c29d5175Schristos 24*c29d5175Schristos value ------------- Distribution ------------- count 25*c29d5175Schristos -1 | 0 26*c29d5175Schristos 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 726 27*c29d5175Schristos 1 | 0 28*c29d5175Schristos 2 | 0 29*c29d5175Schristos 4 | 0 30*c29d5175Schristos 8 |@ 13 31*c29d5175Schristos 16 | 4 32*c29d5175Schristos 32 | 0 33*c29d5175Schristos 64 | 0 34*c29d5175Schristos 128 | 2 35*c29d5175Schristos 256 | 3 36*c29d5175Schristos 512 | 4 37*c29d5175Schristos 1024 | 4 38*c29d5175Schristos 2048 | 3 39*c29d5175Schristos 4096 | 0 40*c29d5175Schristos 8192 | 3 41*c29d5175Schristos 16384 | 0 42*c29d5175Schristos 32768 | 1 43*c29d5175Schristos 65536 | 0 44*c29d5175Schristos 45*c29d5175Schristos 46*c29d5175Schristos 47*c29d5175SchristosIn this example we run find. The disk operations are fairly scattered, 48*c29d5175Schristosas illustrated below by the volume of non sequential reads, 49*c29d5175Schristos 50*c29d5175Schristos# ./seeksize.d 51*c29d5175SchristosTracing... Hit Ctrl-C to end. 52*c29d5175Schristos^C 53*c29d5175Schristos 54*c29d5175Schristos 22399 find /var/sadm/pkg/\0 55*c29d5175Schristos 56*c29d5175Schristos value ------------- Distribution ------------- count 57*c29d5175Schristos -1 | 0 58*c29d5175Schristos 0 |@@@@@@@@@@@@@ 1475 59*c29d5175Schristos 1 | 0 60*c29d5175Schristos 2 | 44 61*c29d5175Schristos 4 |@ 77 62*c29d5175Schristos 8 |@@@ 286 63*c29d5175Schristos 16 |@@ 191 64*c29d5175Schristos 32 |@ 154 65*c29d5175Schristos 64 |@@ 173 66*c29d5175Schristos 128 |@@ 179 67*c29d5175Schristos 256 |@@ 201 68*c29d5175Schristos 512 |@@ 186 69*c29d5175Schristos 1024 |@@ 236 70*c29d5175Schristos 2048 |@@ 201 71*c29d5175Schristos 4096 |@@ 274 72*c29d5175Schristos 8192 |@@ 243 73*c29d5175Schristos 16384 |@ 154 74*c29d5175Schristos 32768 |@ 113 75*c29d5175Schristos 65536 |@@ 182 76*c29d5175Schristos 131072 |@ 81 77*c29d5175Schristos 262144 | 0 78*c29d5175Schristos 79*c29d5175Schristos 80*c29d5175Schristos 81*c29d5175Schristos 82*c29d5175SchristosI found the following interesting. This time I gzipp'd the large file. 83*c29d5175SchristosWhile zipping, the process is reading from one location and writing 84*c29d5175Schristosto another. One might expect that as the program toggles between 85*c29d5175Schristosreading from one location and writing to another, that often the 86*c29d5175Schristosdistance would be the same (depending on where UFS puts the new file), 87*c29d5175Schristos 88*c29d5175Schristos# ./seeksize.d 89*c29d5175SchristosTracing... Hit Ctrl-C to end. 90*c29d5175Schristos^C 91*c29d5175Schristos 92*c29d5175Schristos 22368 gzip sol-10-b63-x86-v1.iso\0 93*c29d5175Schristos 94*c29d5175Schristos value ------------- Distribution ------------- count 95*c29d5175Schristos -1 | 0 96*c29d5175Schristos 0 |@@@@@@@@@@@@ 353 97*c29d5175Schristos 1 | 0 98*c29d5175Schristos 2 | 0 99*c29d5175Schristos 4 | 0 100*c29d5175Schristos 8 | 7 101*c29d5175Schristos 16 | 4 102*c29d5175Schristos 32 | 2 103*c29d5175Schristos 64 | 4 104*c29d5175Schristos 128 | 14 105*c29d5175Schristos 256 | 3 106*c29d5175Schristos 512 | 3 107*c29d5175Schristos 1024 | 5 108*c29d5175Schristos 2048 | 1 109*c29d5175Schristos 4096 | 0 110*c29d5175Schristos 8192 | 3 111*c29d5175Schristos 16384 | 1 112*c29d5175Schristos 32768 | 1 113*c29d5175Schristos 65536 | 1 114*c29d5175Schristos 131072 | 1 115*c29d5175Schristos 262144 |@@@@@@@@ 249 116*c29d5175Schristos 524288 | 1 117*c29d5175Schristos 1048576 | 2 118*c29d5175Schristos 2097152 | 1 119*c29d5175Schristos 4194304 | 2 120*c29d5175Schristos 8388608 |@@@@@@@@@@@@@@@@@@ 536 121*c29d5175Schristos 16777216 | 0 122*c29d5175Schristos 123*c29d5175Schristos 124*c29d5175Schristos 125*c29d5175Schristos 126*c29d5175SchristosThe following example compares the operation of "find" with "tar". 127*c29d5175SchristosBoth are reading from the same location, and we would expect that 128*c29d5175Schristosboth programs would generally need to do the same number of seeks 129*c29d5175Schristosto navigate the direttory tree (depending on caching); and tar 130*c29d5175Schristoscausing extra operations as it reads the file contents as well, 131*c29d5175Schristos 132*c29d5175Schristos# ./seeksize.d 133*c29d5175SchristosTracing... Hit Ctrl-C to end. 134*c29d5175Schristos^C 135*c29d5175Schristos 136*c29d5175Schristos PID CMD 137*c29d5175Schristos 22278 find /etc\0 138*c29d5175Schristos 139*c29d5175Schristos value ------------- Distribution ------------- count 140*c29d5175Schristos -1 | 0 141*c29d5175Schristos 0 |@@@@@@@@@@@@@@@@@@@@ 251 142*c29d5175Schristos 1 | 0 143*c29d5175Schristos 2 |@ 8 144*c29d5175Schristos 4 | 5 145*c29d5175Schristos 8 |@ 10 146*c29d5175Schristos 16 |@ 10 147*c29d5175Schristos 32 |@ 10 148*c29d5175Schristos 64 |@ 9 149*c29d5175Schristos 128 |@ 11 150*c29d5175Schristos 256 |@ 14 151*c29d5175Schristos 512 |@@ 20 152*c29d5175Schristos 1024 |@ 10 153*c29d5175Schristos 2048 | 6 154*c29d5175Schristos 4096 |@ 7 155*c29d5175Schristos 8192 |@ 10 156*c29d5175Schristos 16384 |@ 16 157*c29d5175Schristos 32768 |@@ 21 158*c29d5175Schristos 65536 |@@ 28 159*c29d5175Schristos 131072 |@ 7 160*c29d5175Schristos 262144 |@ 14 161*c29d5175Schristos 524288 | 6 162*c29d5175Schristos 1048576 |@ 15 163*c29d5175Schristos 2097152 |@ 7 164*c29d5175Schristos 4194304 | 0 165*c29d5175Schristos 166*c29d5175Schristos 167*c29d5175Schristos 22282 tar cf /dev/null /etc\0 168*c29d5175Schristos 169*c29d5175Schristos value ------------- Distribution ------------- count 170*c29d5175Schristos -1 | 0 171*c29d5175Schristos 0 |@@@@@@@@@@ 397 172*c29d5175Schristos 1 | 0 173*c29d5175Schristos 2 | 8 174*c29d5175Schristos 4 | 14 175*c29d5175Schristos 8 | 16 176*c29d5175Schristos 16 |@ 24 177*c29d5175Schristos 32 |@ 29 178*c29d5175Schristos 64 |@@ 99 179*c29d5175Schristos 128 |@@ 73 180*c29d5175Schristos 256 |@@ 78 181*c29d5175Schristos 512 |@@@ 109 182*c29d5175Schristos 1024 |@@ 62 183*c29d5175Schristos 2048 |@@ 69 184*c29d5175Schristos 4096 |@@ 73 185*c29d5175Schristos 8192 |@@@ 113 186*c29d5175Schristos 16384 |@@ 81 187*c29d5175Schristos 32768 |@@@ 111 188*c29d5175Schristos 65536 |@@@ 108 189*c29d5175Schristos 131072 |@ 49 190*c29d5175Schristos 262144 |@ 33 191*c29d5175Schristos 524288 | 20 192*c29d5175Schristos 1048576 | 13 193*c29d5175Schristos 2097152 | 7 194*c29d5175Schristos 4194304 | 5 195*c29d5175Schristos 8388608 |@ 30 196*c29d5175Schristos 16777216 | 0 197*c29d5175Schristos 198