The work laid out in this post seeks to answer a seemingly very simple question for 2H PvE Frost:
Should you wait for KM to allow for more KM-OB’s, or should you simply ignore it?
Table of Contents (use search to jump to sections):
^2. The Pieces
^2a. Runes and RP
^3. Putting the Pieces Together
^4. Enter, the Sim
^5. The Sim Speaks
^6. Including the Source
^7. The Answer
^8. Addendum: KM in 5.2 and DPS T15-4pc
That is the question that has been popping up recently on MMO-C, EJ, and the official WoW forums.
I had answered it during the MoP Beta phase, but that data is now gone—thus, to anyone who wasn’t present at Beta, it’s essentially as if I did not do that work as there is nothing to refer to, which is understandable. Because of that, I am posting this analysis here, where it will hopefully remain for some time for future reference.
For those who don’t care about how the answer was obtained, that’s a shame, but you’re more than welcome to skip down to the “Answer” section (search: “^7.”), however, I would ask that if you are going to copy and paste it around, that you do have a proper understanding of what that answer actually means.
There have been numerous responses to that question floating around, but I’ve yet to see any with definitive evidence to back their claims. While I respect that intuition can point to the correct direction, intuition alone is not enough. It is the beginning.
For those who claim that you should stall for KM, when I ask for supporting evidence, for the most part I receive a link to this EJ post by Mendenbarr:
Pay special attention to the note at the end of the OP:
I’ll revisit this post later in mine.Originally Posted by ”Mendenbarr”
[Later edit: I understand that Mendenbarr’s post was edited since I started drafting mine. Because of that, there may be textual differences.]
^2. The Pieces:
Let’s start with what we know, and from there, we’ll try to head in the direction of figuring out how much of a gain stalling is, and how it even came about. For some readers, this will seem quite basic but I cannot assume your level of familiarity.
Frost DK’s have multiple resources: runes, RP, GCDs, Rime, and KM. Hopefully it doesn’t need to be said, but wasting resources results in losing DPS. This doesn’t necessarily mean that your overall DPS will go down, though, as you may have gained elsewhere.
^2a. Runes and RP:
It is difficult to truly separate runes and RP in reality because of their relationship; for that reason, they will be discussed together.
Runes regenerate at a natural rate, and only 1 of each type can regenerate at any given time. This allows for you to sit on runes without wasting regeneration, which was the goal of the Cataclysm overhaul. This is a key component to delaying for KM, as without it, there would be no reason to stall for KM. However, your runes will become desynchronized (i.e. they will not all finish recharging at the same time). So, instead of being able to wait the full rune regeneration rate before wasting runes, you are looking at some time period less than that (and even less than that with the inclusion of Tier 75). This is relevant only because OB is a 2-rune strike, which leads to more opportunities to waste runes due to the cost itself and GCDs (specifically, waiting on a GCD to finish while you have 2 of the same rune type up).
Runes generate RP, which is, in turn, used to generate more runes with Tier 75. If you are capped on RP, then using runes results in lost FS’s and lost runes. In other words, if you get a KM-OB, but it results in an overflow of RP, you didn’t gain as much damage as you think you did. You might actually only be just breaking even (if you overflow less than around 10 RP).
Also, using FS when the conditions for Tier 75 don’t exist results in lost runes. As a note, the sim data presented later and discussion will be using RE (as that leads to the highest DPS in my sim), but the conclusions are the same for BT/RC. I have run those as well, but for the sake of not flooding you with data, I will not include them.
Thus, this puts KM stalling in the middle of two conflicting priorities. In order to use FS efficiently, you must be able to proc RE, which means you need to be spending runes. In order to stall for KM, you must sit on runes, potentially wasting regeneration (via naturally and especially when RE procs). If you sit on runes too long, not only will you waste the natural rune regeneration rate, but you will also lead to capping RP, and as I will discuss in a moment, you will also introduce issues with GCDs.
Fortunately, both runes and RP allow you stall some without causing loss, which is why stalling is an option. As long as your RP bar doesn’t overflow, you can generally make the FS’s up later, which brings me to the next “resource.”
GCDs may not seem like a resource, as you don't generate them, but they play a role in your DPS--specifically, by throttling your DPS. If you don’t have GCDs, you can’t do damage. If you have 2 runes of the same type up, but are forced to wait on a GCD to finish, you also lose DPS via lost regeneration. This is probably the trickiest of resources to actually grasp because it’s not readily quantifiable, and its effect isn’t noticed unless you look at the entire fight window. Consequently, it is exceedingly easy to miss, and this is something I don’t think Mendenbarr is keen to.
Let’s look at a boss fight in which the boss has 750 million HP, and your raid’s DPS is around 2 million DPS. The boss should die right around after 375 seconds. Let’s say your original contribution to the raid DPS was 100k, and you’re having a really bad night and suddenly do only 80k. The boss will only die about 4 seconds later. That's a pretty drastic drop in your DPS, though.
Thus, there is one conclusion that can be made: the amount of GCDs you have in a fight is relatively fixed (that is, more or less constant).
The amount of GCDs you will use can be determined mathematically based on your haste (in i509 gear, it’s about 85% of your GCDs. This link, generated for an entirely different reason than this post, overestimates PL, but should get close enough: https://docs.google.com/spreadsheet/...no3cFVNRngyUnc). What can’t be determined that way is when you will use those GCDs because of procs, and it is unreasonable to assume even spacing. Delaying means you are lowering the number of GCDs that you can use (again, this number is fixed). This can lead to loss in two different ways.
Firstly, and most drastically, if you stall too much, you will push abilities outside of the fight window because you’ve sat on so many GCDs; thus, they are lost entirely because they cannot occur. For example, if you are in i509 gear and the fight lasts 360 seconds, I know you will spend about 310 seconds (somewhere) on abilities, so you have about 50s of cumulative possible wait time (if you wait 1 second after every 5 seconds, you’ve already exceeded your limit in this case, so it adds up). If you wait longer than that in total, you cannot fit all of your abilities into the fight because you must have at least 310 seconds (but that’s assuming something is ready every GCD). This is a hard limit that is in effect regardless of your resource generation. Something’s got to give, and the GCD doesn’t—your abilities do.
Secondly, a priority that is stalling for KM oscillates between no activity and full-on GCD-lock. It’s very rarely in between. Apart from this being a little tricky to manage in terms of priorities on-the-fly, this is not good for your resource generation because it increases the chance of capping resources or wasting regeneration. You can see this in the number of Rime overwrites in the sim data later and differences in rune regeneration. There are also some RP overflow issues, depending on how FS is handled.
Think of it like restraining a little child from grabbing a pile of free toys from a shelf until a buzzer sounds, at which point s/he has about 3-4 seconds to grab as much as possible before being restrained again. Something’s going to get left on the shelf.
As you get more haste, this window shortens even more.
There isn’t much management to Rime other than just obtaining the free damage from it. However, I’ve listed it here because it is something you have control over that gives you extra damage. Think of it as something that adds about the same damage as 60% of a normal OB every other time you hit OB, which adds up to be about 6-7% of your total damage if utilized fully. Thus, KM-OB’s at the expense of Rime, although still a damage gain, are less of one.
KM itself is a resource, and it can be wasted by letting the buff be overwritten. As 2H, you have a 36% chance to proc KM on every swing, or, a 64% chance to not proc KM on each swing. Let’s define the true “worth” of KM to be the extra damage from a KM-OB for consistency, since this is what you ideally desire. Every KM you overwrite, you lose the full value of KM. Every KM you spend on FS, you also “lose” some of the value of KM, since, although you gained some damage, you didn’t gain it all (note that in some cases it would still be impossible for you to have used KM-OB). There are several possible scenarios when it comes to KM: that is, don’t look at KM just one proc at a time and isolated. Consider a string of procs; this is where Mendenbarr claims that you can gain, but doesn’t give the necessary data that actually says you will gain, but merely a condition that must be met before you will experience a gain, which you’ll see in a moment.
^3. Putting the Pieces Together:
Let’s refer back to Mendenbarr’s post and start the comparison, however, keep in mind this has nothing to do with the author but purely the facts, so I do not mean any ill-will. I respect the effort that goes into every guide, as I’ve written several myself and know how much time it takes.
There are two significant differences between my post and his: how to handle Rime, how long you should wait for KM.
Now, as the reader, I am going to take what is written at face-value. However, as a theorycrafter, I know some statements should not be taken as literally as they are written. For example, he states that you should never use OB if Rime is available. If you have to choose between a KM-OB and a Rime proc, more often than not, you should pick KM-OB. The extra GCD it takes to cast HB could lead to a KM overwrite, which is worse than losing a Rime proc. Similarly, if you are near the RP cap but can’t proc RE, it’s still better to FS than to use OB and overflow RP. Thus, the theorycrafter in me led to altering that priority in my sim to account for these priority conflicts (and some more), but I also have his priority coded in as literally as it can be read so that you can see the difference.
Moving on to KM, I never gave a duration that you can stall, but Mendenbarr does. If you followed my discussion on runes/RP, his first scenario is correct. You would gain, as always, providing that you don’t waste resources (this includes GCDs). This will be confirmed later.
The second scenario is the problematic one. It states that you can wait up to (SwingSpeed / 0.36), which, in his case, is 6.67 seconds, as that is how long, on average, it takes for you to get a KM proc, once again, providing that you don't waste resources. However, this fails to consider GCDs as a resource.
It is also considering KM in a potentially misleading scenario: that you either: 1) overwrite KM, 2) use a KM-FS, or 3) use a KM-OB (if possible). Yes, this is a true scenario, but it is not the only scenario because of the inclusion of overwrites. If you look at it as if it were the only scenario, then if you overwrite KM while waiting to get a KM-OB, then as long as this happens more than 50% of the time, you would come to the same conclusion he does. Remember that KM has a 64% chance to not proc per swing. This means you need to have the resource configuration to allow you to stall more than 78% of the time ((1-0.36) * 0.781 = 0.50). But how often does that happen is the real question. Because the answer to that question is what tells you if this is a gain or loss, and no answer is presented; just the condition that must be met. That’s kind of important, and it seems to be assumed that you can beat those odds.
That question, although important, is not why this scenario is misleading, just the implied conclusion. If you overwrite KM in the process of waiting for a KM-OB, then we are talking about a window of 2 KM’s, not just one. Thus, we are essentially comparing an apple to an orange, because we’re comparing a two-KM window with a single-KM window. Revisiting, then, there are several possibilities (which, if you remember, I hinted at in my KM section):
1. 2 overwrites (stop watching TV)
2. 1 overwrite, 1 KM-OB
3. 1 overwrite, 1 KM-FS (but you would hopefully prioritize KM-OB > KM FS in the second window, so this is moot)
4. 1 KM-FS and 1 KM-OB
5. 2 KM-OB’s
6. 2 KM-FS’s (see note on scenario 3; also, this assumes you have the RP to use a second FS, which you may not)
Now it becomes a little bit more complicated. Ideally, you want 2 KM-OB’s. This is obvious, but not always possible. Any time you can get 2 KM-OB’s without losing resources (and I mean all of them), you will always gain. I shouldn't need to talk about that scenario.
Let’s revisit the scenario Mendenbarr was looking at, scenario 2, because it involves wasting a resource (i.e. KM). Naturally in your rotation (so without delaying), you would generally end up in scenario 4. So, the gain of scenario 2 is 1 KM (that is, a KM-OB per the definition earlier). Scenario 4, on the other hand, is a gain of 1.5 KM’s. Thus, in order to be equal, you need scenario 2 to occur not more than 50% of the time, but more than 60% of the time to break even with scenario 4. This raises the resource requirement to nearly 94% of the time. Again, we come to the question of how often this happens, as the answer to this question is the key to whether or not this is actually a DPS gain. All we have determined is simply the condition.
I hate probabilities, so much so to the point that I’d rather spend weeks writing a sim to sim something rather than try to approach it using probabilities. Conveniently, a sim can also spit out a myriad of other data. So, let’s look at that data.
Wait, actually, hold on, a brief summary first:
We’ve established that you can, in fact, wait for KM without any loss, following some stipulations. DK resources do allow you to sit around some. It’s also been established that if you do wait, you open yourself up to the possibility of causing loss (through multiple means). As far as the gain from KM, any resource waste can very easily wipe out the gain from KM (overflowing RP, overwriting KM), or at least mitigate it severely (overwriting Rime, wasting rune regeneration). And somewhere in there, we throw in GCDs because they’re difficult to quantify. You’ll see the power of them later.
So the real question boils down to “do you gain more damage by stalling for KM than you lose because of that stalling?”
^4. Enter, the Sim:
During the Beta, I wrote a DK sim in MATLAB for every spec. I would like to thank those who went out and gathered data for me, and the very few who actually looked at my code. I’ve updated the Frost version with all the relevant changes, and you can see the source code (for the proper KM-stalling version) here:
You will not be able to run that without MATLAB. Sorry, but I have no intention of rewriting it in another language just to have to debug and test it all over again. That’s a month-long process at minimum.
The other versions just have the “Priority()” function changed (which is what controls which abilities get used when, hence the name), so I have also provided those necessary changes here:
Literal, No SR-Banking:
Furthermore, I will provide you with the actual debug output (.txt file) that I used to verify the priorities were working as intended if you want to sift through those (all of the priorities, but a single trial). This will tell you the resources that the simmed DK has right before it tries to figure out what ability to use, as well as some other relevant parameters. Note that these are not designed to be pretty, but functional. If you need additional information, send me a PM and I'll see what I can reasonably do. To save you some time, I guarantee you that rune cooldowns are handled correctly. Through these, you may notice my sim is not absolutely perfect (some issues with Outbreak and IT/PS), but it’s at least 99% of the way there.
These can be found here:
Literal, No Banking:
Literal, SR Banking:
I would like to emphasize that this is a full-fledged simulator evaluated in real-time just like a person playing. If you ask me to pause it at any given instant of time, I can tell you exactly what the DK’s resources/cooldowns/etc. look like.
The sim was configured to run 5,000 boss fights at 6 minutes each with no movement, so these are idealized conditions. The sim ignores client-server latency, so any gain it sees is idealized and higher than what a player would see.
You can see the player’s stats on the corresponding spreadsheets. I have run an i509 version, but as someone pointed out, this could be misleading due to higher haste, so I also ran i496 version. As a note, the results are the same even when set bonuses are turned off. I did not run any sets lower than that because I am lazy and didn’t want to configure a set; I simply pulled the sets that SimulationCraft had listed.
There are 5 different priorities that I tested:
1. Normal – the default priority that should match up rather closely to SimulationCraft’s.
2. Normal w/ Stalling – discussed later, this is stalling done right.
3. Altered – this is my “theorycrafter” interpretation of Mendenbarr’s priority, with some additional minor alterations (primarily with FS).
4. Literal w/ SR-Banking – this is Mendenbarr’s priority when read literally, and includes pooling runes during the execute phase for SR (as he mentioned).
5. Literal w/o SR-Banking – the same as above, but without rune pooling (my modification based on watching the sim sub-35% HP).
^5. The Sim Speaks:
Here’s the output from my sims, which should look similar to a WoL parse:
I won’t spend any time discussing the normal data, as mostly everyone should be familiar with that, so I’ll start with Mendenbarr’s.
Immediately, you can see that this priority is about 6% behind the normal rotation. So, why? If you look at the SecDowntime column, that’s a pretty nice indication right there. SecDowntime is not a true measure of downtime (that would be “Downtime”), but it’s a closer measure to the downtime that a player feels. If you spend more than 1 second waiting after a GCD is ready, then SecDowntime starts ticking. So, with nearly 20% SecDowntime, it’s sitting around quite a bit, which should immediately remind you of my GCD discussion.
If you go to the individual page, you can see that it overflowed a decent amount of RP. This is a result of the literal interpretation and the conflict between never FS-ing with KM (notice, 0 KM-FS’s) and never FS-ing if RE can’t proc. If the sim is at 100 RP, and it can’t proc RE, it won’t use FS.
If it somehow could utilize that RP, that would only add ~2,500 DPS. So where did the rest go? GCDs. Sitting around for so long pushed abilities out of the fight window. Again, I know that at least 310 seconds of that fight should be spent executing abilities (actually, a little more because of PL). However, that didn’t happen. Only 287 were used (360 * (1 – Downtime)). Because of this, the overall rune generation is lower, which means the overall RP generation is lower. It never had the chance to make up that lost time.
That’s also not all. I know that Mendenbarr’s priority always emphasized not wasting resources, and I assure you that I’m not intentionally misrepresenting what was communicated. However, resources get lost in the frequent GCD-locks caused by the rapid ability use near KM procs (particularly, successive KM procs) as I mentioned (because GCDs throttle resource expenditure). Typically, this is the RP that overflows, but there is some rune regeneration waste (because you can’t spend runes while waiting on a GCD). You can see this in the difference in rune regeneration. If you account for the lost RP, you re-gain about 3.6 runes, which means this setup lost about 13 runes because of GCDs compared to the normal priority (nearly 7.5k DPS!).
So, GCDs can really bite you. That’s nearly 7.5% of the total DPS, and that’s absolutely why I included them as a resource, but you only see them if you look at the fight in its entirety.
On another note, if you look at the SR usage, it’s not really phenomenal as the max that can be used is 18 given the execute window. This is because, although the sim banks a rune for SR, Mendenbarr tacked on a condition that if your next swing comes within 1s, you should just wait to try and get a KM-OB. So, it does, and this causes resource loss. This is why I included the setup that isn’t banking for SR. It’s a small gain (and you'll notice it actually uses less SR's), but it ultimately doesn’t change much.
Let’s look at KM use since there was that discussion on probabilities. If you remember, in the altered priority, I stated that I changed how FS was being used. I allowed it to burn off some KM-FS’s if the sim was unable to OB. I also allowed it to overwrite Rime, and removed the SR swing timer condition. In turn, it burned off 17 KM-FS’s compared to getting 8 more KM-OB’s, so, here’s the answer to the scenario probabilities mentioned earlier. It sits right at the break-even point (or a little behind, but I’m willing to call it even).
But here’s the main difference even though it’s at the breakeven point: burning off that RP eliminates the RP overflow, and spending those GCDs means utilizing more GCDs, opening up more abilities, which leads to more DPS.
Ultimately, though, it doesn’t quite get past the 310 GCD mark, though, so some abilities have been pushed out. In addition, some rune regeneration is also wasted through waiting and GCDs (about 6 runes). This primarily occurs during the temporary GCD-locks. Putting a number on that loss, this means about 5 FS’s, 4 OBs, and 2 HB's, or about 3.4k DPS.
^6. Including the Source:
So, what’s up with this “stalling done right” priority? Where did that come from? Well, the "community" answer has looked at everything but the most obvious part: the swing timer; that is, the passive method that generates the KM resource, and the source of this entire discussion. The ultimate premise is that overwriting any KM proc is a loss because KM is a resource, which you don’t want to waste.
This priority is nothing but the normal priority with a few conditions tacked on to OB/FS that are more stringent than Mendenbarr’s. He is on the right track that you never want to waste resources, but he didn’t include KM as a resource (and GCDs, but these can only be mitigated, not prevented).
So, the logic for OB looks like this:
If you are not wasting rune regeneration, if you don’t have KM, and if your next auto-attack will happen before you start wasting rune regeneration, then stall for KM. Note that the sim will fill these empty GCDs until the swing with other actions like HoW, Rime-HB, and FS; it will not just sit around doing nothing.
And for FS:
If you are not wasting rune regeneration, if you have KM, if you cannot OB (yet), if you won’t overflow more than 10 RP (I later found this condition to be unnecessary due to frequency), and if your next auto-attack will happen after you would have the correct runes to OB, then stall for KM. The same note for OB applies here, minus FS.
If you followed my discussion up until this point, you should be able to see that those are the only two scenarios in which the only resource you have the potential to lose is Rime (and a little RP, but, again, I found this to not really happen). I already mentioned that overwriting Rime in favor of KM-OB is a DPS gain, and that as long as you don’t overflow more than around 10 RP per extra KM-OB, you’re fine. Thus, these are the only two scenarios in which stalling can lead to a gain. So, the question is then “how often do these scenarios occur?”
As it turns out, it is enough to be a gain, but not often enough to be a large one. You can see the pretty significant difference in the ratio of KM-OB to KM-FS for both the normal and stalling setup, but this only results in a 1.16% DPS gain. You may not like it when you waste a KM on a queued FS, but they add up, and all of the focus on KM-OB’s results in a higher potential to overwrite Rime (and, thus, be a smaller gain). There’s also some RP that has overflowed, but like I briefly hinted at earlier, tacking on an RP condition to OB’s really didn’t do anything about it, which means they aren’t causing the waste, so I removed those lines of code. So, if you looked in the source and noticed the discrepancy, that’s why. The overflow simply comes from trying to execute all the abilities in a short timespan. If I could figure out how to stop that overflow and utilize the RP, the total gain is still under 2%, so it's not a big deal.
All of the other abilities, in terms of damage, are virtually the same.
Of course, that’s i509. What about i496, which has lower haste? A 1.34% gain, so it is higher, but barely so. The gains from RC and BT are slightly higher, but don't exceed 1.50%. Thus, I think it is fairly safe to say that the gain from stalling for KM is not very high in a raid setting, regardless of gear. The potential cost is far too high for such a little gain. You will be misled if you only focus on the damage difference of a KM-FS and a KM-OB, because that’s not all that’s at stake here.
Actually, I can remove the KM-OB line from my sim's normal priority and not affect the DPS at all. This removes any interaction between the priority and KM, in effect, ignoring KM altogether. That's certainly radical.
Also, remember that my sim is not being affected by latency, which will only lower the gain.
I hope this thread has enhanced your understanding of not only KM, but also the intricacies of the DK rotation and resource generation.
So, in summary:
^7. The Answer:
Mendenbarr is on the correct track, but not fully there. When you are properly stalling for KM, which entails not wasting resources (via rune regeneration, RP capping, KM overwrites, and GCD management to avoid pushing abilities out of the fight window and loss during GCD-lock), then stalling for KM is a gain under 2 conditions only. This gain is miniscule—barely even amounting to 1% in i509 gear, and slightly more in lesser gear—because the situations in which those conditions occur are few and because of the trade-off costs.
These two conditions are as follows:
1. When you have the runes to use OB, you don’t have KM, and your next swing will come before you start wasting resources.
2. When you don’t have the runes to use OB, you have KM, you do have the RP to use FS, and your next swing comes after the correct runes will regenerate, allowing you to OB.
For numerous reasons, I would recommend against stalling for KM (note that I am not denying that stalling can lead to a gain):
1. My sim is bypassing latency and capable of responding to an event within less than 0.01s. Humans do not have that luxury and latency is absolutely not on your side.
2. My sim is simulating perfect conditions with 100% uptime (i.e. no movement). Movement will throw off swing timers and rune regeneration rates.
3. My sim doesn’t need to focus on external conditions or distractions that players need to manage. The player’s attention will inevitably be divided.
4. My sim is not using AMS to feed itself RP. This would cause a situation where RP capping is likely, which complicates stalling.
5. The observed gain is barely over 1%.
6. The penalty for screwing up is high.
7. As you get more haste, the windows become shorter, making the requirements stricter.
With the exception of #5, all of these will decrease the observed gain by the player. Thus, the actual gain you will see is less than 1%. If you mess up, you are likely causing yourself a loss, evidenced by the other priorities that were tested.
Revisiting the original question, then, I would recommend that you do not stall to allow for more KM-OB’s. You are better off ignoring* it.
*By using the word "ignore," I have assumed that you prioritize non-KM OB > non-KM FS, which, you should be. In layman's terms, this means that if you have the resources to use KM-FS and also the resources to use KM-OB, you should pick KM-OB (which I hope is intuitive).
^8. Addendum: KM in 5.2 and DPS T15-4pc:
The following is a quote from one of my later posts which has been added to the original post for conciseness. The data being referenced can be found here: