Tag Archives: timers

Samsung SM951 NVMe on Asus x99 Deluxe – Baseclock <> CPU strap magic

Samsung SM951 M.2 2280 MZVPV512
Samsung SM951 M.2 2280 MZVPV512

 

“I did buy a new little toy, the Samsung SM951 NVMe 512 GB M.2 SSD Drive.”

 

I tested the Samsung SM951 NVMe M.2 on Windows 7 and Windows 10 by using the M.2 slot on the motherboard and by using the M.2 addon card which comes shipped together with the Asus x99 Deluxe.

System:

  • Asus x99 Deluxe BIOS 1901 @ ~ 125.5 MHz Baseclock (while 125 MHz CPU strap)*
  • i7-5930K @ ~ 4.4 GHz, 125 MHz Strap, 1.31 Vcore, 1.24 Vcache, 1.24 Vsysagent
  • NV GTX 770
  • 16 GB Corsair DDR4 @ ~ 3 Ghz, 1.35 Vmem
  • 2x  SSD OCZ Vertex 2 (Sata2) (Raid0)
  • 2x  Seagate HDD  3 TB/HDD (Raid1)
  • PSU Corsair AX1200i (why the heck an AX1200i?)
  • Corsair Obsidian 450 D

 

*The ‘Baseclock’ and the ‘CPU strap’ will become more important over time in this SSD benchmark drama-post. I couldn’t think of the Baseclocks offset to the CPU strap affecting the benchmarks. At first i thought its overclocking on this motherboard in general, which affects the benchmarks.
Theres is an old problem known to Windows 8 respecting system timers and clocks leading to incorrect benchmarks. Seems that Windows 10 and 7 are affected too.

 

Driver

 

Asus x99 Deluxe M.2 slot populated with unrelated m.2 device. Image source: http://rog.asus.com
Asus x99 Deluxe M.2 slot populated with unrelated m.2 device. Image source: http://rog.asus.com
Asus Hyperkit M.2 Addon Card. Image source: http://rog.asus.com
Asus Hyperkit M.2 Addon Card. Image source: http://rog.asus.com

 

IMAG1047“No matter which OS or which PCIe slot i use, the SSD seems to be throttled or bottlenecked.”

 

 

 

“As soon as the Baseclock is higher than my CPU strap. The benchmarks do no longer represent the correct values!”

“Baseclock frequency below CPU strap frequency may result in the same behaviour”

“You can say that any offset between the CPU strap and Baseclock may result in “bogus” or shifted benchmarks”

 

 


The trip to find the cause for the benchmark results:

 

 

“A bad driver can also act as a bottleneck.”

 

First ATTO run on Windows 7 – smells like bottleneck.

The SM951 M.2 2280 MZVPV512 NVMe SSD is using the Asus x99 Deluxe onboard M.2  slot.

Some people may not be able to see the device on OS side (Win 7 !). And those people may make their way through the internet and find a “Hotfix” by Microsoft (Windows6.1-KB2990941-v3-x64). I did  install the Hotfix. It may work for you but you may not get 100% out of your device.

Because of the “bad” results i got, i did install Windows 10. I did hope that i can get the drivers off the SSD when installing a fully UEFI compatible OS. But …

 

atto_first_run_nvme_samsung_2280_951_512_GB
SM951 M.2 2280 MZVPV512 NVMe SSD, Baseclock @ 125.5 MHz, CPU strap 125 MHz, not system drive, connected using onboard M.2 slot

 

 

 

“There is a throttle …”

 

 

There is a throttle

Keep in mind that the SM951 NVMe model indeed is able to throttle itself to prevent overheating. What if this throttle mechanic is not working properly? Keep that in mind. It is possible …

… but it’s not  threating us here. 🙂

 

 

“Expectation”

 

First ATTO run on Windows 10 – smells like bottleneck.

…even with Windows 10 i still do seem to be using the NVMe drivers provided by Windows (or worse the previously installed Hotfix).

The SM951 M.2 2280 MZVPV512 NVMe SSD is using the Asus x99 Deluxe onboard M.2  slot. Comparing with other tests on the internet you expect read speeds > 2.2 GB/s.

 

atto_first_run_windows_10_nvme_samsung_2280_951_512_GB
SM951 M.2 2280 MZVPV512 NVMe SSD, Baseclock @ 125.5 MHz, CPU strap 125 MHz, not system drive, connected using onboard M.2 slot

 

Second ATTO run on Windows 10 – smells like bottleneck.

The SM951 M.2 2280 MZVPV512 NVMe SSD is using the Asus x99 Deluxe onboard M.2  slot. This time i did set x4 mode manually and did disable a couple unneccessary stuff in the BIOS to make sure nothing weird is going on there. With no reward. Same results.

 

atto_second_run_4x_mode_manually_set_windows_10_nvme_samsung_2280_951_512_GB
SM951 M.2 2280 MZVPV512 NVMe SSD, Baseclock @ 125.5 MHz, CPU strap 125 MHz, not system drive, connected using onboard M.2 slot

 

 

“Alternative”

 

 

Third ATTO run on Windows 10 – smells like bottleneck.

This time i did use the Hyperkit Card shipped with the Asus x99 Deluxe. Same results.

 

atto_third_run_pci_express_m.2_addon_card_manually_set_windows_10_nvme_samsung_2280_951_512_GB
SM951 M.2 2280 MZVPV512 NVMe SSD, Baseclock @ 125.5 MHz, CPU strap 125 MHz, not system drive, connected using M.2 addon card for PCIe

 

IMAG1047
ASUS M.2 addon card “Hyper” for PCIe 3.0

 

 

 

The drivers Windows 10

Just for the records. Unfortunately i did not make screenshots of the Windows 7 drivers. The MS drivers were mentioned already in the past when it led to problems with NVMe like this. But they do pretty well now. They improved it

Storage Controller

Windows 10 Device Manager-> Storage Controller->Standard or Basic NVM Express-Controller->Properties->Driver->Driver details

 

Image4

Storage Device

 

hw_drv_properties_nvme_drive_sm951_2280_mzvpv512_samsung

 

hw_list_properties_volume_f_nvme_samsung_2280_sm951

 

BUT

“It’s not the drivers fault”

 

But it turned out, that it is not the driver who is causing these “bad” results.

Silence.

 

“The drama …”

 

 

The relief – no bottleneck

It was the fact that the System was overclocked. As soon as i lowered the Baseclock back to 100 MHz. The results became better. The Baseclock was previously set to 125.5 Mhz. I then had read results > 2.2 GB/s and write results > 1.7 GB/s with SM951 SSD used as non-system drive. Unfortunately i did not make a screenshot of it. (What i did not think of here is, that the CPU strap also was set back to 100 MHz – the same frequency the Baseclock is running at)

Last ATTO run on Windows 10 @ 100 MHz Baseclock (system drive!)

However i then did configure the Samsung SM951 NVMe SSD as system drive. The performance results would be a bit better when it is not used as system drive.

 

samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_100_mhz_no_overclock
SM951 M.2 2280 MZVPV512 NVMe SSD, Baseclock @ 100 MHz, system drive !, connected using onboard M.2 slot

 

(I noticed the following before i finally discovered that the baseclock<>CPU strap offset is causing the shifted benchmarks, but i then ignored it because of the Anti Virust software which came out as a potential cause when configured to be super sensitive)

What’s left to say?

If you multiply the old results with (Baseclock of 125.5  MHz) with 1.255 you get results matching pretty well with the results of Baseclock of 100 MHz.

For example the 8 MB result of the first run:

1398442 Write     x     1.255 = 1755044,71
1717986 Read     x     1.255 = 2156072,43

 

  • Was the higher Baseclock really throttling or bottlenecking  the SSD?

 

  • Or is it just the benchmark not being aware of a higher Baseclock  and mucking up the results? Possible that the realtime clock is affected by Baseclock?

 

  • Will i ever be able to overclock and enjoy the Samsung SM951 NVMe performance at the same time?

 

Apart from ATTO i sure did run other benchmarks on the overclocked system and they sure came up with not the same results because they dont “measure” all the same way but they all left you thinking of either a bottleneck or throttle. I unfortunately made no screenshots of the runs before but i will present some with stock clock speeds and Samsung SM951 as system drive.

 

Samsung SM951 NVMe M.2 SSD as system drive Windows 10 @ 100 MHz Baseclock
samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_100_mhz_no_overclock_qd32_th1 samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_100_mhz_no_overclock_qd32_th6
CrystalDiskMark: Queue depth 32 Threads 1 CrystalDiskMark: Queue depth 32 Threads 6
samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_100_mhz_no_overclock_qd64_th12 samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_100_mhz_no_overclock_qd128_th12
CrystalDiskMark: Queue depth 64 Threads 12 CrystalDiskMark: Queue depth 128 Threads 12

As system drive and some disturbing stuff going on the whole time in the background the results are OK.  But to answer the questions of “How did the Baseclock affect the benchmarks?”  or “Will i ever be able to overclock and enjoy the Samsung SM951 NVMe performance at the same time?” we would’ve to pick another route.

 



As soon as the Baseclock is higher than my CPU strap. The benchmarks do no longer represent the correct values!

No matter if the ‘useplatformclock’ is enabled or not. The benchmark results do look like the SSD was throttled or bottlenecked as soon as the ‘Baseclock’ is higher than the ‘CPU strap’. I thought i revealed my Anti Virus software to be the root of al evil but it was not.

The realtimeclock RTC

Just for the records:
The value for useplatformclock was initially set to Yes on Win 10
The default value on Win 7 may be unset or No

This fact was one thing that concerned me that i was right following the Baseclock- / hwclock- / timer-way

 

bcdedit_useplatformclock_yes_windows_10_cmd_shell
‘bcdedit’ output while not a single parameter was handed over

I did play with this setting with overclocked and non overclocked system. But it took some days to finally notice that it has something to do with the ‘Baseclock’ and ‘CPU strap’. I did step away from this setting, when i thought it had something to do with the Anti Virus software. However this setting does not help to solve the problem on systems with not equal Baseclocks and CPU straps.

 

“Finally i could narrow down the cause but i couldn’t solve it yet.”

 

 



 

 

What i thought and wrote, when it seemed to be the Anti Virus software compromising the benchmark results. I trapped myself when i quick-overclocked the system again (by leaving Baseclock and CPU strap the same) to test different situations:

OK folks.. scratch all that

i tend to play now with “useplatformclock” (bcdedit) and overclock the system again. But guess what. Neither overclocking nor playing with useplatformclock variable did make any difference to the benchmarks.

 
But i think i revealed who was in charge for the performance trouble in the beginning …

 

… it was …

… my freaking Anti Virus software!

 

I did compare the useplatformclock setting of a Windows 7 system to my Windows 10 system to make sure that this could be a true reason for the mucked up results and it turned out to really be a root for the mess. You now need to know that i went from Windows 7 to Windows 10, just because of this performance mess, by upgrading Windows 7 to Windows 10. There was a chance that some important settings wern’t migrated or merged correctly. Upgrading does leave room for a lot of mistakes at this level. Later on i made a complete fresh install of Windows 10 and this time i installed it directly on the SM951 NVMe SSD, but as i already mentioned, the results didnt change anymore no matter what i touched.

  • Because the Baseclock and CPU strap are equal during this period i never had any shifted benchmark results again

I was freaking out because i really need to know the cause for the performance drama at the beginning to wipe out any missconfigurations and make sure every component is running fine and smooth and then when i was almost giving up i took the Anti Virus software into account.

It’s not that i never was thinking about it but i did underestimate it and i also wasn’t aware anymore of the configuration of my Anti Virus software.

  • Apart from the Baseclock and CPU strap there was only one more thing that could form a bridge  between all these odd things.

As tired as i might be the Anti Virus software was the only thing that could “transport” or “connect” the performance mess from one OS to another – if you are changing the OS by upgrading it. The complete fresh install i mentioned earlier wasn’t affected by the Anti Virus software, because i didn’t install it, but the old Windows 7 and the upgraded Windows 10 installations both had the same Anti Virus installation running.

  • But they also had a Baseclock CPU strap offset

So i went ahead and installed the Anti Virus software. With said software running in the background i still did get normal results. Again that did hit me hard. I thought i got it. But in the same moment, i realized that i didn’t change it’s configuration.

With the configuration window infront of me the settings, i usually made, came into my mind and i set them according previous installations of this Anti Virus software. And guess what. I finally could reproduce the ‘BAD RESULTS’. With its settings set back to defaults, everything is fine. No performance issues.

THE END

samsung_sm951_nvme_2280_512_gb_windows_10_system_disk_baseclock_125_mhz_no_overclock_qd32_th4
CrystalDiskMark: Samsung SM951 NVMe M.2, Queue depth 32 Threads 4, Baseclock 125 MHz, system drive !, onboard M.2 (Baseclock and CPU strap are equal here!)

 

 

I know what some people will say. 🙂 All i can respond is, that i am aware of Anti * ware digging into things and some other things. My problem in this case relies more in the experience i had with this Anti Virus software. I’m using it for years now and never had any issues like denied or failed or interrupted installations due to scanning attempts or  or any kind of interruption that would ask for my attention or a closer look. It always had been the perfect Anti Virus software for me. “Install it and forget it”. Now it got its revenge for all the years not paying attention, not treating it like a tamagotchi and not taking care of it.

I promise i will treat you better now, dear Anti Virus.

But i can say now that i was right not believing my Anti Virus software to be the one compromising the results.