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