JavaScript disabled! You'll have a better experience here if you enable it.

Jan 302014
 

th— This post is unfinished and should be considered early BETA version until further notice. I am hoping for some feedback / input.
*** I have had several conversations with folks who are or have purported to be knowledgeable in this subject. To date they have all backed out or disappeared once I request to publish their statements and names. That all changed today as I received input from an expert in regards to the useplatformclock tweak.
IMHO it is very important to read what he has to say. The full email exchange is at the bottom of this post.

****Edit 22DEC2014
Folks, I’ve done all I can with these tweaks.
I cannot reproduce results others (mostly overclockers) are seeing with this.
This does not mean some folks are not seeing a positive effect, simply that I’m unable to reproduce it.
Please read the 2 email conversations at the end of this article.
For me, this issue is now closed.


3 purported performance tweaks benchmarked.
They are: useplatformclock, tscsyncpolicy, and disabledynamictick.

Opening Statement
These tweaks have been mentioned in some places (and to me) as performance tweaks. I set out to see if they were.

The Tweaks, Defined
bcdedit /set useplatformclock true
bcdedit /set tscsyncpolicy Enhanced
bcdedit /set disabledynamictick yes

The commonality they share is they are setting that involve the system clock.
In general Windows will use the best timer your hardware supports and may use a mix of timers.
“Best” does not always mean fastest. Fastest can mean errors.
These settings can harm battery life.
As I understand it, Windows 8.1 defaults to invariant TSC when hardware supports it.

These tweaks are applied via Command Prompt (Admin).
To remove them:
bcdedit /deletevalue useplatformclock
bcdedit /deletevalue tscsyncpolicy
bcdedit /deletevalue disabledynamictick

To view bcdedit settings:
bcdedit /enum

http://msdn.microsoft.com/en-us/library/windows/hardware/ff542202%28v=vs.85%29.aspx
useplatformclock [ yes | no ]
Forces the use of the platform clock as the system’s performance counter.
Note This option should only be used for debugging.

tscsyncpolicy [ Default | Legacy | Enhanced ]
Controls the times stamp counter synchronization policy. This option should only be used for debugging.
Note The option is available starting in Windows 8 and Windows Server 2012.

disabledynamictick [ yes | no ]
Enables and disables dynamic timer tick feature. The option is available starting with Windows 8 and Windows Server 2012.
Note This option should only be used for debugging.


The Tweaks, More Info

If you also use Linux on your machine you can check system messages for which timer your system supports.
From my machine:
2013-12-01T07:31:10.607644-05:00 XXXXXXXXXX kernel: [ 0.000000] hpet clockevent registered
2013-12-01T07:31:10.607645-05:00 XXXXXXXXXX kernel: [ 0.000000] tsc: Fast TSC calibration using PIT
2013-12-01T07:31:10.607645-05:00 XXXXXXXXXX kernel: [ 0.001000] tsc: Detected 2693.799 MHz processor
2013-12-01T07:31:10.607753-05:00 XXXXXXXXXX kernel: [ 0.036518] TSC deadline timer enabled
2013-12-01T07:31:10.608522-05:00 XXXXXXXXXX kernel: [ 1.818067] tsc: Refined TSC clocksource calibration: 2693.880 MHz
2013-12-01T07:31:10.608528-05:00 XXXXXXXXXX kernel: [ 2.818095] Switched to clocksource tsc

Useplatformclock
a.k.a – HPET tweak
Forces Windows to use hardware timer instead of OS default.

Tscsyncpolicy
Very little information exists at Microsoft.com on tscsyncpolicy:
https://www.google.com/#filter=0&q=tscsyncpolicy+site:microsoft.com

Disabledynamictick
Very little information exists at Microsoft.com on disabledynamictick:
https://www.google.com/#q=disabledynamictick+-social+-answers+site:microsoft.com
The only legitimate use for this I have seen is as a fix for hardware issues that has since been fixed.
Example:
Issue: http://withinwindows.com/within-windows/2012/06/28/workaround-for-windows-8-freezing-issues
Fixed: http://withinwindows.com/within-windows/2012/07/10/hotfix-available-for-windows-8-freezing-issues


Places I Found Info:
The Windows Timestamp Project – Microsecond Resolution Time Services for Windows
Microsoft: Timers, Timer Resolution, and Development of Efficient Code
Wikipedia – High Precision Event Timer
Wikipedia – Time Stamp Counter
Oracle – High Resolution Timesource (Linux)
A Negative Ping Value, Hang Condition, Poor Performance or Machine Checks may be experienced on IBM System X Multinode Servers running Microsoft Windows 2008 R2 – IBM System x
Microsoft – Guidelines For Providing Multimedia Timer Support (old info but informative)
Intel 64 and IA-32 Architectures Software Developer’s Manual

Interesting Forum Posts
http://www.neowin.net/forum/topic/1075781-tweak-enable-hpet-in-bios-and-os-for-better-performance-and-fps/
http://forums.guru3d.com/showthread.php?s=21dd8ddd4aa9dc89114ceec5f271c275&t=368604
http://rog.asus.com/forum/showthread.php?23113-HPET-High-Precision-Event-Timer&s=d1869792a05a1efea5d936c63e0908a9

Tools
LatencyMon

WinTimerTester 1.1


Benchmarks
Hardware: My Laptop (Intel i7)
OS: Windows 8.1

PCMark8 Pro – Creative Conventional 3.0 (external monitor)
Download & Info
(click score to see details at futuremark page)

PCMark8Score
baseline3589
useplatformclock3538
tscsyncpolicy3589
disabledynamictick3589

ttweaks_pcmark8

3dMark Pro – Fire Strike Extreme 1.1 (external monitor)Download
Download & Info
(click score to see details at futuremark page)

3dMarkScore
baseline791
useplatformclock792
tscsyncpolicy792
disabledynamictick791

ttweaks_3dmark

 

Passmark 8.0
Download
Setup: Laptop plugged in to external monitor. Forced Passmark to use Nvidia card instead of Intel. (full scores here)

 Passmark baseline useplatformclock tscsyncpolicy disabledynamictick
 Rating 3720.8 3590.0 3728.2 3619.2

 

Nvidia TimerTiming
Download

16 Tests. Without useplatform tweak is faster 14 of 16.

 Before useplatform tweak. After useplatform tweak
Report file for timing the various timers.*** Key number is the avg time.
The smaller this number, the faster the timer.
QueryPerformanceFrequency() freq = 0 2630752
method 0:
QueryPerfCntr..() 100 times
tot: 0 3
avg: 0.030000
avg time: 1.14036e-008
method 0:
QueryPerfCntr..() 500 times
tot: 0 14
avg: 0.028000
avg time: 1.06433e-008
method 0:
QueryPerfCntr..() 1000 times
tot: 0 27
avg: 0.027000
avg time: 1.02632e-008
method 0:
QueryPerfCntr..() 10000 times
tot: 0 279
avg: 0.027900
avg time: 1.06053e-008method 1:
GetTickCount() 100 times
tot: 0 1
avg: 0.010000
avg time: 3.80119e-009
method 1:
GetTickCount() 500 times
tot: 0 4
avg: 0.008000
avg time: 3.04096e-009
method 1:
GetTickCount() 1000 times
tot: 0 31
avg: 0.031000
avg time: 1.17837e-008
method 1:
GetTickCount() 10000 times
tot: 0 79
avg: 0.007900
avg time: 3.00294e-009method 2:
TimeGetTime() 100 times
tot: 0 16
avg: 0.160000
avg time: 6.08191e-008
method 2:
TimeGetTime() 500 times
tot: 0 22
avg: 0.044000
avg time: 1.67253e-008
method 2:
TimeGetTime() 1000 times
tot: 0 42
avg: 0.042000
avg time: 1.5965e-008
method 2:
TimeGetTime() 10000 times
tot: 0 406
avg: 0.040600
avg time: 1.54328e-008method 3:
Pentium internal high-freq cntr() 100 times
tot: 0 3
avg: 0.030000
avg time: 1.14036e-008
method 3:
Pentium internal high-freq cntr() 500 times
tot: 0 11
avg: 0.022000
avg time: 8.36263e-009
method 3:
Pentium internal high-freq cntr() 1000 times
tot: 0 20
avg: 0.020000
avg time: 7.60239e-009
method 3:
Pentium internal high-freq cntr() 10000 times
tot: 0 192
avg: 0.019200
avg time: 7.29829e-009
Report file for timing the various timers.*** Key number is the avg time.
The smaller this number, the faster the timer.
QueryPerformanceFrequency() freq = 0 14318180
method 0:
QueryPerfCntr..() 100 times
tot: 0 1079
avg: 10.790000
avg time: 7.53587e-007
method 0:
QueryPerfCntr..() 500 times
tot: 0 5205
avg: 10.410000
avg time: 7.27048e-007
method 0:
QueryPerfCntr..() 1000 times
tot: 0 10331
avg: 10.331000
avg time: 7.2153e-007
method 0:
QueryPerfCntr..() 10000 times
tot: 0 103280
avg: 10.328000
avg time: 7.21321e-007method 1:
GetTickCount() 100 times
tot: 0 33
avg: 0.330000
avg time: 2.30476e-008
method 1:
GetTickCount() 500 times
tot: 0 40
avg: 0.080000
avg time: 5.5873e-009
method 1:
GetTickCount() 1000 times
tot: 0 68
avg: 0.068000
avg time: 4.74921e-009
method 1:
GetTickCount() 10000 times
tot: 0 457
avg: 0.045700
avg time: 3.19175e-009method 2:
TimeGetTime() 100 times
tot: 0 136
avg: 1.360000
avg time: 9.49841e-008
method 2:
TimeGetTime() 500 times
tot: 0 167
avg: 0.334000
avg time: 2.3327e-008
method 2:
TimeGetTime() 1000 times
tot: 0 284
avg: 0.284000
avg time: 1.98349e-008
method 2:
TimeGetTime() 10000 times
tot: 0 2284
avg: 0.228400
avg time: 1.59517e-008method 3:
Pentium internal high-freq cntr() 100 times
tot: 0 35
avg: 0.350000
avg time: 2.44444e-008
method 3:
Pentium internal high-freq cntr() 500 times
tot: 0 72
avg: 0.144000
avg time: 1.00571e-008
method 3:
Pentium internal high-freq cntr() 1000 times
tot: 0 125
avg: 0.125000
avg time: 8.73016e-009
method 3:
Pentium internal high-freq cntr() 10000 times
tot: 0 1148
avg: 0.114800
avg time: 8.01778e-009

Conclusion
Notes:
1 – Since I am not experiencing any stuttering or lagging issues I can only attest to the performance impact. You should fully update Windows as many of these issues have reportedly been fixed.
2 – When viewing info on this subject on the web (especially forum posts), anecdotal evidence suggests that the effect of these tweaks may be hardware dependant. I’m unsure what would drive this variation (bad hardware, BIOS, drivers???). I’ve only tested these tweaks on my laptop.
3 – I understand that these tweaks can show improved latency numbers. I cannot see where this is translating into any performance benefit.
4 – Latency can influence things like audio recording. Most likely real-time high-end type use. I’ve not tested this.
5 – Although it would take far more benchmarks across many different types of hardware, it seems if the useplatformclock tweak has any effect it is negative.
(On my laptop PCMark 8, Passmark show slightly lower scores. It gets spanked by TimerTiming.)
6 – I’m not an engineer or developer. Do with this info as you see fit.

My results indicate that on a computer not experiencing issues these tweaks have no performance benefit.


Email from an expert ( he is a high-level software engineer):

– – – – Begin Email Conversation – – – –
Hi Eric,

I came across your Tweak site and saw some interesting tests regarding some tweaks. I noticed that one of the tweaks you tested was related to the PlatformClock.

bcdedit /set useplatformclock true
https://tweakhound.com/2014/01/30/timer-tweaks-benchmarked/

FWIW, I wanted to provide some additional insight as I’ve been involved with this since 2008 R2 when the Stamp Counter (TSC)was (Re)-introduced to Windows. The PlatformClock parameter / tweak is not meant to “improve” performance per say, it’s meant for stability and compatibility purposes which can (and will) improve performance over use of the TSC when enabled on / within the correct (Server) configuration environment.

You may recall that traditionally Windows (as do most x86 based OSs) function on the assumption / use of a Single Clock Domain for a given server, however with the ability of servers to be physically “scaled” (connected together) to create a larger “multinode” server (IE – 2, 3, 4, 5, 6, 7 or 8 node), we have a problem where each server has it’s own local “clock”. This creates a “multi-clock” domain which in and of itself is not bad, however, the “clocks” are Not synchronized across all nodes (unless Hardware clock synchronization is implemented which is very difficult/involved to implement) therefore there can be clock skew / drift between nodes & processors (other than Node 0) which can lead to thread scheduling and timing issues which at minimum can lead to performance problems in addition to other strange & bizarre behavior (poor network & disk performance, hang conditions, etc. etc. etc.).

The problem is encountered within a multi-clock domain beginning in 2008 R2 when the TSC was re-introduced as the default Clock (as mentioned above) Vs the use of the HPET (or Power Management (ACPI / PMclock)) Clock that prior OS versions used. The TSC is very fast and reliable but in using the TSC as the default Source Clock, the OS assumes a Single clock source. Depending upon which node the RDTSC thread executes, clock synchronization may / can become skewed resulting in thread scheduling problems and issues such as is mentioned above.

This said, to alleviate this potential problem on some older servers and certain multi-node scalable server platforms, “bcdedit /set useplatformclock true” should be implemented to circumvent these potential problems. Note: Even if the default system (platform) clock is HPET, ACPI / PMclock, etc, Windows must be explicitly told to use the Platform Clock else TSC will be used.

I wrote the following Knowledge Base (Retain Tip) article back in 2011 as a result of problems encountered when TSC was re-introduced in 2008 R2. Please note that these issues are not limited to IBM but can impact any vendor, system / server on which a multi-clock domain environment exists:
A Negative Ping Value, Hang Condition, Poor Performance or Machine Checks may be experienced on IBM System X Multinode Servers running Microsoft Windows 2008 R2 – IBM System x

The following is a good general article from MS related to Time Stamps and there are other on the web as well:
Acquiring high-resolution time stamps

Regards,
Ron Arndt

– – – – My Reply – – – –

Hi Ron,
Thank you very much for your highly informative email.
As far as it applies to desktops and gaming in particular what is your expert opinion of the tweak in question?
Also I would like to add what your email to the article, with your permission.
If you want to revise it in any way that is fine,
Thanks,
Eric Vaughan

– – – – His Reply – – – –

Hi Eric,

You may add the contents of the email and formatted as you see fit (IE some detail might cause confusion so polish / trim as needed) …

From a Desktop / Gaming standpoint, there should be no need to use the useplatformclock tweak within a Desktop / Laptop / Workstation environment unless there are known problems with the system using the TSC that could not be resolved within the vendor’s BIOS/UEFI code (which should be a known and documented issue within the vendor’s support forums, etc.).

In general, TSC is much faster for the OS and Apps to utilize than the other methods which should provide better overall performance by avoiding additional latencies due to additional overhead of the other clock counter methods.

This said, it is possible that depending upon the era of the HW platform (desktop, laptop, workstation, etc) that there may be some stability issues of some systems running Win7 / 2008 R2 (due to HW / FW and OS (TSC) implementations) being within a transitional period of time where a system may have better stability when using a system’s default (or configured platform clock within BIOS/UEFI) which is not the TSC (HPET, ACPI/PM_Timer) so stability is also a performance consideration.

In short, the TSC provides the lowest overhead which can and does translate to lower overhead / latency generally resulting in better performance and therefore the use of the TSC for Windows 2008 R2 (Windows 7) and later should remain as the default clock source unless known issues or problems are encountered.

Also, you might notice more of a difference in performance when testing single processor (socket) and single core processor packages Vs multi-socket / multi-core processor packages and configurations. I believe some of the more current desktops / workstations or Main Boards have more than one processor socket & core per processor which may be an interesting test behavior as we see the personal systems become more like the servers of a few years ago.

Regards,
Ron Arndt
– – – – End Email Conversation – – – –
 
– – – – Begin Email Conversation 2 – – – –
From JS:
I like your article on this very much, but you neglected to mention the aspect of overclocking and it’s effects on timing.
For example, if I overclock my FSB via SetFSB with the default timer, WinTimerTester shows that the longer I run it, the more out of sync QueryPerformanceCounter and GetTickCount get.
This causes severe problems in some games, notably “Battlefield: Bad Company 2”. I’m only able to play it for a few minutes before the game gets horribly out of sync and is unplayable.
If I set useplatformclock to true, I don’t have this problem. I get a near perfect 1.000 ratio in WinTimerTester while overclocked, and those games don’t get out of sync anymore.
More info here, http://forum.notebookreview.com/gaming-software-graphics-cards/569893-must-read-setfsb-o-c-game-problems-fixed.html
Video – Crysis 3 – 30% Framerate and Performance Boost, and FPS Cap Removal [120Hz.Net – HyperMatrix]
– – – – End Email Conversation 2 – – – –

Nov 072013
 

ie11logoIE 11 for Windows 7 is out.
IE 11 is the default for Windows 8.1.
I expect this to show up in Windows Update for Windows 7 but hasn’t yet.
Announcement: IE11 for Windows 7 Globally Available for Consumers and Businesses
Microsoft: Internet Explorer Page
IE 11 Welcome Page
Internet Explorer 11 for Windows 7 (32-bit)
Internet Explorer 11 for Windows 7 64-bit Edition and Windows Server 2008 R2 64-bit Edition
Internet Explorer 11 Language Packs for Windows 7 and Windows Server 2008 R2
Internet Explorer Administration Kit 11

 Comments Off on Internet Explorer 11 for Windows 7  Tagged with:
Oct 092013
 

cleanmgrWindows 8 disk cleanup introduced a new cleanup option called Windows Update Cleanup.
Yesterdays Windows updates included an update to add this option to Windows 7.
This cleanup option can regain you significant disk space in Windows 7 and Windows 8 will benefit as updates pile up.
This article will show you how to use this option in both Windows 7 and 8.
Continue reading »

Aug 022013
 

no8I’m not advocating it, but I understand some people may want to downgrade Windows 8. Here is how to do it:
See: Microsoft – Understanding Downgrade Rights

Downgrade only supported from from Windows 8 Pro to Windows 7 Pro (or Vista Biz, LOL).

Steps:
1 – You must have Windows 8 Pro (with license key)
2 – You’ll need a Windows 7 DVD or ISO.
You can download ISO’s here:
Windows 7 Professional with SP1 32-bit
Windows 7 Professional with SP1 64-bit
To create a DVD from an ISO use CDBurnerXP.
To create a bootable flash drive see: Windows 7 USB/DVD download tool. (If you have issues with this see here.)
3 – Install Windows 7 Pro. Do a clean install via instructions here: Installing Windows 7
4 – Activation. When entering key you will probably need to use the “Activation Support phone number” as per the Understanding Downgrade Rights above. Explain what you are doing. They will give you an activation code.
5 – That’s it!

Feb 272013
 

freeware baby!
(last updated 31 August, 2014)
This is a Windows 7 version of the previous articles I wrote called The Freeware XP Machine, and The Vista Free Machine. This version is Windows 7 specific and has several additions and deletions of software I have tried based on recommendations of readers (and THANKS for the suggestions).
This is not a comprehensive list of freeware apps, there are lists like that all over the place. This is a list of apps I use and/or recommend. The goal of this list is to hopefully make your computing experience a little better and less expensive. I know that many of you already use a lot of these programs but perhaps this list would be something you might want to pass on to friends and family to help them out.
Continue reading »

Feb 232013
 

th

Tweaking Windows 7 has been updated.

It’s been over 3 years since the first version of this particular guide.

I figured it was time I got off my lazy ass and update it.

I hope you enjoy it!

***Important Note – If you’ve purchased the Tweak Guide in the past, please contact me for your free update. Please include the Name /email info you order it with.

FYI – Up next is a complete revision of all the freeware guides and a Windows 8 edition of same.

 Comments Off on Tweaking Windows 7, Version 2.0  Tagged with: