GINA Issues

Discussion in 'The Veterans' Lounge' started by Xorsazis, Jan 23, 2016.

  1. Xorsazis Augur

    Having issues since TBM released with GINA timing on raids. If I am doing group content or anything else, it works perfectly fine, but on raids it seems to delay by like 30 seconds to a full minute from when things happen to when it triggers in GINA.

    I have uninstalled and reinstalled GINA.
    I have deleted all triggers and re-imported them.
    I have deleted every trigger except from current event.
    I have tried on my SSD and on a normal hard disk.
    I changed /loginterval from 1 to 0.

    The only thing I have not tried is reinstalling EQ completely from scratch and redoing all my settings and UI's.

    Any ideas what could be causing the issue?
  2. segap Augur


    Try to exclude your log files from your anti-virus. Some people I know have had issues with Microsoft's free AV and extreme log lag during raids. IO during group content doesn't seem to stress it nearly as much.
  3. Corwyhn Lionheart Guild Leader, Lions of the Heart

    I am not a GINA expert by far but as I understand it, it picks up it's info from your log file. Have you tried starting a new log file? Can't see how that would affect things but worth trying.
  4. Sirene_Fippy Okayest Bard

    I used to have this problem. In a raid, when you're near a boss mob (and so is everyone else) with lots of pets, spells, melee going on, there are a huge amount of lines being written to your log file. GINA takes each line as it's written to your log, and reads it through a filter (the giant filter you've created with every GINA trigger you have).

    GINA has a cool Performance tab you can use to diagnose your worst performing triggers:

    [IMG]

    When you use GINA, press Start (and never Stop until you want the data erased), and it will record how much memory each of your triggers is using (my test screenshot was after duoing 2 exp mobs). Sort by "Combined total us", and the worst triggers will quickly go to the top - they might even be triggers that go off 0 times. You can test it out on exp mobs; no need to raid (especially if GINA lags out).

    In my example, the average value for my triggers is ~8,000 us. The highest value is 1,898,328 us - that's a huge difference, and for one trigger that fired 0 times. You want to identify your memory-intensive triggers and either make them more efficient, or put them in a special trigger set that you use only when necessary. Note that total memory use isn't a consistent measurement; when you reset and do another test, you wont have exactly the same # of line comparisons. Instead, measure each triggers performance relative to your other triggers (make your worst triggers to be less bad).

    There are a few things you can do to make a trigger perform better.

    Some regex operations that are pretty "expensive" memory wise:

    - variables {s} {c} {n}
    - wildcards .*
    - grouping ()
    - lookbehinds and lookahead ?=, ?!, ?>=, ?>!

    Aside from these, the longer your Search Text is, the worse your trigger will perform. Ideally you want triggers to fail quickly, and to keep them short.

    The best way to make a trigger fail quickly is to put ^ at the beginning. ^ is a regex metacharacter that means "anchor beginning of line." It tells GINA that whatever comes after ^ has to be the first thing in the line, otherwise it's not a match - it fails very quickly.

    Example: (my worst performing trigger in screenshot - Holistic Health - Bane)
    Old Search Text: {s} has been destroyed by Holistic Health. The bones arise to serve the goddess.
    New Search Text: ^{s} has been destroyed by Holistic Health. The bones arise to serve the goddess.

    [IMG]

    Note where Holistic Health is on the list - it's memory use was reduced by 95% (1.85s total to 0.1s) all because I added ^ to the beginning of the Search Text.

    Some tips/examples of making triggers play nice:

    1. Front-load your Search Text:

    Search Text: Lady, avoid the {s}!

    This trigger will search every line in your log file for the word Lady. It is more efficient to make the trigger work from the very beginning of the emote:

    Search Text: ^I, Dartain, do your bidding mistress. Lady, avoid the {s}!

    This trigger will immediately fail if you have lines that do not begin with "I, Dartain..."

    2. Replace variables with words:

    Search Text: {S1} {S2} YOU for {N} points of damage. \(Rampage\)

    This trigger uses a lot of memory because it saves three variables {S1}, {S2}, and {N}, it starts with any two words (every line is tested against this), and has a small wildcard (. matches any single character). Here is the same trigger more efficiently:

    Search Text: ^{S} \w+ YOU for {N} points of damage\. \(Rampage\)$

    I added anchor beginning and end of line (^ and $), and changed the second variable to "any word" \w+. I also escaped the period at the end, so it matches a literal period.

    3. Use Fast Check:

    Search Text: Decay spews a pile of living vomit in your direction!

    More efficient version:

    [IMG]

    You can enable Use Fast Check to make things faster as well (read more about Fast Check here). Fast Check selects 8 characters to match against lines, instead of your whole Search Text (much faster). You can manipulate it to pick the most unique 8 characters in your Search Text like so:

    Search Text: ^Decay( spews a pile of living vomit in )your direction!

    Fast check excludes the characters in () and so it will pick "your dir" which is much less common than "Decay sp" which happens every time Decay spews vomit at someone.

    4. Reconsider needless GINA fluff:
    Example:

    [IMG]

    You might think you need a 10 second warning before and after discs fade, with audio and visuals, and timers, and end early text, but all that stuff is going to cost you. Just like our in game chat windows, too much information from GINA becomes so overwhelming it can be completely useless - don't overdo it.

    Every time you make "End early text" for a timer, it's like a new GINA trigger is created, that only turns on when your timer is running. These triggers should be efficient, and relevant to your interests - instead of adding the "fades" message for every disc in the game, measure how long it lasts, and set that to the duration of your timer. I like perfect triggers (that end exactly when the disc ends), but once you have too many GINA triggers, sacrifices need to be made. At this point, I only use "End early text" for timers that are recurring (like adds spawning), discs that have variable duration (things with hit counters), or things that require specific action upon fading (the bard BP, a secondary DPS disc).

    The best tip I can give you is to put ^ at the beginning of triggers that allow it, and to Enable Fast Check. Those two things will most likely solve your issues, and you can take additional steps as needed until your issues go away completely.
    Fnyyen, Mithra, Fanra and 23 others like this.
  5. Xorsazis Augur


    I think I love you. Thank you so much for the tips. I need to learn more about how to use switches n stuff.
  6. Pani Augur

    What a great explanation. Thank you!:)
  7. Corwyhn Lionheart Guild Leader, Lions of the Heart

    Very helpful and informative post Sirene!
    Iila likes this.
  8. Xorsazis Augur

    Happy to report, this helped me tonight. I did all the things you had there, and while it didn't seem like they were horribly bad off, I noticed some older CotF triggers were eating memory.

    So I disabled all expansions except TBM, and changed some of my class triggers as proposed and it was spot on during Damsel of Decay tonight.

    Thanks so much!
    Iila likes this.
  9. Iila Augur

    Wow. This is super helpful, and way beyond what I could have come up with.

    My suggestion would have been to trim what logs you are collecting in the EQ filters, and drop the ones that don't matter you. I have all other melee parses turned off, because having those on lagged me pretty badly.
  10. Brohg Augur

    Afk editing my whole GINA set…
  11. Bamkan Augur


    expecting the share later on today :)
  12. HoodenShuklak Augur

    Say for example you have a gina pack that has triggers up to level 80, but you're only up to level 60 content, does it help Gina avoid lag if you simply uncheck them?

    Great post and I'll be updating triggers in the mean time!