17 hours ago
I'm trying to find out if we are getting an expected I/O's for writing & / or reading data from SCSI or SAN LUN?
In this test environment, I have a Ubuntu 14.04.5 LTS server and have got a single LUN on a single path from SAN storage team on an FC port.
we requested for 6000 I/O's however, it's been an issue that we strongly feel that the requested I/O's are not received on that SAN LUN but the storage team is saying they have given those many I/O's.
So to prove them that there is something wrong from their end I need to know how can I capture or check how much I/O's are received in actual against requested?
can someone help me with this? Thanks in advance & sorry for the poor English.
30 hours ago
For live monitoring of read/write throughput to specific disks or partitions, you can use the tool nmon. It displays the absolute data rates per partition/disk as well as estimates how busy each one is in percent, including a nice bar chart.
You can install it using:
sudo apt install nmon
After that invoke it either as nmon and then press D to show the disk monitor, or run it as NMON=d nmon to directly display the disk monitor without further input. The refresh rate is 2 seconds by default, but you can manually change that using the -s parameter, e.g. nmon -s 1 for 1 second. To quit nmon, press Q or Ctrl+C.
nmon -s 1
Here's an example how it looks:
ânmonâ14gâââââââââââââââââââââHostname=type40mark3ââRefresh= 6secs âââ16:26.08ââ
â Disk I/O ââ/proc/diskstatsââââmostly in KB/sâââââWarning:contains duplicatesââ
âDiskName Busy Read WriteMB|0 |25 |50 |75 100|â
âsda 0% 0.0 0.0|> |â
âsda1 0% 0.0 0.0|> |â
âsda2 0% 0.0 0.0|> |â
âsda3 0% 0.0 0.0|> |â
âsda4 0% 0.0 0.0|> |â
âsda5 0% 0.0 0.0|> |â
âsdb 49% 230.5 0.0|RRRRRRRRRRRRRRRRRRRRRRRRR >â
âsdb1 15% 75.0 0.0|RRRRRRRR > |â
âsdb2 4% 16.7 0.0|RR > |â
âsdb3 0% 2.7 0.0|R> |â
âsdb4 30% 135.9 0.0|RRRRRRRRRRRRRRR > |â
âsdb5 0% 0.0 0.0|> |â
âsdb6 0% 0.0 0.0|> |â
âdm-0 0% 0.0 0.0|> |â
âTotals Read-MB/s=460.7 Writes-MB/s=0.1 Transfers/sec=469.0 â
Alternatively, if you just want to do a "speed test" of any disk, you can use the hdparm tool:
sudo hdparm -t /dev/sda
This will read from the specified device (here /dev/sda) for about 3 seconds and display the data rate afterwards. Note that it performs a "buffered read", but without using the disk cache. Use -T instead of -t to test read speeds from the disk's cache.
You can not test or determine write speeds this way though.
8 hours ago
I/O performance will be affected by block device configuration. An excellent reference for block device tuning is here which covers settings like queue depth, I/O scheduler, read ahead, and partition alignment. Note that the page shows defaults for their storage array; yours may be quite different.
Get you block device configuration so you can reset them after testing:
Set block device parameters for testing:
echo noop > /sys/block/lun0/queue/scheduler
Queue depth is whatever the block device advertises and for sequential read tests ot doesn't matter, simple NOOP FIFO I/O scheduler, and we don't care about read ahead far streaming reads.
Check IOPS in a non-destructive way:
dd if=/dev/lun0 of=/dev/null bs=4k iflag=direct status=progress
Where /dev/lun0 is the multipathed virtual disk device. iflags=direct bypasses your server's cache.
6,000 IOPS with a 4k block size should give a throughput of 24.57 MiB/sec. Actual IOPS is throughput/blocksize. Random read IOPS will be worse on any medium with seek times. Use 4k block size becuause the test is for IOPS, not throughput,
6,000 IOPS @ 4k should be 24.57 MiB/sec (6,000 * 4 KiB).