I recently purchased a high performance Windows desktop computer with the belief that the upgrades in memory, CPU, and storage would show a measurable increase in SAS performance.
When running some of the standard daily SAS tasks, the performance seemed sluggish. After timing the tasks on an older, off the shelf Staples computer, the high performance computer is about forty percent slower.
Both computers have been imaged with the same version of Windows 10 and the same version of SAS. We use a software deployment application so that every computer gets the same install.
I have created a "not very good" benchmark program that creates and then sorts a billion record SAS dataset. The high performance computer is still ten to twenty-five percent slower than the standard desktop using this program.
Any suggestions on what could be the cause of the performance bottleneck?
I can only guess, that you have some setting that is different between the 2 machines.
That could be anything from a SAS setting, some OS setting, etc.
My first question would be, can you create a test outside of SAS (e.g. Python) that does something similar and compare the 2 environments
If that is slower too, then chances are it is not SAS that's the issue.
If that is not slower, then I recommend you open a TS track for this question.
Please include the following:
- SAS Version you are running (the following code will report SAS version information)
%put &sysvlong ;
%put &sysscpl ;
%put &syssite ;
- Registry Report (*.txt files) for each server, please clearly name the report files to reflect the server it was executed on.
- Detailed description of the issue you are encountering
- Any supporting log files containing errors
Both computers have been imaged with the same version of Windows 10
Windows needs to have fitting software drivers to make best use of the hardware; if those are not found, it uses its generic drivers and loses a lot of performance. Just installing an OS image configured (and probably optimized) for a different computer will often not get the best performance.
Compare the SAS logs from your benchmark program. If the total system CPU time on both computers is similar, then the difference in real time between them is most likely down to IO performance. Download the SAS IO performance tool SASIOTEST for Windows, run it on both PCs and compare the results.
The CPU time is two minutes faster and the real time is twenty seconds faster on the older/slower computer.
Using the SASIOTEST utility, the I/O throughput is nearly identical between the computers using small data sizes but large data sizes show the I/O throughput is two to six times faster on the new computer.
That's interesting. So what steps in your benchmark program are actually slower on the new computer versus the old computer? PROC SORT, DATA step or something else? Given IO appears to be as fast or faster on the new PC I'd expect sorting to be faster also. I'd suggest it could well be worth tracking your performance problem with SAS Tech Support so they can diagnose this further.
EDIT: That suggests that the CPU in your new machine is slower than your old machine which is pretty surprising. Maybe compare CPU models? Make sure you close all other apps when you are benchmarking. Check Windows Task Manager. Are there any rogue processes hogging resources?
This is what my PC looks like:
Thanks for your feedback. It seems all SAS code is running slower on the new machine.
The old machine is an i7-10700 @ 2.9GHz 8 Core 16 Processors.
The new machine is an Xeon W-2265 @ 3.5GHz 12 Core 24 Processors.
Just on clock speed, I would expect a 20% increase in performance but the Xeons really shine in multi-threaded applications.
The new machine also has quadruple the memory of the old machine and a higher class SSD.
Both machines have the same network utilities installed. I am unable to disable or turn these off.
On the new machine, with all applications closed, there is 0% CPU and 8% Memory utilization.
I suggest you open Windows Task Manager and run your SAS benchmark program. Do this on both your old and new PCs. In the performance tab of Task Manager check the CPU details. Are there any significant differences in the way your processes are being spread across the CPU cores? Perhaps the Intel CPU is multi-threading the SAS processes better than the Xeon?
@sasguy wrote:
The CPU time is two minutes faster and the real time is twenty seconds faster on the older/slower computer.
Looks like your "high performance" computer has a slower and less performant CPU combined with newer (probably SSD) storage. Or it's a driver issue like I mentioned earlier.
Compare the CPU types and clock rates of both computers.
Thanks for your feedback.
The old machine is an i7-10700 @ 2.9GHz 8 Core 16 Processors.
The new machine is a Xeon W-2265 @ 3.5GHz 12 Core 24 Processors.
The new machine also has quadruple the memory of the old machine and a higher class SSD.
Your "old" processor is in fact newer than the Xeon by about half a year 🙂
My next steps would be:
If the Xeon outperforms the i7 as expected in the benchmark, and no differences in SETINIT and OPTIONS are found, open a track with SAS Technical Support, because then I don't think anybody here can help you.
The SAS Users Group for Administrators (SUGA) is open to all SAS administrators and architects who install, update, manage or maintain a SAS deployment.
SAS technical trainer Erin Winters shows you how to explore assets, create new data discovery agents, schedule data discovery agents, and much more.
Find more tutorials on the SAS Users YouTube channel.