none
VS2012 SDV increasing processor threads in UI does not seem to take effect - how to do this? RRS feed

  • Question

  • I used the SDV UI to change the configuration values to increase performance on a high end server with 24 available processor threads and 24GB of RAM.  On the SDV UI "Configure" tab I set:

    1. Processor threads 2-> 23

    The SDV test has been running 150+ minutes and reports 1080 tests have run.  (A completed test run with the default of 2 processor threads reported 1940 tests  and took 11hr 32 minutes to run).  The progress bar is about 12% complete now with 23 processor threads enabled and it reports 0/150 checks complete.  When I look at the active processes with Task Manager:Performance, I only see 2 instances of slam.exe and/or bebop.exe, which seem to be the main processes for SDV.  So it doesn't seem that the SDV run is using more that two processor threads.

    After 150 minutes, the "checked progress"  quickly moved to 44/150 checked. but these were all "Not Applicable" and I still only see one staticdv.exe and one cl.exe or slam.exe and total CPU in use is only 4% (~ one of the 24 possible processor threads) and only ~15% of RAM is in use. 

    When checking the SVD UI configuration tab, the increased performance values show to how I set them, but they are greyed out - presumably because the test is in progress.  So I expect they are properly set.

    Is there another way get more pararellism in SDV processing?

    Passing a paraemeter to msbuild, setting an environment variable or a registry setting would be acceptable.

    Thanks,  Jim

    Saturday, June 8, 2013 5:15 PM

Answers

  • Hi I work on the SDV team.

    If you only see 2 instances of slam.exe running and then you see 44/150 checked this probably means the precondition phase has completed and precondition rules have run on your driver and established that 44 out of 150 rules do not apply. After this phase SDV needs to compile a harness for the remaining 108 rules this is the reason you are seeing cl.exe run. Note this compile phase is not run in parallel.

    Note the precondition  rule phase runs in parallel and some rule finish quickly other take a while longer and that would explain why you only seeing 2 instances of slam.exe run.

    Right now we don't have any other way of increasing performance of the compile phase which seems to be taking a lot of time for your driver.

    How large is your driver?

    Is it a KMDF driver?

    I future we may run the compile phase parallel to reduce overall runtime.

    Thanks Conal.

    • Marked as answer by Jim Developer Saturday, June 8, 2013 7:08 PM
    Saturday, June 8, 2013 6:30 PM

All replies

  • Hi I work on the SDV team.

    If you only see 2 instances of slam.exe running and then you see 44/150 checked this probably means the precondition phase has completed and precondition rules have run on your driver and established that 44 out of 150 rules do not apply. After this phase SDV needs to compile a harness for the remaining 108 rules this is the reason you are seeing cl.exe run. Note this compile phase is not run in parallel.

    Note the precondition  rule phase runs in parallel and some rule finish quickly other take a while longer and that would explain why you only seeing 2 instances of slam.exe run.

    Right now we don't have any other way of increasing performance of the compile phase which seems to be taking a lot of time for your driver.

    How large is your driver?

    Is it a KMDF driver?

    I future we may run the compile phase parallel to reduce overall runtime.

    Thanks Conal.

    • Marked as answer by Jim Developer Saturday, June 8, 2013 7:08 PM
    Saturday, June 8, 2013 6:30 PM
  • Great to meet someone from the team.  SDV seems like an amazing tool, but takes a while to get familiar with.
    The driver being analyzed with SDV is 7,477 lines of .c and .h files.
    I found that after 2hr:50min once the rules check phase begins SDV does spawn up to 23 bebop.exe processes, so the checks run in parallel.

    You are correct - it must be spending 2hr50min in the various complie phases. 

    This is concerning since this driver is only 7,500 lines.  We have 13 kernel libraries and 12 drivers to run SDV on and many drivers are more like 50,000 lines.  It would be great if the compile phase could also run in parallel. I will beta test it if available.

    Thanks,  Jim

    Saturday, June 8, 2013 7:08 PM
  • Conal,

    The 7,500 line test driver is a WDM driver.

    Perhaps you can confirm that SDV doesn't support kernel libraries that are built as TARGETTYPE=EXPORT_DRIVER? 

    I have an earlier post on that from a few days ago that Toby... answered, but I don't see that actually mentioned in the SDV documentation he points to and having a response from a SDV team member would be great.

    Thanks, Jim

    Saturday, June 8, 2013 7:14 PM