Poor Avg Read Write Wait times on SAN

  • I am having very high read wait times on our OLTP system and would like to prove to our SAN vendor that we need to make changes. I recently modified our disk configuration but the changes didn’t make any difference. Our current configuration is as follows:

    Primary data file - dedicated 8 disk raid 10 lun

    Index file (which contains all of the non-clustered indexes) - dedicated 6 disk raid 10 lun

    Log file – dedicated 4 disk raid 10 lun

    TempDB – dedicated 4 disk raid 10 lun.

    Here are my performance numbers:

    Primary Data File (50 GB)

    Avg Read Wait -113 ms

    Avg Write Wait - 16 ms

    Index File (50 GB)

    Avg Read Wait - 119 ms

    Avg Write Wait - 53 ms

    Log File

    Avg Read Wait - 9 ms

    Avg Write Wait - 3 ms

    TempDB - split into 4 files but here is the average

    Avg Read Wait - 4 ms

    Avg Write Wait - 30 ms.

    Our system does about 10 million reads and 2.5 million writes a day.

    My main concern are the read wait times on the Primary and Index files. I also am concerned with the Write wait times on the Index and TempDB files. My understanding is that all wait times should be less than 20 ms.

    As mentioned, I would like some comparison numbers to show my SAN vendor. Can you please run the following code and post the results?

    Let me know if any one has suggestions on how to get better performance outside of the SAN configuration. Are there any different SQL setting, configurations that I could implement to improve read write performance?

    Thanks for the help.

    select db_name(mf.database_id) as databaseName, mf.physical_name,

    num_of_reads, io_stall_read_ms, AvgReadWait=io_stall_read_ms/num_of_reads,

    num_of_writes, io_stall_write_ms, AvgWriteWait=io_stall_write_ms/num_of_writes,

    size_on_disk_bytes

    from sys.dm_io_virtual_file_stats(null,null) as divfs

    join sys.master_files as mf

    on mf.database_id = divfs.database_id

    and mf.file_id = divfs.file_id

    WHERE db_name(mf.database_id) in ('EnterDatabaseName','tempdb')

  • SJ, you mention the LUNs are dedicated, and that's normal... but are the physical spindles dedicated or are they shared to other systems so you can get a higher spindle count?

    You may have multi-LUN contention on the spindles.


    - Craig Farrell

    Never stop learning, even if it hurts. Ego bruises are practically mandatory as you learn unless you've never risked enough to make a mistake.

    For better assistance in answering your questions[/url] | Forum Netiquette
    For index/tuning help, follow these directions.[/url] |Tally Tables[/url]

    Twitter: @AnyWayDBA

  • The physical spindles are dedicated. There is not any sharing. Thanks

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply