Mark Robert Miller created LUCENE-10099:
-------------------------------------------

             Summary: Add -Ptests.asyncprofile option.
                 Key: LUCENE-10099
                 URL: https://issues.apache.org/jira/browse/LUCENE-10099
             Project: Lucene - Core
          Issue Type: Test
          Components: modules/test-framework
            Reporter: Mark Robert Miller
            Assignee: Mark Robert Miller


Man, I don't even remember the last time I contributed an issue to Lucene that 
was for Lucene. Feels like it has to be near a decade.

I recently finished some work that took quite an investment around automated 
performance aids. It wasn't giving me that feeling of satisfaction I faintly 
remember though. Yesterday, I was mostly feeling nostalgic about past times 
when I would bring up some nasty inefficiency or ugly problem and not hear 
about how it doesn't likely matter or doesn't sound right or 'meh' - I'd hear 
"omg, you're right, this must be fixed" and then "you're an idiot, it's even 
worse than that".

So new little project for today - the first of two things I'd like to 
contribute - async profiler support for the tests.profile option.

I have a rough draft, it works roughly as tests.profile but instead of:

{noformat}
PROFILE SUMMARY from 174 events (total: 174)
  tests.profile.mode=cpu
  tests.profile.count=10
  tests.profile.stacksize=1
  tests.profile.linenumbers=false
PERCENT       CPU SAMPLES   STACK
5.17%         9             java.util.zip.Inflater#inflateBytesBytes()
3.45%         6             java.io.FileInputStream#open0()
2.30%         4             java.io.UnixFileSystem#getBooleanAttributes0()
2.30%         4             java.io.RandomAccessFile#readBytes()
1.72%         3             java.io.UnixFileSystem#normalize()
1.72%         3             
org.apache.lucene.util.automaton.RunAutomaton#<init>()
1.72%         3             java.util.Arrays#fill()
1.15%         2             
java.lang.invoke.DirectMethodHandle$Holder#invokeStatic()
1.15%         2             java.lang.StringLatin1#charAt()
1.15%         2             java.io.DataOutputStream#writeUTF()
{noformat}
you get more like:

{noformat}
PROFILE SUMMARY from 368675 events (total: 368675)
  tests.profile.mode=cpu
  tests.profile.count=10
  tests.profile.stacksize=1
  tests.profile.linenumbers=false
PERCENT       CPU SAMPLES   STACK
3.89%         14353         #SymbolTable::lookup_dynamic()
1.67%         6171          #Interpreter()
1.40%         5175          #InstanceKlass::find_method_index()
1.34%         4958          #__tls_get_addr()
1.13%         4177          #I2C/C2I adapters()
1.09%         4022          #resource_allocate_bytes()
0.69%         2528          #ValueStack::values_do()
0.62%         2298          #no_Java_frame()
0.62%         2281          #ScopeDesc::decode_body()
0.55%         2017          #Dictionary::find()

{noformat}

as well as these additional files shown below. Sampling was a bit intense I 
guess, sorry for the slow load on the flame graph ;)

Summary
https://elated-banach-e02e8b.netlify.app/asyncprofiler/hotspot-pid-686723-id-0-20210912-162040.txt

Results Tree
https://elated-banach-e02e8b.netlify.app/asyncprofiler/tree-hotspot-pid-686723-id-0-20210912-162044.html

Results Flame Graph
https://elated-banach-e02e8b.netlify.app/asyncprofiler/flame-hotspot-pid-686723-id-0-20210912-162040.html





 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to