jruby-async-profiler 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.gitmodules +3 -0
- data/Gemfile +4 -0
- data/README.md +35 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/ext/Rakefile +6 -0
- data/ext/async-profiler/.gitattributes +1 -0
- data/ext/async-profiler/.gitignore +6 -0
- data/ext/async-profiler/.travis.yml +11 -0
- data/ext/async-profiler/CHANGELOG.md +107 -0
- data/ext/async-profiler/JavaHome.class +0 -0
- data/ext/async-profiler/LICENSE +201 -0
- data/ext/async-profiler/Makefile +66 -0
- data/ext/async-profiler/README.md +487 -0
- data/ext/async-profiler/demo/SwingSet2.svg +2247 -0
- data/ext/async-profiler/docs/cddl1.txt +358 -0
- data/ext/async-profiler/profiler.sh +240 -0
- data/ext/async-profiler/src/allocTracer.cpp +155 -0
- data/ext/async-profiler/src/allocTracer.h +74 -0
- data/ext/async-profiler/src/arch.h +69 -0
- data/ext/async-profiler/src/arguments.cpp +265 -0
- data/ext/async-profiler/src/arguments.h +152 -0
- data/ext/async-profiler/src/codeCache.cpp +128 -0
- data/ext/async-profiler/src/codeCache.h +99 -0
- data/ext/async-profiler/src/engine.cpp +50 -0
- data/ext/async-profiler/src/engine.h +38 -0
- data/ext/async-profiler/src/flameGraph.cpp +770 -0
- data/ext/async-profiler/src/flameGraph.h +118 -0
- data/ext/async-profiler/src/flightRecorder.cpp +727 -0
- data/ext/async-profiler/src/flightRecorder.h +39 -0
- data/ext/async-profiler/src/frameName.cpp +189 -0
- data/ext/async-profiler/src/frameName.h +56 -0
- data/ext/async-profiler/src/itimer.cpp +49 -0
- data/ext/async-profiler/src/itimer.h +43 -0
- data/ext/async-profiler/src/jattach/jattach.c +437 -0
- data/ext/async-profiler/src/java/one/profiler/AsyncProfiler.java +160 -0
- data/ext/async-profiler/src/java/one/profiler/AsyncProfilerMXBean.java +43 -0
- data/ext/async-profiler/src/java/one/profiler/Counter.java +25 -0
- data/ext/async-profiler/src/java/one/profiler/Events.java +28 -0
- data/ext/async-profiler/src/javaApi.cpp +124 -0
- data/ext/async-profiler/src/lockTracer.cpp +161 -0
- data/ext/async-profiler/src/lockTracer.h +55 -0
- data/ext/async-profiler/src/mutex.cpp +33 -0
- data/ext/async-profiler/src/mutex.h +49 -0
- data/ext/async-profiler/src/os.h +45 -0
- data/ext/async-profiler/src/os_linux.cpp +129 -0
- data/ext/async-profiler/src/os_macos.cpp +115 -0
- data/ext/async-profiler/src/perfEvents.h +60 -0
- data/ext/async-profiler/src/perfEvents_linux.cpp +550 -0
- data/ext/async-profiler/src/perfEvents_macos.cpp +64 -0
- data/ext/async-profiler/src/profiler.cpp +952 -0
- data/ext/async-profiler/src/profiler.h +238 -0
- data/ext/async-profiler/src/spinLock.h +66 -0
- data/ext/async-profiler/src/stackFrame.h +57 -0
- data/ext/async-profiler/src/stackFrame_aarch64.cpp +75 -0
- data/ext/async-profiler/src/stackFrame_arm.cpp +58 -0
- data/ext/async-profiler/src/stackFrame_i386.cpp +82 -0
- data/ext/async-profiler/src/stackFrame_x64.cpp +113 -0
- data/ext/async-profiler/src/symbols.h +37 -0
- data/ext/async-profiler/src/symbols_linux.cpp +354 -0
- data/ext/async-profiler/src/symbols_macos.cpp +156 -0
- data/ext/async-profiler/src/vmEntry.cpp +173 -0
- data/ext/async-profiler/src/vmEntry.h +105 -0
- data/ext/async-profiler/src/vmStructs.cpp +104 -0
- data/ext/async-profiler/src/vmStructs.h +112 -0
- data/ext/async-profiler/src/wallClock.cpp +96 -0
- data/ext/async-profiler/src/wallClock.h +56 -0
- data/ext/async-profiler/test/AllocatingTarget.java +26 -0
- data/ext/async-profiler/test/LoadLibraryTest.java +21 -0
- data/ext/async-profiler/test/Target.java +31 -0
- data/ext/async-profiler/test/ThreadsTarget.java +35 -0
- data/ext/async-profiler/test/alloc-smoke-test.sh +36 -0
- data/ext/async-profiler/test/load-library-test.sh +35 -0
- data/ext/async-profiler/test/smoke-test.sh +37 -0
- data/ext/async-profiler/test/thread-smoke-test.sh +32 -0
- data/jruby-async-profiler.gemspec +32 -0
- data/lib/jruby/async/profiler.rb +10 -0
- data/lib/jruby/async/profiler/version.rb +7 -0
- metadata +155 -0
@@ -0,0 +1,358 @@
|
|
1
|
+
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
|
2
|
+
|
3
|
+
1. Definitions.
|
4
|
+
|
5
|
+
1.1. "Contributor" means each individual or entity that
|
6
|
+
creates or contributes to the creation of Modifications.
|
7
|
+
|
8
|
+
1.2. "Contributor Version" means the combination of the
|
9
|
+
Original Software, prior Modifications used by a
|
10
|
+
Contributor (if any), and the Modifications made by that
|
11
|
+
particular Contributor.
|
12
|
+
|
13
|
+
1.3. "Covered Software" means (a) the Original Software, or
|
14
|
+
(b) Modifications, or (c) the combination of files
|
15
|
+
containing Original Software with files containing
|
16
|
+
Modifications, in each case including portions thereof.
|
17
|
+
|
18
|
+
1.4. "Executable" means the Covered Software in any form
|
19
|
+
other than Source Code.
|
20
|
+
|
21
|
+
1.5. "Initial Developer" means the individual or entity
|
22
|
+
that first makes Original Software available under this
|
23
|
+
License.
|
24
|
+
|
25
|
+
1.6. "Larger Work" means a work which combines Covered
|
26
|
+
Software or portions thereof with code not governed by the
|
27
|
+
terms of this License.
|
28
|
+
|
29
|
+
1.7. "License" means this document.
|
30
|
+
|
31
|
+
1.8. "Licensable" means having the right to grant, to the
|
32
|
+
maximum extent possible, whether at the time of the initial
|
33
|
+
grant or subsequently acquired, any and all of the rights
|
34
|
+
conveyed herein.
|
35
|
+
|
36
|
+
1.9. "Modifications" means the Source Code and Executable
|
37
|
+
form of any of the following:
|
38
|
+
A. Any file that results from an addition to,
|
39
|
+
deletion from or modification of the contents of a
|
40
|
+
file containing Original Software or previous
|
41
|
+
Modifications;
|
42
|
+
B. Any new file that contains any part of the
|
43
|
+
Original Software or previous Modification; or
|
44
|
+
C. Any new file that is contributed or otherwise made
|
45
|
+
available under the terms of this License.
|
46
|
+
|
47
|
+
1.10. "Original Software" means the Source Code and
|
48
|
+
Executable form of computer software code that is
|
49
|
+
originally released under this License.
|
50
|
+
|
51
|
+
1.11. "Patent Claims" means any patent claim(s), now owned
|
52
|
+
or hereafter acquired, including without limitation,
|
53
|
+
method, process, and apparatus claims, in any patent
|
54
|
+
Licensable by grantor.
|
55
|
+
|
56
|
+
1.12. "Source Code" means (a) the common form of computer
|
57
|
+
software code in which modifications are made and (b)
|
58
|
+
associated documentation included in or with such code.
|
59
|
+
|
60
|
+
1.13. "You" (or "Your") means an individual or a legal
|
61
|
+
entity exercising rights under, and complying with all of
|
62
|
+
the terms of, this License. For legal entities, "You"
|
63
|
+
includes any entity which controls, is controlled by, or is
|
64
|
+
under common control with You. For purposes of this
|
65
|
+
definition, "control" means (a) the power, direct or
|
66
|
+
indirect, to cause the direction or management of such
|
67
|
+
entity, whether by contract or otherwise, or (b) ownership
|
68
|
+
of more than fifty percent (50%) of the outstanding shares
|
69
|
+
or beneficial ownership of such entity.
|
70
|
+
|
71
|
+
2. License Grants.
|
72
|
+
|
73
|
+
2.1. The Initial Developer Grant.
|
74
|
+
Conditioned upon Your compliance with Section 3.1 below and
|
75
|
+
subject to third party intellectual property claims, the
|
76
|
+
Initial Developer hereby grants You a world-wide,
|
77
|
+
royalty-free, non-exclusive license:
|
78
|
+
(a) under intellectual property rights (other than
|
79
|
+
patent or trademark) Licensable by Initial Developer,
|
80
|
+
to use, reproduce, modify, display, perform,
|
81
|
+
sublicense and distribute the Original Software (or
|
82
|
+
portions thereof), with or without Modifications,
|
83
|
+
and/or as part of a Larger Work; and
|
84
|
+
(b) under Patent Claims infringed by the making,
|
85
|
+
using or selling of Original Software, to make, have
|
86
|
+
made, use, practice, sell, and offer for sale, and/or
|
87
|
+
otherwise dispose of the Original Software (or
|
88
|
+
portions thereof).
|
89
|
+
(c) The licenses granted in Sections 2.1(a) and (b)
|
90
|
+
are effective on the date Initial Developer first
|
91
|
+
distributes or otherwise makes the Original Software
|
92
|
+
available to a third party under the terms of this
|
93
|
+
License.
|
94
|
+
(d) Notwithstanding Section 2.1(b) above, no patent
|
95
|
+
license is granted: (1) for code that You delete from
|
96
|
+
the Original Software, or (2) for infringements
|
97
|
+
caused by: (i) the modification of the Original
|
98
|
+
Software, or (ii) the combination of the Original
|
99
|
+
Software with other software or devices.
|
100
|
+
|
101
|
+
2.2. Contributor Grant.
|
102
|
+
Conditioned upon Your compliance with Section 3.1 below and
|
103
|
+
subject to third party intellectual property claims, each
|
104
|
+
Contributor hereby grants You a world-wide, royalty-free,
|
105
|
+
non-exclusive license:
|
106
|
+
(a) under intellectual property rights (other than
|
107
|
+
patent or trademark) Licensable by Contributor to
|
108
|
+
use, reproduce, modify, display, perform, sublicense
|
109
|
+
and distribute the Modifications created by such
|
110
|
+
Contributor (or portions thereof), either on an
|
111
|
+
unmodified basis, with other Modifications, as
|
112
|
+
Covered Software and/or as part of a Larger Work; and
|
113
|
+
(b) under Patent Claims infringed by the making,
|
114
|
+
using, or selling of Modifications made by that
|
115
|
+
Contributor either alone and/or in combination with
|
116
|
+
its Contributor Version (or portions of such
|
117
|
+
combination), to make, use, sell, offer for sale,
|
118
|
+
have made, and/or otherwise dispose of: (1)
|
119
|
+
Modifications made by that Contributor (or portions
|
120
|
+
thereof); and (2) the combination of Modifications
|
121
|
+
made by that Contributor with its Contributor Version
|
122
|
+
(or portions of such combination).
|
123
|
+
(c) The licenses granted in Sections 2.2(a) and
|
124
|
+
2.2(b) are effective on the date Contributor first
|
125
|
+
distributes or otherwise makes the Modifications
|
126
|
+
available to a third party.
|
127
|
+
(d) Notwithstanding Section 2.2(b) above, no patent
|
128
|
+
license is granted: (1) for any code that Contributor
|
129
|
+
has deleted from the Contributor Version; (2) for
|
130
|
+
infringements caused by: (i) third party
|
131
|
+
modifications of Contributor Version, or (ii) the
|
132
|
+
combination of Modifications made by that Contributor
|
133
|
+
with other software (except as part of the
|
134
|
+
Contributor Version) or other devices; or (3) under
|
135
|
+
Patent Claims infringed by Covered Software in the
|
136
|
+
absence of Modifications made by that Contributor.
|
137
|
+
|
138
|
+
3. Distribution Obligations.
|
139
|
+
|
140
|
+
3.1. Availability of Source Code.
|
141
|
+
Any Covered Software that You distribute or otherwise make
|
142
|
+
available in Executable form must also be made available in
|
143
|
+
Source Code form and that Source Code form must be
|
144
|
+
distributed only under the terms of this License. You must
|
145
|
+
include a copy of this License with every copy of the
|
146
|
+
Source Code form of the Covered Software You distribute or
|
147
|
+
otherwise make available. You must inform recipients of any
|
148
|
+
such Covered Software in Executable form as to how they can
|
149
|
+
obtain such Covered Software in Source Code form in a
|
150
|
+
reasonable manner on or through a medium customarily used
|
151
|
+
for software exchange.
|
152
|
+
|
153
|
+
3.2. Modifications.
|
154
|
+
The Modifications that You create or to which You
|
155
|
+
contribute are governed by the terms of this License. You
|
156
|
+
represent that You believe Your Modifications are Your
|
157
|
+
original creation(s) and/or You have sufficient rights to
|
158
|
+
grant the rights conveyed by this License.
|
159
|
+
|
160
|
+
3.3. Required Notices.
|
161
|
+
You must include a notice in each of Your Modifications
|
162
|
+
that identifies You as the Contributor of the Modification.
|
163
|
+
You may not remove or alter any copyright, patent or
|
164
|
+
trademark notices contained within the Covered Software, or
|
165
|
+
any notices of licensing or any descriptive text giving
|
166
|
+
attribution to any Contributor or the Initial Developer.
|
167
|
+
|
168
|
+
3.4. Application of Additional Terms.
|
169
|
+
You may not offer or impose any terms on any Covered
|
170
|
+
Software in Source Code form that alters or restricts the
|
171
|
+
applicable version of this License or the recipients'
|
172
|
+
rights hereunder. You may choose to offer, and to charge a
|
173
|
+
fee for, warranty, support, indemnity or liability
|
174
|
+
obligations to one or more recipients of Covered Software.
|
175
|
+
However, you may do so only on Your own behalf, and not on
|
176
|
+
behalf of the Initial Developer or any Contributor. You
|
177
|
+
must make it absolutely clear that any such warranty,
|
178
|
+
support, indemnity or liability obligation is offered by
|
179
|
+
You alone, and You hereby agree to indemnify the Initial
|
180
|
+
Developer and every Contributor for any liability incurred
|
181
|
+
by the Initial Developer or such Contributor as a result of
|
182
|
+
warranty, support, indemnity or liability terms You offer.
|
183
|
+
|
184
|
+
3.5. Distribution of Executable Versions.
|
185
|
+
You may distribute the Executable form of the Covered
|
186
|
+
Software under the terms of this License or under the terms
|
187
|
+
of a license of Your choice, which may contain terms
|
188
|
+
different from this License, provided that You are in
|
189
|
+
compliance with the terms of this License and that the
|
190
|
+
license for the Executable form does not attempt to limit
|
191
|
+
or alter the recipient's rights in the Source Code form
|
192
|
+
from the rights set forth in this License. If You
|
193
|
+
distribute the Covered Software in Executable form under a
|
194
|
+
different license, You must make it absolutely clear that
|
195
|
+
any terms which differ from this License are offered by You
|
196
|
+
alone, not by the Initial Developer or Contributor. You
|
197
|
+
hereby agree to indemnify the Initial Developer and every
|
198
|
+
Contributor for any liability incurred by the Initial
|
199
|
+
Developer or such Contributor as a result of any such terms
|
200
|
+
You offer.
|
201
|
+
|
202
|
+
3.6. Larger Works.
|
203
|
+
You may create a Larger Work by combining Covered Software
|
204
|
+
with other code not governed by the terms of this License
|
205
|
+
and distribute the Larger Work as a single product. In such
|
206
|
+
a case, You must make sure the requirements of this License
|
207
|
+
are fulfilled for the Covered Software.
|
208
|
+
|
209
|
+
4. Versions of the License.
|
210
|
+
|
211
|
+
4.1. New Versions.
|
212
|
+
Sun Microsystems, Inc. is the initial license steward and
|
213
|
+
may publish revised and/or new versions of this License
|
214
|
+
from time to time. Each version will be given a
|
215
|
+
distinguishing version number. Except as provided in
|
216
|
+
Section 4.3, no one other than the license steward has the
|
217
|
+
right to modify this License.
|
218
|
+
|
219
|
+
4.2. Effect of New Versions.
|
220
|
+
You may always continue to use, distribute or otherwise
|
221
|
+
make the Covered Software available under the terms of the
|
222
|
+
version of the License under which You originally received
|
223
|
+
the Covered Software. If the Initial Developer includes a
|
224
|
+
notice in the Original Software prohibiting it from being
|
225
|
+
distributed or otherwise made available under any
|
226
|
+
subsequent version of the License, You must distribute and
|
227
|
+
make the Covered Software available under the terms of the
|
228
|
+
version of the License under which You originally received
|
229
|
+
the Covered Software. Otherwise, You may also choose to
|
230
|
+
use, distribute or otherwise make the Covered Software
|
231
|
+
available under the terms of any subsequent version of the
|
232
|
+
License published by the license steward.
|
233
|
+
|
234
|
+
4.3. Modified Versions.
|
235
|
+
When You are an Initial Developer and You want to create a
|
236
|
+
new license for Your Original Software, You may create and
|
237
|
+
use a modified version of this License if You: (a) rename
|
238
|
+
the license and remove any references to the name of the
|
239
|
+
license steward (except to note that the license differs
|
240
|
+
from this License); and (b) otherwise make it clear that
|
241
|
+
the license contains terms which differ from this License.
|
242
|
+
|
243
|
+
5. DISCLAIMER OF WARRANTY.
|
244
|
+
|
245
|
+
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
|
246
|
+
BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
247
|
+
INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
|
248
|
+
SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
|
249
|
+
PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
|
250
|
+
PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
|
251
|
+
COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
|
252
|
+
INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
|
253
|
+
ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
|
254
|
+
WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
255
|
+
ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
|
256
|
+
DISCLAIMER.
|
257
|
+
|
258
|
+
6. TERMINATION.
|
259
|
+
|
260
|
+
6.1. This License and the rights granted hereunder will
|
261
|
+
terminate automatically if You fail to comply with terms
|
262
|
+
herein and fail to cure such breach within 30 days of
|
263
|
+
becoming aware of the breach. Provisions which, by their
|
264
|
+
nature, must remain in effect beyond the termination of
|
265
|
+
this License shall survive.
|
266
|
+
|
267
|
+
6.2. If You assert a patent infringement claim (excluding
|
268
|
+
declaratory judgment actions) against Initial Developer or
|
269
|
+
a Contributor (the Initial Developer or Contributor against
|
270
|
+
whom You assert such claim is referred to as "Participant")
|
271
|
+
alleging that the Participant Software (meaning the
|
272
|
+
Contributor Version where the Participant is a Contributor
|
273
|
+
or the Original Software where the Participant is the
|
274
|
+
Initial Developer) directly or indirectly infringes any
|
275
|
+
patent, then any and all rights granted directly or
|
276
|
+
indirectly to You by such Participant, the Initial
|
277
|
+
Developer (if the Initial Developer is not the Participant)
|
278
|
+
and all Contributors under Sections 2.1 and/or 2.2 of this
|
279
|
+
License shall, upon 60 days notice from Participant
|
280
|
+
terminate prospectively and automatically at the expiration
|
281
|
+
of such 60 day notice period, unless if within such 60 day
|
282
|
+
period You withdraw Your claim with respect to the
|
283
|
+
Participant Software against such Participant either
|
284
|
+
unilaterally or pursuant to a written agreement with
|
285
|
+
Participant.
|
286
|
+
|
287
|
+
6.3. In the event of termination under Sections 6.1 or 6.2
|
288
|
+
above, all end user licenses that have been validly granted
|
289
|
+
by You or any distributor hereunder prior to termination
|
290
|
+
(excluding licenses granted to You by any distributor)
|
291
|
+
shall survive termination.
|
292
|
+
|
293
|
+
7. LIMITATION OF LIABILITY.
|
294
|
+
|
295
|
+
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
296
|
+
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
|
297
|
+
INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
|
298
|
+
COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
|
299
|
+
LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
|
300
|
+
CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
|
301
|
+
LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
|
302
|
+
STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
|
303
|
+
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
|
304
|
+
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
305
|
+
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
|
306
|
+
INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
|
307
|
+
APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
|
308
|
+
NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
|
309
|
+
CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
|
310
|
+
APPLY TO YOU.
|
311
|
+
|
312
|
+
8. U.S. GOVERNMENT END USERS.
|
313
|
+
|
314
|
+
The Covered Software is a "commercial item," as that term is
|
315
|
+
defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
|
316
|
+
computer software" (as that term is defined at 48 C.F.R. ¤
|
317
|
+
252.227-7014(a)(1)) and "commercial computer software
|
318
|
+
documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
|
319
|
+
1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
|
320
|
+
through 227.7202-4 (June 1995), all U.S. Government End Users
|
321
|
+
acquire Covered Software with only those rights set forth herein.
|
322
|
+
This U.S. Government Rights clause is in lieu of, and supersedes,
|
323
|
+
any other FAR, DFAR, or other clause or provision that addresses
|
324
|
+
Government rights in computer software under this License.
|
325
|
+
|
326
|
+
9. MISCELLANEOUS.
|
327
|
+
|
328
|
+
This License represents the complete agreement concerning subject
|
329
|
+
matter hereof. If any provision of this License is held to be
|
330
|
+
unenforceable, such provision shall be reformed only to the
|
331
|
+
extent necessary to make it enforceable. This License shall be
|
332
|
+
governed by the law of the jurisdiction specified in a notice
|
333
|
+
contained within the Original Software (except to the extent
|
334
|
+
applicable law, if any, provides otherwise), excluding such
|
335
|
+
jurisdiction's conflict-of-law provisions. Any litigation
|
336
|
+
relating to this License shall be subject to the jurisdiction of
|
337
|
+
the courts located in the jurisdiction and venue specified in a
|
338
|
+
notice contained within the Original Software, with the losing
|
339
|
+
party responsible for costs, including, without limitation, court
|
340
|
+
costs and reasonable attorneys' fees and expenses. The
|
341
|
+
application of the United Nations Convention on Contracts for the
|
342
|
+
International Sale of Goods is expressly excluded. Any law or
|
343
|
+
regulation which provides that the language of a contract shall
|
344
|
+
be construed against the drafter shall not apply to this License.
|
345
|
+
You agree that You alone are responsible for compliance with the
|
346
|
+
United States export administration regulations (and the export
|
347
|
+
control laws and regulation of any other countries) when You use,
|
348
|
+
distribute or otherwise make available any Covered Software.
|
349
|
+
|
350
|
+
10. RESPONSIBILITY FOR CLAIMS.
|
351
|
+
|
352
|
+
As between Initial Developer and the Contributors, each party is
|
353
|
+
responsible for claims and damages arising, directly or
|
354
|
+
indirectly, out of its utilization of rights under this License
|
355
|
+
and You agree to work with Initial Developer and Contributors to
|
356
|
+
distribute such responsibility on an equitable basis. Nothing
|
357
|
+
herein is intended or shall be deemed to constitute any admission
|
358
|
+
of liability.
|
@@ -0,0 +1,240 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
usage() {
|
4
|
+
echo "Usage: $0 [action] [options] <pid>"
|
5
|
+
echo "Actions:"
|
6
|
+
echo " start start profiling and return immediately"
|
7
|
+
echo " resume resume profiling without resetting collected data"
|
8
|
+
echo " stop stop profiling"
|
9
|
+
echo " status print profiling status"
|
10
|
+
echo " list list profiling events supported by the target JVM"
|
11
|
+
echo " collect collect profile for the specified period of time"
|
12
|
+
echo " and then stop (default action)"
|
13
|
+
echo "Options:"
|
14
|
+
echo " -e event profiling event: cpu|alloc|lock|cache-misses etc."
|
15
|
+
echo " -d duration run profiling for <duration> seconds"
|
16
|
+
echo " -f filename dump output to <filename>"
|
17
|
+
echo " -i interval sampling interval in nanoseconds"
|
18
|
+
echo " -j jstackdepth maximum Java stack depth"
|
19
|
+
echo " -b bufsize frame buffer size"
|
20
|
+
echo " -t profile different threads separately"
|
21
|
+
echo " -s simple class names instead of FQN"
|
22
|
+
echo " -g print method signatures"
|
23
|
+
echo " -a annotate Java method names"
|
24
|
+
echo " -o fmt output format: summary|traces|flat|collapsed|svg|tree|jfr"
|
25
|
+
echo " -v, --version display version string"
|
26
|
+
echo ""
|
27
|
+
echo " --title string SVG title"
|
28
|
+
echo " --width px SVG width"
|
29
|
+
echo " --height px SVG frame height"
|
30
|
+
echo " --minwidth px skip frames smaller than px"
|
31
|
+
echo " --reverse generate stack-reversed FlameGraph / Call tree"
|
32
|
+
echo ""
|
33
|
+
echo " --all-kernel only include kernel-mode events"
|
34
|
+
echo " --all-user only include user-mode events"
|
35
|
+
echo " --sync-walk use synchronous JVMTI stack walker (dangerous!)"
|
36
|
+
echo ""
|
37
|
+
echo "<pid> is a numeric process ID of the target JVM"
|
38
|
+
echo " or 'jps' keyword to find running JVM automatically"
|
39
|
+
echo ""
|
40
|
+
echo "Example: $0 -d 30 -f profile.svg 3456"
|
41
|
+
echo " $0 start -i 999000 jps"
|
42
|
+
echo " $0 stop -o summary,flat jps"
|
43
|
+
exit 1
|
44
|
+
}
|
45
|
+
|
46
|
+
mirror_output() {
|
47
|
+
# Mirror output from temporary file to local terminal
|
48
|
+
if [[ $USE_TMP ]]; then
|
49
|
+
if [[ -f $FILE ]]; then
|
50
|
+
cat "$FILE"
|
51
|
+
rm "$FILE"
|
52
|
+
fi
|
53
|
+
fi
|
54
|
+
}
|
55
|
+
|
56
|
+
check_if_terminated() {
|
57
|
+
if ! kill -0 $PID 2> /dev/null; then
|
58
|
+
mirror_output
|
59
|
+
exit 0
|
60
|
+
fi
|
61
|
+
}
|
62
|
+
|
63
|
+
jattach() {
|
64
|
+
"$JATTACH" $PID load "$PROFILER" true "$1" > /dev/null
|
65
|
+
RET=$?
|
66
|
+
|
67
|
+
# Check if jattach failed
|
68
|
+
if [ $RET -ne 0 ]; then
|
69
|
+
if [ $RET -eq 255 ]; then
|
70
|
+
echo "Failed to inject profiler into $PID"
|
71
|
+
if [ "$UNAME_S" == "Darwin" ]; then
|
72
|
+
otool -L "$PROFILER"
|
73
|
+
else
|
74
|
+
ldd "$PROFILER"
|
75
|
+
fi
|
76
|
+
fi
|
77
|
+
exit $RET
|
78
|
+
fi
|
79
|
+
|
80
|
+
mirror_output
|
81
|
+
}
|
82
|
+
|
83
|
+
function abspath() {
|
84
|
+
if [ "$UNAME_S" == "Darwin" ]; then
|
85
|
+
perl -MCwd -e 'print Cwd::abs_path shift' "$1"
|
86
|
+
else
|
87
|
+
readlink -f "$1"
|
88
|
+
fi
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
OPTIND=1
|
93
|
+
UNAME_S=$(uname -s)
|
94
|
+
SCRIPT_DIR=$(dirname "$(abspath "$0")")
|
95
|
+
JATTACH=$SCRIPT_DIR/build/jattach
|
96
|
+
PROFILER=$SCRIPT_DIR/build/libasyncProfiler.so
|
97
|
+
ACTION="collect"
|
98
|
+
EVENT="cpu"
|
99
|
+
DURATION="60"
|
100
|
+
FILE=""
|
101
|
+
USE_TMP="true"
|
102
|
+
OUTPUT=""
|
103
|
+
FORMAT=""
|
104
|
+
PARAMS=""
|
105
|
+
|
106
|
+
while [[ $# -gt 0 ]]; do
|
107
|
+
case $1 in
|
108
|
+
-h|"-?")
|
109
|
+
usage
|
110
|
+
;;
|
111
|
+
start|resume|stop|status|list|collect)
|
112
|
+
ACTION="$1"
|
113
|
+
;;
|
114
|
+
-v|--version)
|
115
|
+
ACTION="version"
|
116
|
+
;;
|
117
|
+
-e)
|
118
|
+
EVENT="$2"
|
119
|
+
shift
|
120
|
+
;;
|
121
|
+
-d)
|
122
|
+
DURATION="$2"
|
123
|
+
shift
|
124
|
+
;;
|
125
|
+
-f)
|
126
|
+
FILE="$2"
|
127
|
+
unset USE_TMP
|
128
|
+
shift
|
129
|
+
;;
|
130
|
+
-i)
|
131
|
+
PARAMS="$PARAMS,interval=$2"
|
132
|
+
shift
|
133
|
+
;;
|
134
|
+
-j)
|
135
|
+
PARAMS="$PARAMS,jstackdepth=$2"
|
136
|
+
shift
|
137
|
+
;;
|
138
|
+
-b)
|
139
|
+
PARAMS="$PARAMS,framebuf=$2"
|
140
|
+
shift
|
141
|
+
;;
|
142
|
+
-t)
|
143
|
+
PARAMS="$PARAMS,threads"
|
144
|
+
;;
|
145
|
+
-s)
|
146
|
+
FORMAT="$FORMAT,simple"
|
147
|
+
;;
|
148
|
+
-g)
|
149
|
+
FORMAT="$FORMAT,sig"
|
150
|
+
;;
|
151
|
+
-a)
|
152
|
+
FORMAT="$FORMAT,ann"
|
153
|
+
;;
|
154
|
+
-o)
|
155
|
+
OUTPUT="$2"
|
156
|
+
shift
|
157
|
+
;;
|
158
|
+
--title)
|
159
|
+
# escape XML special characters and comma
|
160
|
+
TITLE=${2//&/&}
|
161
|
+
TITLE=${TITLE//</<}
|
162
|
+
TITLE=${TITLE//>/>}
|
163
|
+
TITLE=${TITLE//,/,}
|
164
|
+
FORMAT="$FORMAT,title=$TITLE"
|
165
|
+
shift
|
166
|
+
;;
|
167
|
+
--width|--height|--minwidth)
|
168
|
+
FORMAT="$FORMAT,${1:2}=$2"
|
169
|
+
shift
|
170
|
+
;;
|
171
|
+
--reverse)
|
172
|
+
FORMAT="$FORMAT,reverse"
|
173
|
+
;;
|
174
|
+
--all-kernel)
|
175
|
+
PARAMS="$PARAMS,allkernel"
|
176
|
+
;;
|
177
|
+
--all-user)
|
178
|
+
PARAMS="$PARAMS,alluser"
|
179
|
+
;;
|
180
|
+
--sync-walk)
|
181
|
+
PARAMS="$PARAMS,syncwalk"
|
182
|
+
;;
|
183
|
+
[0-9]*)
|
184
|
+
PID="$1"
|
185
|
+
;;
|
186
|
+
jps)
|
187
|
+
# A shortcut for getting PID of a running Java application
|
188
|
+
# -XX:+PerfDisableSharedMem prevents jps from appearing in its own list
|
189
|
+
PID=$(pgrep -n java || jps -q -J-XX:+PerfDisableSharedMem)
|
190
|
+
;;
|
191
|
+
*)
|
192
|
+
echo "Unrecognized option: $1"
|
193
|
+
usage
|
194
|
+
;;
|
195
|
+
esac
|
196
|
+
shift
|
197
|
+
done
|
198
|
+
|
199
|
+
if [[ "$PID" == "" && "$ACTION" != "version" ]]; then
|
200
|
+
usage
|
201
|
+
fi
|
202
|
+
|
203
|
+
# If no -f argument is given, use temporary file to transfer output to caller terminal.
|
204
|
+
# Let the target process create the file in case this script is run by superuser.
|
205
|
+
if [[ $USE_TMP ]]; then
|
206
|
+
FILE=/tmp/async-profiler.$$.$PID
|
207
|
+
elif [[ $FILE != /* ]]; then
|
208
|
+
# Output file is written by the target process. Make the path absolute to avoid confusion.
|
209
|
+
FILE=$PWD/$FILE
|
210
|
+
fi
|
211
|
+
|
212
|
+
case $ACTION in
|
213
|
+
start|resume)
|
214
|
+
jattach "$ACTION,event=$EVENT,file=$FILE,$OUTPUT$FORMAT$PARAMS"
|
215
|
+
;;
|
216
|
+
stop)
|
217
|
+
jattach "stop,file=$FILE,$OUTPUT$FORMAT"
|
218
|
+
;;
|
219
|
+
status)
|
220
|
+
jattach "status,file=$FILE"
|
221
|
+
;;
|
222
|
+
list)
|
223
|
+
jattach "list,file=$FILE"
|
224
|
+
;;
|
225
|
+
collect)
|
226
|
+
jattach "start,event=$EVENT,file=$FILE,$OUTPUT$FORMAT$PARAMS"
|
227
|
+
while (( DURATION-- > 0 )); do
|
228
|
+
check_if_terminated
|
229
|
+
sleep 1
|
230
|
+
done
|
231
|
+
jattach "stop,file=$FILE,$OUTPUT$FORMAT"
|
232
|
+
;;
|
233
|
+
version)
|
234
|
+
if [[ "$PID" == "" ]]; then
|
235
|
+
java "-agentpath:$PROFILER=version" -version 2> /dev/null
|
236
|
+
else
|
237
|
+
jattach "version,file=$FILE"
|
238
|
+
fi
|
239
|
+
;;
|
240
|
+
esac
|