First off, have you separated your OS, Database file and Log file onto different physical volumes?
Have you assigned an upper limit for the SQL Server memory usage ('max server memory' setting)? In an ideal world, you can give it all the memory available, and it will release on demand to the OS and and when needed. In the real world this sometimes doesn't happen and a server with loads of memory can be sluggish.
Recommened settings (rule of thumb)
Physical RAM | MaxServerMem Setting (MB)
How to Identify Microsoft SQL Server Memory Bottlenecks
SIMS's queries are often horrendous - look at the activity monitor and query plan to see, including the index hints.
I've tried optimizing for ad-hoc queries, but that showed no improvements at all.
Well anyway, usual caveats apply, but here are a few scripts from my toolbag. Some are ones I collected so credits to original authors.
Check the number of 'runnable tasks'. In other words tasks that have exhausted their quantum, been swapped out, but cannot be serviced because of lack of resources of server. You'll see one row per CPU. This is a simple snapshot, so you'll need to run it several times to get a picture.
--If you are seeing lots of SOS_SCHEDULER_YIELD in your Wait States, that is a very stong indicator of CPU pressure.
-- You can run the DMV query to confirm that:
-- Check SQL Server Schedulers to see if they are waiting on CPU
SELECT scheduler_id, current_tasks_count, runnable_tasks_count
WHERE scheduler_id < 255
--If you see the runnable tasks count above zero, that is cause for concern, and if you see it in double digits for any length of time, that is cause for extreme concern!
-- SQL Server 2008 and R2 Memory Related Queries
-- Glenn Berry
-- October 2010
-- Twitter: GlennAlanBerry
-- Instance Level queries
-- Good basic information about memory amounts and state (SQL 2008 and 2008 R2)
SELECT total_physical_memory_kb, available_physical_memory_kb,
-- You want to see "Available physical memory is high"
-- SQL Server Process Address space info (SQL 2008 and 2008 R2)
--(shows whether locked pages is enabled, among other things)
-- You want to see 0 for process_physical_memory_low
-- You want to see 0 for process_virtual_memory_low