Hekili Priority Helper

Hekili Priority Helper

44M Downloads

Stutter and other Performance Concerns

Fugaz1 opened this issue ยท 27 comments

commented

NOTE: This is Hekili and I'm hijacking this ticket to centralize all feedback related to CPU usage, stuttering, or other performance concerns.

If adding to the thread, you must:

  • Include a current snapshot taken when the issue was occurring.
  • Report the last version of the addon that did not have this issue for you. You can downgrade your addon version to investigate further.
  • Note any additional observations about when/where this occurs (or if it improves/worsens in different settings).
  • After testing in combat, /dump HekiliEngine.threadUpdates and copy/paste the text (or a screenshot) showing the output.

If the above is missing from your post, I will probably delete it. "I'm having this issue, too" is not useful for troubleshooting the issue. Thanks for your understanding.

Back to the original ticket...

Before You Begin

  • I confirm that I have downloaded the latest version of the addon.
  • I am not playing on a private server.
  • I checked for an existing, open ticket for this issue and was not able to find one.
  • I edited the title of this bug report (above) so that it describes the issue I am reporting.

Describe the Issue

Hardware: 7800X3D, 4070ti
Addons: only Hekili [v10.1.0-1.0.1c]

I noticed there is constant microstutter when hekili is running, in and out of combat. Pausing hekili fixes the issue.

Here is comparision, it is in orgrimmar and I am looking at wall so nothing is going on, all addons but hekili are disabled.

  1. This is without hekili:
    image
  2. This one is with hekili:
    image

This is with vengeance DH, with havoc 1% low goes down to 55. I also tried evoker - it was closer to vengeance.

In combat this problem amplifies, example for target dummy with havoc DH: 1% low goes from 100 to 40 (!) FPS. When I reset my profile it goes to 55 (strange as I have 2 abilities in queue and default is 3).

I tried similar addons and has no such stutter with maxdps or conro.

How to Reproduce

Load hekili, check 1% lows with RTSS - no need for combat or anything.

Player Information (Link)

https://pastebin.com/AYkKtNKX

Error Messages (Link)

no errors

Additional Information

No response

Contact Information

No response

commented

Hello everyone, I Just noted one issue and probably its something wrong with my settings, but I noticed on my enh, that hekili is horribly wasting maelstrom weapon stacks which results in much less lb/EB instants.
Sometimes, ive noticed even having 10 stacks of MW, and primordial WAVE gettin off cd, IT tells me to cast pw, ergo - waste 10 free stacks...
Dont know What can I do with that, any advice?
Already switched off filler with fire brand but IT didnt help much. And suddenly performing worse double checking if to spend current MW stacks or to cast WAVE as IT shows.

commented

Hello everyone, I Just noted one issue and probably its something wrong with my settings, but I noticed on my enh, that hekili is horribly wasting maelstrom weapon stacks which results in much less lb/EB instants. Sometimes, ive noticed even having 10 stacks of MW, and primordial WAVE gettin off cd, IT tells me to cast pw, ergo - waste 10 free stacks... Dont know What can I do with that, any advice? Already switched off filler with fire brand but IT didnt help much. And suddenly performing worse double checking if to spend current MW stacks or to cast WAVE as IT shows.

If you have a specific issue you should open a new ticket and supply the required info (sims links, snapshots, etc) instead of tagging onto an unrelated issue.

commented

P.S. I tried to play with performance options but it didn't make any positive change.

commented

I noticed there is constant microstutter when hekili is running, in and out of combat. Pausing hekili fixes the issue.

There is a known issue that I am actively investigating. I have not found pausing to actually resolve it, for me.

From your snapshot:

    maxTime = 100
    ...
    throttleRefresh = false
    throttleTime = true

These settings mean that you've told the addon to override its default limitation of ~15ms of calculations in a frame, allowing up to 100. You may have done this at my instruction, since one current theory is that splitting the work over multiple frames ends up having a larger performance impact than just blasting out new recommendations in a single thread. If you uncheck "Set Update Time" in your spec's Performance options, is there any notable difference in performance?

What does this mean? 1% low?

This is with vengeance DH, with havoc 1% low goes down to 55. I also tried evoker - it was closer to vengeance.

The framerate or CPU usage testing should be broken down more like the following grid:

x In Combat Out of Combat
Hekili Loaded + Enabled
Hekili Loaded + Disabled
Hekili Not Loaded

For example, I don't know how much your framerate is impacted entering combat without the addon, if at all.

When I reset my profile it goes to 55 (strange as I have 2 abilities in queue and default is 3).

This is probably due to your Performance tab settings getting reset, but I'm unsure. Resetting your profile shouldn't be necessary, regardless.

commented

I tested different performance settings, not much difference there. Biggest difference in 1% lows was changing specs, so for example vengance 75, havoc 55.

For me pausing was same as not loading addon. Unpausing caused stutter no matter if I was standing if middle of nowhere or was fighting. Obviously fighting made things worse (havoc 55 -> 40 fps 1%). So table would look like this:

x In Combat Out of Combat
Hekili Loaded + Enabled  stutter  stutter
Hekili Loaded + Disabled  OK  OK
Hekili Not Loaded  OK  OK 

1% low is like minimum fps but over time, basically it measures drops and stutters. What it tells us here for example is when hekili is doing update my fps drops from 138 to 75 which is clearly visible in RTTS graphs (one is 1% low and another is render latency).

You can install MSI Afterburner and enable OSD there (it uses RTTS):
image
Hotkeys to toggle OSD and start/stop fps benchmark are in OSD and Benchmark tabs.
With this tool you easily spot and check what is causing it.

commented

Also having microstutters.

https://pastebin.com/gbcsY9Xq

[1]={ 
  meanClockTime=32.931264332262, 
  meanWorkTime=22.998234527653, 
  totalWasted=75.663800016046, 
  peakWasted=15.523400001228, 
  peakFrames=3, 
  peakWorkTime=40.568700000644, 
  updates=614, 
  firstUpdate=36186133.3207, 
  updatesPerSec=1.6995977619553, 
  peakClockTime=60.165399998426, 
  meanWasted=0.80310434858212, 
  meanFrames=2.0798045602606 
}

off - hekili disabled
on - hekili enabled

Always had this issue, just tried to ignore the microstutters and moved on.

Hardware 3700x and GTX 1070.

Hope this helps figuring it out.

commented

On Enhancement Shaman there is a delay in ability presses, especially when Ascendance ability is active and you need to press Windstrike often.
CPU i5-12400F
GPU 1650

Dump: value=HekiliEngine.threadUpdates
[1]={
  meanClockTime=39.075365225568,
  meanWorkTime=11.458779511277,
  totalWasted=206.26290000114,
  peakWasted=17.631599999964,
  peakFrames=7,
  peakWorkTime=22.75820000004,
  updates=1596,
  firstUpdate=1892386.9996,
  updatesPerSec=2.572071267253,
  peakClockTime=79.260400000028,
  meanWasted=1.7209048765124,
  meanFrames=4.2412280701754
}
commented

@codengine I've posted the initial version of the recommendation throttling that works as described. I'm going to expose more of the tuning knobs for it in the addon's options. After combat, you can supply the output from /dump HekiliEngine.threadUpdates along with any performance differences that you notice (better or worse).

commented

I never had performance problems, but maybe it helps anyway. This is after an M+, for a Ret Paladin:

Dump: value=HekiliEngine.threadUpdates
[1]={
  meanClockTime=14.406355861171,
  meanWorkTime=6.8003389973385,
  totalWasted=46.785799980164,
  peakWasted=27.937200069427,
  peakFrames=5,
  peakWorkTime=33.210099935532,
  updates=5562,
  firstUpdate=691311225.4296,
  updatesPerSec=1.506189064465,
  peakClockTime=92.972699999809,
  meanWasted=0.10425626962527,
  meanFrames=1.569219705142
}

commented

Heres after a raid encounter. I have noticed a lot less stuttering so far, and performance has been a lot better.
CPU 5800X3D
GPU 3080

Dump: value=HekiliEngine.threadUpdates 
[1]={ 
  meanClockTime=75.150609796957, 
  meanWorkTime=25.443050092296, 
  totalWasted=5427.5945999981, 
  peakWasted=32.27310000034, 
  peakFrames=9, 
  peakWorkTime=36.68730000034, 
  updates=7043, 
  firstUpdate=1522216.083, 
  updatesPerSec=1.0409564989257, 
  peakClockTime=198.33560000081, 
  meanWasted=5.7499321234801, 
  meanFrames=4.498935112878 
} 
commented

Just a thought: I know that Hekili uses the SimC rotations for evaluating the suggestions. In case that the rotations are parsed on the fly, would it be possible to have some kind of preprocessor that generates an optimized "rotation file" which gets rid of some of the overhead? Like, native LUA code for example?

Have you checked a dominator graph which routines consume which time? My performance is also dunking heavily in raids.

Moreover, could we have some kind of a simple model where only the very next action is recommended and no prediction for the future is happening or would that ruin the results?

commented

with a 13900k and a 4090 i too can reproduce this type of behaviour - it seems to depend heavily upon wether or not "Enhanced recheck" is used for a particular spec - for example on my outlaw rogue - at training dummy in valdraken i get around 150 fps

Turn off enhanced recheck and reload the game - suddenly i get around 180.

Its a wierd behaviour and its mostly noticeable on high refresh rate monitors - where the slightest stutter can be noticed.

I would say the microstutter is there every time the addon makes a call and needs to recalculate.

Depending on your settings of course you can agravate or aleviate the issues.

This is outlaw with enhanced recheck on - default settings for refresh rate and throttle time.

image

We can agravate the issue by asking the addon to update more often.

For example with a 0.05 refreshrate this is what you can expect.

image

All addons disabled Except Hekili with enhanced recheck on and default refresh rate.
image

Addons disabled just for memes
image

The problem while yes is partly caused by Hekili.
I do not think any amount of optimization will be able to fix it.

The addons share the same thread as the main Gx engine - they are competing for the same resources - the same CPU thread
This is a very old game engine that still to this day even with Dx12 is not capable of utilizing system resources properly.

Untill they manage to split addons to run on a different cpu thread this problem will remain.

My advice is - Find the minimum possible number of addons to run along side hekili. It will be way less noticeable.

Weakauras are the biggest offenders and nameplate addons tend to be as well.

See if you can survive just running hekili and a bossmod.
Things that dont do stuff constantly - IE Leatrix plus - Junk sellers - Most quality of life addons shouldn't be a problem.

commented

Just a reminder, there are requirements for posting in this issue thread in the first post. I'll be flexible to an extent, but don't be surprised if your posts get deleted if you're not supplying information for investigating the topic.

A few folks have mentioned that there are older versions that do/don't have the stuttering for them. If that's true for you, adding information about the last version that does not have the stutter or the first version that does would be helpful.

Also, this addon does use more CPU than average and there are definitely opportunities to improve efficiency. For systems with a very high framerate, I would have to throttle the addon's CPU usage per frame. This technically exists already (Performance tab) but it's not intuitive to use.

commented

I'm doing some testing with a dynamic throttle that will change how much time the addon can use per frame depending on your framerate.

The logic for this is:

  • When the addon is not generating recommendations, track how much time elapses for each frame.
  • When it is time to generate new recommendations, calculate the average time-per-frame from the above.
  • Allow the update thread to use 60% of that average time.

This means that, if your system has 200 FPS (which is wild, I'm hypothetically jealous), your average time-per-frame is 5ms, and the addon would allow for 3ms (5ms * 60%) per frame while updating recommendations. If your framerate is 60 FPS, that's 16.667ms, so the addon would allow you for 10ms (16.667ms * 60%) per frame.

I currently have constrained the allowed time-per-frame to between 3ms and 10ms. If your framerate goes below 60 FPS (which seems common in combat), I don't want the addon's CPU appetite to grow, impacting your framerate, which then could budget even more time per frame in a vicious cycle. However, if someone gets 10 FPS baseline -- 100ms per frame -- it could backfire in terms of responsiveness if the addon leaves 90% of the available CPU time untouched.

This has worked really well for my Demonology Warlock, but I'm seeing some wasted effort on my Enhancement Shaman. For Enhancement, I think the issue is that the addon can also get forced to restart its recommendation calculations because of Maelstrom Weapon proccing randomly and because some auras can pop-up after a delay. I'm assessing what I can do about it now. I'm considering forcing the addon to wait a bit longer after critical events before starting to generate new recommendations, but that could also feel sluggish.

Future considerations:

  • Revise the 'reset' process to reduce risk of rework.
  • Update auras incrementally using modern aura events instead of flagging for a complete purge/refresh.
  • Flatten the process of generating recommendations to reduce recursion/loops/nesting and forego unnecessary throwaway work.
commented

@Hekili Happy to gather some data. Would it be an idea that you could provide a profiling version of the addon with additional ways of measurements? Or does the snapshot already contain all that you need?

commented

Thanks; I'll post an alpha build 'soon' (next few days). Last night's testing wasn't super promising, to be quite honest.

commented

If adding to the thread, you must:

  • Include a current snapshot taken when the issue was occurring.
  • Report the last version of the addon that did not have this issue for you. You can downgrade your addon version to investigate further.
  • Note any additional observations about when/where this occurs (or if it improves/worsens in different settings).
  • After testing in combat, /dump HekiliEngine.threadUpdates and copy/paste the text (or a screenshot) showing the output.

If the above is missing from your post, I will probably delete it. "I'm having this issue, too" is not useful for troubleshooting the issue. Thanks for your understanding.

commented

Adding to this thread as I've been having this issue since the very start of DF, and I never used the addon before so idk if any previous version was exempt from constant stuttering.

The game micro stutters constantly during combat and it seems that every individual stutter occurs when I hit a spell and the addon loads up a new spell for the rotation. This has so far been happening on all of my characters so a warrior, fury/arms, havoc dh, outlaw rogue.

Hardware shouldn't be the issue since I have a 4080/5800x3d/32gb of 3600mhz RAM/NVMe. Also I'm not sure how to get a snapshot since it wouldn't generate any after pausing and unpausing the addon.

Here are the screens on how the frame graph looks outside combat (hekili set to only show up in combat):

no hekili

In combat with Havoc DH:

hekili DH

In combat with Fury Warr:

fury hekili

The output:

dump

commented

A snapshot is required to diagnose this issue.

Snapshot

Please supply a Snapshot of the addon's decision-making when you are seeing this issue in-game. This is not a screenshot. To generate a Snapshot, please complete the following steps.

  • Log into your WoW character.
  • Recreate the issue you are reporting (i.e., generate 5 Holy Power).
  • When you see the recommendation you disagree with, press ALT-SHIFT-P to Pause and Snapshot (or use ALT-SHIFT-[ to Snapshot without pausing).
    • You can change these keybindings in /hekili > Toggles if needed.
    • If you take the snapshot at a different time, it will not be useful and you'll be asked to submit a new one.
  • Type /hekili and press Enter.
  • Open the Snapshots section on the left side.
  • Select the snapshot that shows the recommendation that you disagree with.
    • Snapshots are labeled with your specialization, the display in question (usually, you'll choose Primary), and the recommendations the addon made with their timings.
  • Click in the Export Snapshot box, press CTRL+A to select all text including hidden text and press CTRL+C to copy.
  • Open https://pastebin.com, use CTRL+V to paste the snapshot text, then click Create New Paste.
  • Provide the Pastebin link in a new comment.

This step is essential, as most issues are related to specific classes, specializations, gear, talent choices, or other game systems. If you do not provide this information, I cannot triage your problem.

commented

Thanks but no snapshots are being generated, nothing happens when I press ALT-SHIFT-[ and the snapshot selection is grayed out even though ALT-SHIFT-[ is also the hotkey for me. I'm clicking the shortcut both while fighting a mob and after leaving combat, but nothing is happening.

commented

Use ALT+SHIFT+P instead. Post screenshots of your snapshots keybindings. Get BugSack/BugGrabber if you're pressing the button and not getting a snapshot.

commented

Dump: value=HekiliEngine.threadUpdates
[1]={
meanClockTime=74.265713728762,
meanWorkTime=19.909252033755,
totalWasted=296.454599999889,
peakWasted=21.443299997598,
peakFrames=5,
peakWorkTime=23.982599999756,
updates=590,
firstUpdate=16962271.097,
updatesPerSec=2.9033932783827,
peakClockTime=180.86590000018,
meanWasted=2.8191393370451,
meanFrames=4.032203389305
}
https://pastebin.com/ca67T9ax

This is one example of a spec dropping 10-20 fps during combat in the new raid. Fps drop doesn't happen at all in same situation with hekili off.

commented

Dump: value=HekiliEngine.threadUpdates [1]={ meanClockTime=74.265713728762, meanWorkTime=19.909252033755, totalWasted=296.454599999889, peakWasted=21.443299997598, peakFrames=5, peakWorkTime=23.982599999756, updates=590, firstUpdate=16962271.097, updatesPerSec=2.9033932783827, peakClockTime=180.86590000018, meanWasted=2.8191393370451, meanFrames=4.032203389305 } https://pastebin.com/ca67T9ax

This is one example of a spec dropping 10-20 fps during combat in the new raid. Fps drop doesn't happen at all in same situation with hekili off.

Nothing significant has changed with Marksmanship. There are video driver issues that caused freezes for me. Let me know if you have an nVidia card and your drivers are up to date.

commented

https://pastebin.com/UtiFqn2z

338c92adcc88ad9ed77029cd65474f6f

Consistantly getting lag spikes within in raid during Lust and at start of fights and its not consistent every time for how long. On current Nvidia patch, and have had issues since start of 10.2 (CPU Profiler pointed to this having an issue)

Specs for comp if that helps.
CPU: Intel Core i9 9900K @ 3.60GHz
GPU: NVIDIA GeForce RTX 3060 Ti (Gigabyte)

commented

What version of nVidia drivers do you have? As noted above, there was a bad release that caused performance issues.

I do plan to revise the way the addon queues its work in the near future, as I suspect that there may be an issue of video drivers combined with the coroutine usage of my addon, but it's hard to prove out.

commented

CleanShot 2023-12-11 at 20 07 57@2x
Huge lag spikes when reloading and sometimes when finishing an m+ dungeon or pulling in raid

Maxed out 16" M3 Macbook Pro Max

commented

What version of nVidia drivers do you have? As noted above, there was a bad release that caused performance issues.

I do plan to revise the way the addon queues its work in the near future, as I suspect that there may be an issue of video drivers combined with the coroutine usage of my addon, but it's hard to prove out.

546.29 which is the latest version released on the 4th of Dec