[ 
https://issues.apache.org/jira/browse/LUCENE-10099?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Robert Miller updated LUCENE-10099:
----------------------------------------
    Description: 
Allow async-profiler in addition to the JFR profiler.

async profiler description:
{noformat}
This project is a low overhead sampling profiler for Java that does not suffer 
from Safepoint bias problem. 
It features HotSpot-specific APIs to collect stack traces and to track memory 
allocations.
The profiler works with OpenJDK, Oracle JDK and other Java runtimes based on 
the HotSpot JVM.
async-profiler can trace the following kinds of events:

* CPU cycles
* Hardware and Software performance counters like cache misses, branch misses, 
page faults, context switches etc.
* Allocations in Java Heap
* Contented lock attempts, including both Java object monitors and 
ReentrantLocks
{noformat}
 

The "tests.asyncprofile" mode switch turns on the async-profiler 
([https://github.com/jvm-profiling-tools/async-profiler]) during test execution,
 and prints a simple summary at the end.

For example, top-10 histogram of methods (cpu samples):
{noformat}
gradlew -p lucene/core test -Ptests.asyncprofile=true{noformat}
Alternatively, you can profile heap allocations instead: TBD

*Requirements*
 * You need to download async-profiler 2.x 
([https://github.com/jvm-profiling-tools/async-profiler])
 * You need the .so lib in a standard shared folder or one of the directories 
from LD_LIBRARY_PATH (Linux, though not Arch by
 default), DYLD_LIBRARY_PATH (Mac OS), or -Djava.library.path. I think 
${HOME}/libs also works
 on Linux. We could also allow specifying the location directly as an option.
 * Debug version of Java is important for best results and is required for heap 
allocation profiling. Available as package on Ubuntu, can be built with a small 
modification on Arch.

The following permissions need to be set to allow for the proper permissions 
for profiling:
{noformat}
# sysctl kernel.perf_event_paranoid=1 
# sysctl kernel.kptr_restrict=0{noformat}
 

  was:
Allow async-profiler in addition to the JFR profiler.

async profiler description:
{noformat}
This project is a low overhead sampling profiler for Java that does not suffer 
from Safepoint bias problem. 
It features HotSpot-specific APIs to collect stack traces and to track memory 
allocations.
The profiler works with OpenJDK, Oracle JDK and other Java runtimes based on 
the HotSpot JVM.
async-profiler can trace the following kinds of events:
* CPU cycles
* Hardware and Software performance counters like cache misses, branch misses, 
page faults, context switches etc.
* Allocations in Java Heap
* Contented lock attempts, including both Java object monitors and 
ReentrantLocks
{noformat}
 

The "tests.asyncprofile" mode switch turns on the async-profiler 
([https://github.com/jvm-profiling-tools/async-profiler]) during test execution,
 and prints a simple summary at the end.

For example, top-10 histogram of methods (cpu samples):
{noformat}
gradlew -p lucene/core test -Ptests.asyncprofile=true{noformat}
Alternatively, you can profile heap allocations instead: TBD

*Requirements*
 * You need to download async-profiler 2.x 
([https://github.com/jvm-profiling-tools/async-profiler])
 * You need the .so lib in a standard shared folder or one of the directories 
from LD_LIBRARY_PATH (Linux, though not Arch by
 default), DYLD_LIBRARY_PATH (Mac OS), or -Djava.library.path. I think 
${HOME}/libs also works
 on Linux. We could also allow specifying the location directly as an option.
 * Debug version of Java is important for best results and is required for heap 
allocation profiling. Available as package on Ubuntu, can be built with a small 
modification on Arch.

The following permissions need to be set to allow for the proper permissions 
for profiling:
{noformat}
# sysctl kernel.perf_event_paranoid=1 
# sysctl kernel.kptr_restrict=0{noformat}
 


> 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
>            Priority: Minor
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Allow async-profiler in addition to the JFR profiler.
> async profiler description:
> {noformat}
> This project is a low overhead sampling profiler for Java that does not 
> suffer from Safepoint bias problem. 
> It features HotSpot-specific APIs to collect stack traces and to track memory 
> allocations.
> The profiler works with OpenJDK, Oracle JDK and other Java runtimes based on 
> the HotSpot JVM.
> async-profiler can trace the following kinds of events:
> * CPU cycles
> * Hardware and Software performance counters like cache misses, branch 
> misses, page faults, context switches etc.
> * Allocations in Java Heap
> * Contented lock attempts, including both Java object monitors and 
> ReentrantLocks
> {noformat}
>  
> The "tests.asyncprofile" mode switch turns on the async-profiler 
> ([https://github.com/jvm-profiling-tools/async-profiler]) during test 
> execution,
>  and prints a simple summary at the end.
> For example, top-10 histogram of methods (cpu samples):
> {noformat}
> gradlew -p lucene/core test -Ptests.asyncprofile=true{noformat}
> Alternatively, you can profile heap allocations instead: TBD
> *Requirements*
>  * You need to download async-profiler 2.x 
> ([https://github.com/jvm-profiling-tools/async-profiler])
>  * You need the .so lib in a standard shared folder or one of the directories 
> from LD_LIBRARY_PATH (Linux, though not Arch by
>  default), DYLD_LIBRARY_PATH (Mac OS), or -Djava.library.path. I think 
> ${HOME}/libs also works
>  on Linux. We could also allow specifying the location directly as an option.
>  * Debug version of Java is important for best results and is required for 
> heap allocation profiling. Available as package on Ubuntu, can be built with 
> a small modification on Arch.
> The following permissions need to be set to allow for the proper permissions 
> for profiling:
> {noformat}
> # sysctl kernel.perf_event_paranoid=1 
> # sysctl kernel.kptr_restrict=0{noformat}
>  



--
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