Prev: 701 errors (Insufficient system memory to run this query)
Next: question regarding slow performance an PAGEIOLATCH_SH locks on sql
From: ianwr on 7 Dec 2007 08:28 Hi, I wondered in anyone can help with the following problem that i'm experiencing, i'll try to provide as much info as possible and any suggestions would be appreciated. I have just started at an organsiation and there seems to be slow performance maybe on the san on a 64bit itanium dual core machine. 4 CPUs are being showed to sql server, it also has 16gb of RAM. I'll start with the configuration of the SAN. After speaking to the SAN guy, rather than carve the SAN up into different area's for san Logs/Data etc they have gone for the approach of spreading a Vdisk across as many spindles as possible (All 145 of them). So the area that is presented to the SQL Server according the the SAN guys is a vraid 5 stripe made up of all 145 disks which are all 72gb fibre-channel disks. This storage is not just made available to sql server but also made available to other apps as well that need storage. Having read the manufactres best practice on setting this up there is a valid argument for doing this. The bandwidth from the SAN is 2Gb fibre, with each computer that uses the SAN having 2Gb fibre cards. Clearly, that could act as a bottle-neck. But, there's nothing that can be done about it according to the SAN guy. Needless to say, any changes on the SAN are pretty much going to be out of the question as far as he's concerned but i think performance isn't that good for the type of box they have and the SAN its attached to. The 2nd thing i'll explain is the setup of the database in question, firstly whoever set it up split the database into 16 different file of 4 filegroups so the table that i'm selecting to is in one filegroup split over 4 files and the the table selecting from is in another filegroup made up of another 4 files. These are placed on the same physical disk made up of the SAN LUN with 145 spindles. Anyway when i do a select from a sales table which has various group bys and then insert the results into a blank table with no indexes it can take over 2hours for 200k rows which i find very slow. When i look at the sysprocesses table i am getting various waits as follows :- 72 4272 0 0x0042 900 PAGEIOLATCH_SH 6:9:2192094 72 4272 0 0x0069 0 SLEEP_TASK 72 4272 0 0x0000 0 SOS_SCHEDULER_YIELD The process seams to be going inbetween a PAGEIOLATCH and SOS_SCHEDULER_YIELD a few times per second. Running the following to get io stalls gives the following :- Select * from sys.dm_io_virtual_file_stats (6,7) Select * from sys.dm_io_virtual_file_stats (6,8) Select * from sys.dm_io_virtual_file_stats (6,9) Select * from sys.dm_io_virtual_file_stats (6,10) gives results like :- 6 7 1708539850 1562421 82465128448 294572225 26431 2455404544 12438340 307010565 44907495424 0x0000000000000954 It worries me that when the process is on the PAGEIOLATCH the wait can be over 1000. Is it normal for the wait to be this long and what would be the best way to prove one way or another if the configuration of the san is causing this kind of performance??? Thanks for any suggestions in advance Ian.
From: ianwr on 7 Dec 2007 09:12
ps. The perf mon stats we are seeing are as follows :- Avg Disk Read/Sec are between 0.06 and 0.3 on the select partion when the routine starts up. which i think must be a little slow. Disk Read/Sec is around 170 |