Stutter and other Performance Concerns
Fugaz1 opened this issue ยท 27 comments
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.
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)
Error Messages (Link)
no errors
Additional Information
No response
Contact Information
No response
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.
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.
P.S. I tried to play with performance options but it didn't make any positive change.
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.
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):
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.
Also having microstutters.
[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
}
- hekili disabled
- 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.
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
}
@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).
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
}
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
}
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?
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.
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.
All addons disabled Except Hekili with enhanced recheck on and default refresh rate.
Addons disabled just for memes
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.
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.
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.
@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?
Thanks; I'll post an alpha build 'soon' (next few days). Last night's testing wasn't super promising, to be quite honest.
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.
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):
In combat with Havoc DH:
In combat with Fury Warr:
The output:
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.
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.
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.
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.
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.
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)
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.
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