Category: Performance

Disable Cortana altogether
article #1161, updated 2256 days ago

This will make any Windows 10 machine run much faster, at the cost of the fancy Cortana query and search component.

  1. In REGEDIT, browse to HKEY_LOCAL_MACHINE, Software, Policies, Microsoft, Windows.
  2. Create key “Windows Search” no quotes.
  3. Create DWORD32 “AllowCortana” no quotes. Make sure the value is zero (0).
  4. Create DWORD32 “AllowCortanaAboveLock” no quotes. Make sure the value is zero (0).
  5. Create DWORD32 “DisableWebSearch” no quotes. Make sure the value is one (1).
  6. Create DWORD32 “ConnectedSearchUseWeb” no quotes. Make sure the value is zero (0).
  7. Create DWORD32 “ConnectedSearchUseWebOverMeteredConnections” no quotes. Make sure the value is zero (0).
  8. Reboot.

Categories:      

==============

Strip 8dot3 / 8.3 Filenames from a Running Windows for Performance
article #1144, updated 2301 days ago

Very interesting, not tested by this writer yet; appears to be able to handle registry to some extent. One can turn off creation of new 8.3 filenames, and one can also strip existing 8.3 filenames from a filesystem and from the registry:

https://ss64.com/nt/fsutil.html

Categories:      

==============

Spybot Anti-Beacon
article #1139, updated 2315 days ago

This tool decommissions quite the list of Windows 7 through 10 telemetry inclusions by which Microsoft informs itself of our behavior, using quite a lot of our RAM, CPU, and bandwidth in so doing.

https://www.safer-networking.org/spybot-anti-beacon/

Brought to this forefront by the Beard, Mike Hunsinger.

Categories:      

==============

Windows 10 does not always automatically detect and TRIM SSDs
article #1134, updated 2321 days ago

Found this today.

  • A two-month-old laptop with a SanDisk SD8SN8U-256G-1006 SSD for its C: drive, Windows 10.
  • Windows had recognized the drive as a standard hard drive, not an SSD, and the laptop had slowed down a lot very recently.
  • Installed the SanDisk SSD Dashboard, ran TRIM, and scheduled weekly TRIM operations.
  • Laptop much faster.

Categories:      

==============

Turn Off Share Caching
article #1132, updated 2339 days ago

One can save a lot of data confusion and server-side load, by turning off share caching on the server side. This prevent client machines from using Offline Files to drive human beings up the wall! :-)

TOSC.VBS turns off share caching on all of the shares it can, except for dollar shares. It needs to be run as administrator.

Categories:      

==============

Disable Cortana telemetry
article #1122, updated 2381 days ago

This can help a lot:

netsh advfirewall firewall add rule name="SearchUI.exe Telemetry" dir=out action=block program="%SystemRoot%\SystemApps\Microsoft.Windows.Cortana_cw5n1h2txyewy\SearchUI.exe" description="This rule prevents the Cortana telemetry. (This will also disable Cortana voice recognition.)"

Categories:      

==============

Hardware performance info from Microsoft
article #1010, updated 2720 days ago

Some very interesting data:

https://technet.microsoft.com/en-us/windows-server-docs/networking/technologies/network-subsystem/net-sub-performance-tuning-nics

Categories:      

==============

Disable 8.3 Filename Generation
article #978, updated 2847 days ago

If your software is all new, let’s say 2013 and after, it probably makes sense to disable 8.3 filename generation, for a nice kick of speed.

To do it once for all drives, just do this:

fsutil behavior set Disable8dot3 1

If you want to do it for one select drive, say E:, first do a registry edit in

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

you’ll want to change NtfsDisable8dot3NameCreation to 2. Then you will need to reboot, and in an administrative command prompt:

fsutil behavior set E: 1

and reboot again, and it’s done.

Categories:      

==============

Internal QoS on Linux for General Speed and Reliability
article #972, updated 2860 days ago

Prioritizing certain kinds of data, can help a lot in general on Linux. Here’s the FireQOS configuration I just set up on this 802.11g-wireless laptop:

DEVICE=wlan0
INPUT_SPEED=54000kbit
OUTPUT_SPEED=54000kbit
LINKTYPE="ethernet"
interface $DEVICE world-in input rate $INPUT_SPEED
interface $DEVICE world-out output rate $OUTPUT_SPEED

interface $DEVICE world-in input rate $INPUT_SPEED $LINKTYPE balanced
	class priority commit 10%
		match tcp port 22,3389,53,444  # SSH, RDP, DNS, SSL VPN
		match proto GRE
		match icmp
		match tcp syn
		match tcp ack

interface $DEVICE world-out output rate $OUTPUT_SPEED $LINKTYPE balanced
	class priority commit 10%
		match tcp port 22,3389,53,444
		match proto GRE
		match icmp
		match tcp syn
		match tcp ack

Categories:      

==============

Additional Critical and Delayed Worker Threads in Windows - speed tweak
article #422, updated 3020 days ago

At this registry location:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive

create or modify “AdditionalCriticalWorkerThreads” and also “AdditionalDelayedWorkerThreads”, both DWORDs.

For a 32-bit system, I have come to prefer decimal values of 6 times the number of gigs of RAM. So a 1/2G RAM system gets 3, a 4G system gets 24. For a 64-bit system, I use 3 times the number of gigs of RAM.

The above include statements that the maximum value actually used by Windows for these entries is 16. However, the pages are old enough that they do not discuss 64-bit environments; and the second page, the more recent of the two, states that the registry entries exist by default, which they do not.

A major software vendor (which shall now go unnamed) had a page, now taken down, which seemed to at least leave the possibility open that higher numbers may be viable, 64 being recommended by them for a third item otherwise apparently undocumented:

HKLM\SYSTEM\CurrentControlSet\Services\RpcXdr\Parameters\DefaultNumberofWorkerThreads

But just today, I learned of this page:

https://blogs.technet.microsoft.com/josebda/2010/08/27/performance-tuning-guidelines-for-windows-server-2008-r2/

which references this page at Microsoft:

https://msdn.microsoft.com/en-us/library/windows/hardware/dn529134

which contains references for all current Windows Server versions. These touch all of the above and a lot more! Haven’t read them all yet, but will, am thinking to learn lots of interesting things. A quick peruse did reveal that the old hard max of 16 no longer applies, 64 is mentioned, at least in the Server 2008R2 document.

Below is a VBscript, not been updated in a while, which attempts to give an all-around tweak set for the above. Will be working on this soon from that Microsoft page.

' ***************************************
' ******* Optimize Worker Threads *******
' ****************** 2.0 ****************
' ***************************************
' ********* Jonathan E. Brickman ********
' ********* jeb@ponderworthy.com ********
' ***************************************
' ***************************************

' ********** Set up environment *********

Option Explicit

Dim HKEY_LOCAL_MACHINE, strComputer, CPUarch
Dim Return
Dim AddCriticalWorkerThreads, AddDelayedWorkerThreads, DefaultWorkerThreads

HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

' ********** Find out how much RAM is in machine *******

Dim RAMobj, i, RAMobj2, memTmp1, TotalRAM

Set RAMobj = GetObject("winmgmts:").InstancesOf("Win32_PhysicalMemory")
i = 1
For Each RAMobj2 In RAMobj
	memTmp1 = CDbl(RAMobj2.capacity) / CDbl(1024) / CDbl(1024) / CDbl(1024)
	TotalRAM = TotalRAM + memTmp1
	i = i + 1
Next

Set RAMobj = Nothing
Set RAMobj2 = Nothing

' ******** Get ready for registry operations **********

Dim ObjRegistry, strPath, strValue

Set ObjRegistry = _
    GetObject("winmgmts:{impersonationLevel = impersonate}!\\" _
    & strComputer & "\root\default:StdRegProv")

' ********** Find out whether OS is 32-bit or 64-bit **********

' HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE
' contains either 'AMD64' or 'x86' or other, if not AMD64 presume 32-bit

' ObjRegistry.GetStringValue?...
' http://msdn.microsoft.com/en-us/library/windows/desktop/aa390788%28v=vs.85%29.aspx

strPath = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

ObjRegistry.GetSTRINGValue HKEY_LOCAL_MACHINE, strPath, "PROCESSOR_ARCHITECTURE", CPUarch

' CPUarch will be AMD64 or IA64 if 64-bit, otherwise 32-bit

' ********** Calculate values to be used **********

If CPUarch = "AMD64" or CPUarch = "IA64" Then
	AddCriticalWorkerThreads = TotalRAM * 3
	AddDelayedWorkerThreads = TotalRAM * 3
	DefaultWorkerThreads = 64
Else
	AddCriticalWorkerThreads = TotalRAM * 6
	AddDelayedWorkerThreads = TotalRAM * 6
	DefaultWorkerThreads = 64
end if

' WScript.echo "Total RAM: " & TotalRAM
' WScript.echo "Critical Worker Threads: " & AddCriticalWorkerThreads
' WScript.echo "Delayed Worker Threads: " & AddDelayedWorkerThreads
' WScript.echo "Default Worker Threads: " & DefaultWorkerThreads

' WScript.Quit

' ********** Set Additional Critical and Delayed Worker Threads ***********

strPath = "SYSTEM\CurrentControlSet\Control\Session Manager\Executive"

' Create key in case it doesn't exist yet
Return = objRegistry.CreateKey(HKEY_LOCAL_MACHINE, strPath)

ObjRegistry.SetDWORDValue HKEY_LOCAL_MACHINE, strPath, "AdditionalCriticalWorkerThreads", AddCriticalWorkerThreads
If Err <> 0 Then
	WScript.Echo "Could not set AdditionalCriticalWorkerThreads."
End If

ObjRegistry.SetDWORDValue HKEY_LOCAL_MACHINE, strPath, "AdditionalDelayedWorkerThreads", AddDelayedWorkerThreads
If Err <> 0 Then
	WScript.Echo "Could not set AdditionalDelayedWorkerThreads."
End If

' ********** Set Default Number of Worker Threads ***********

strPath = "SYSTEM\CurrentControlSet\Services\RpcXdr\Parameters"

' Create second key in case it doesn't exist yet
Return = objRegistry.CreateKey(HKEY_LOCAL_MACHINE, strPath)

ObjRegistry.SetDWORDValue HKEY_LOCAL_MACHINE, strPath, "DefaultNumberOfWorkerThreads", DefaultWorkerThreads
If Err <> 0 Then
	WScript.Echo "Could not set DefaultNumberOfWorkerThreads."
End If

' ********* End! **********

Set ObjRegistry = Nothing

' Wscript.echo "Done!"

Categories: