Performance Tweaks

Discussion in 'Game Tweaks and Modifications' started by Von Dach, Aug 28, 2010.

  1. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
  2. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    Inspiration attacked me... So another utility in form of system service was written. This time it boosts the priority class of started process. Anyone interested?

    Actually service may be rewritten to give opportunity not only boost but set the priority class of process manually...
     
  3. CoD511

    CoD511 Guest

    Someone interested in that here :) Always wanted to get some things pushed ahead of others.
     
  4. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    OK. I will investigate some later thoughts, will try to implement most flexible ini-file format, and will post results...
     

  5. Shabaco

    Shabaco Guest

    Messages:
    450
    Likes Received:
    1
    GPU:
    -
    the only HPET option in my bios is "ACPI HPET Table" Enabled/Disabled.

    does anyone know what it means?
     
  6. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    After some searching I can surmise that this setting just toggles mapping of HPET related info into ACPI tables. I`ve googled some linux developers forum:

    The original test has some notion of checking the HPET table
    but this was #ifdef'd out from the original Linux Firmware
    Developer Kit code and never implemented in fwts. Remove the
    old legacy code and fully implement a HPET table validation.

    Since we want to sanity check where the kernel's view of where
    the HPET is located and what the HPET table states, I've re-ordered
    the sub-tests to ensure the new test runs 2nd.


    There is simple method of testing:
    1 - execute in cmd.exe with administators rights "bcdedit /set useplatformclock true" and reboot
    2 - run WinTimerTester_1_1.exe and look at QueryPerfomanceFrequency value; if it 14 MHz then HPET is on and in use
     
    Last edited: Mar 15, 2013
  7. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    Micro-tool
    http://www.mediafire.com/download.php?31au02shv28159d

    This is PowerShell script for modification of too high priority class of running processes. It is very simple. You can tweak it yourself and play with it.
    To read its help, execute in PowerShell (in the folder with script):
    get-help .\Modify-ProcessesPriority.ps1 -Full
     
    Last edited: Mar 16, 2013
  8. Shabaco

    Shabaco Guest

    Messages:
    450
    Likes Received:
    1
    GPU:
    -
    interesting.
     
  9. Memorian

    Memorian Ancient Guru

    Messages:
    4,024
    Likes Received:
    890
    GPU:
    RTX 4090
    How do you apply those tweaks ?
     
  10. Pill Monster

    Pill Monster Banned

    Messages:
    25,211
    Likes Received:
    9
    GPU:
    7950 Vapor-X 1100/1500

  11. ShadowDuke

    ShadowDuke Ancient Guru

    Messages:
    4,919
    Likes Received:
    1,023
    GPU:
    XFX Radeon RX 6600
    Is there a way i can make the Current Resolution in Timer Resolution tool permanent? Right now i have to open the programm (or autostart) and have to click "maximum"). So is there any reg entry or smth. familiar so i can change timer to 0.5ms?
     
  12. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    PowerShell is integrated into Win7 and Win8. It provides console command line mode - PowerShell.exe, and integrated scripting environment - PowerShell_ISE.exe. Second one can be used for editing and for debugging. You can even put breakpoints inside script to stop execution and evaluate variables values.

    If you open Modify-ProcessesPriority.ps1 (in any text editor) you will see links on .Net class Process, on enum ProcessPriorityClass values and on scheduling priorities. So with this online info you can tweak script so that instead of priority class modification it can collect processes info, kill processes, find not responded processes,...

    And you will see variable [hashtable]$Transitions which contains transitions of priority class in form of 'key=value' pairs. You can tweak those transitions and for example instead of decreasing priority of processes you can increase it.

    If you never executed scripts in PowerShell, you need to set script execution policy:

    set-executionpolicy remotesigned
    or
    set-executionpolicy unrestricted

    execute that in PowerShell.

    P.S. After all you can ask me for any needed tweaks...
     
    Last edited: Mar 17, 2013
  13. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    Free community versions of set timer resolution tool:

    http://forums.guru3d.com/showpost.php?p=4539837&postcount=330
    - console app

    http://forums.guru3d.com/showpost.php?p=4541126&postcount=374
    - system service (first C# version)

    Just compile these with csc.exe on your rigs...

    First C++ version of system service
    http://www.mediafire.com/download.php?a3m87ybzvzugdk6

    Second version (C#) of set timer resolution service (capability of specifying processes for a timer resolution added)
    http://www.mediafire.com/download.php?by934opu8qox9wc
     
    Last edited: Mar 17, 2013
  14. ShadowDuke

    ShadowDuke Ancient Guru

    Messages:
    4,919
    Likes Received:
    1,023
    GPU:
    XFX Radeon RX 6600
    tyvm, i have a look :)
     
  15. Agent-A01

    Agent-A01 Ancient Guru

    Messages:
    11,640
    Likes Received:
    1,143
    GPU:
    4090 FE H20
    easier way of doing it.. but depends if you have free version or paid version.
    if its paid, drop the shortcut into the startup folder. go the shortcut propererties, and add -silent -max into the target. silent makes it not popup when you boot, max maxes the timer
     

  16. ShadowDuke

    ShadowDuke Ancient Guru

    Messages:
    4,919
    Likes Received:
    1,023
    GPU:
    XFX Radeon RX 6600
    too bad i have only the free Version :(

    @mbk1969

    Thank you so much again, works like a charm :D

    But one question:

    In DPC Latency Checker it shows from the scratch, test interval 976µs with a latency of ~110 (with timer resolution disabled).

    When i enable timer resolution, Latency goes to ~25. Test Interval still 976µs.

    Now i close DPC Latency Checker and restart it. Test Interval is now 488µs and latency also ~110 (with timer resolution enabled).

    So, i can say it changed nothing at all, except the "test interval" ? The latency is still the same?
     
    Last edited: Mar 17, 2013
  17. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    Did you try latencymon? It is more sophisticated then DPC Latency Checker.

    Set timer resolution tools do just that simple action - call API function NtSetTimerResolution. I never stated that it will improve something on your rig. I implemented these versions to help gurus to experiment with it (and I don`t like mentioned paid version, knowing how easy it was to implement).
    If I was DPC checker developer I would tell you why it behaved like you said.
    And if I was Microsoft developer who implemented the kernel I would tell all gurus about timer resolution impacts... =)

    Edit: As I remember all reported improvements (by setting maximum timer resolution) didn`t mention DPC latencies. They all operated with 'smoother, snappier'-like terms...


    Edit2: Not 'timer resolution enabled/disabled' but 'maximum/default timer resolution'.
     
    Last edited: Mar 17, 2013
  18. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    Updated package for gurus who use (or want to) set timer resolution service v2 with per process capability:
    http://www.mediafire.com/?by934opu8qox9wc

    Change log:
    - performance improvements
    - due to performance optimizations service does not account processes started before service itself
    - assembly version attribute and assembly product attribute were added, so you can see them in exe-file properties dialog (Details tab)
    - ReadMe.txt updated

    Performance testing steps:
    (- Write 'notepad' into SetTimerResolutionService.exe.ini)
    - Start STR service
    - Clear the Application event log
    - Execute in PowerShell:
    Code:
    1..100 | foreach { Start-Process notepad }; Start-Sleep 1; Get-Process -Name notepad | foreach { $_.Kill() }
    (The code creates 100 notepad instances -> waits 1 second -> kills all notepad instances.)
    - After all notepads are closed check Application event log for two events from STR service: "Actual resolution = 5000" and then "Actual resolution = {default resolution}" - i.e. "maximum resolution is set on first notepad start" and then "default resolution is set on last notepad kill".

    Edit: No need for service reinstallation for those who already uses second version of service - simply replace old exe-file with new one.
     
    Last edited: Mar 19, 2013
  19. mbk1969

    mbk1969 Ancient Guru

    Messages:
    15,691
    Likes Received:
    13,682
    GPU:
    GF RTX 4070
    I forgot completely that PowerShell 2 (in Win7) by default is not configured for work with .Net v4 objects and assemblies. So here is script which does configure PowerShell 2:

    http://www.mediafire.com/?6m51jq412sg7ddl
     
  20. Shabaco

    Shabaco Guest

    Messages:
    450
    Likes Received:
    1
    GPU:
    -
    this is not a performance tweak, but you can free up a bit of space and shrink your winsxs folder a bit. (not by much)

    tested on windows 8, should work on windows 7, maybe vista.


    type this from a command prompt;

    DISM.exe /online /Get-Features /Format:Table >featurelist.txt

    and then check out the txt file it generates, it lists optional features of windows. some is listed on the "optionalfeatures.exe" app window, but a lot of the stuff is hidden.

    create a batch file with;

    DISM.exe /online /Disable-Feature /Featurename: /Remove

    just put in the feature name infront of the : and hit enter and it'll uninstall/delete the installation files from your hdd.

    example:

    DISM.exe /online /Disable-Feature /Featurename:Microsoft-Hyper-V-All /Remove


    the following is for windows 8 only, again enter at a command prompt or put in a batch file.

    dism.exe /online /cleanup-image /startcomponentcleanup

    it cleans up the winsxs folder, removes unneeded hotfixes.
     

Share This Page