{"id":4325,"date":"2014-07-25T10:51:02","date_gmt":"2014-07-25T07:51:02","guid":{"rendered":"http:\/\/skeletor.org.ua\/?p=4325"},"modified":"2014-07-25T10:51:02","modified_gmt":"2014-07-25T07:51:02","slug":"%d0%b2%d0%ba%d0%bb%d1%8e%d1%87%d0%b0%d0%b5%d0%bc-dtrace-%d0%bf%d1%80%d0%be%d0%b1%d1%8b-hotspot-%d0%b4%d0%bb%d1%8f-java","status":"publish","type":"post","link":"https:\/\/skeletor.org.ua\/?p=4325","title":{"rendered":"\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c dtrace \u043f\u0440\u043e\u0431\u044b hotspot \u0434\u043b\u044f java"},"content":{"rendered":"<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u044b <strong>dtrace<\/strong> \u0434\u043b\u044f <strong>java<\/strong>, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0410 \u0432\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 <strong>lazy load<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u044f\u0432\u043d\u043e \u043a \u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439:<\/p>\n<p><strong><span style=\"color: #ff0000;\">1) java \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c hotspot:<\/span><\/strong><\/p>\n<p><code># java -version<br \/>\njava version \"1.7.0_60\"<br \/>\nJava(TM) SE Runtime Environment (build 1.7.0_60-b19)<br \/>\nJava HotSpot(TM) Server VM (build 24.60-b09, mixed mode)<\/code><\/p>\n<p><!--more--><\/p>\n<p><strong><span style=\"color: #ff0000;\">2) java \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c<\/span><\/strong><\/p>\n<p><code>+ExtendedDTraceProbes<\/code><\/p>\n<p>\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p><code>+DTraceMethodProbes,\u00a0+DTraceAllocProbes,\u00a0+DTraceMonitorProbes.<\/code><\/p>\n<p>\u0412\u043e\u0442, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<p><code># ps -efc | grep java<br \/>\nroot \u00a02398 \u00a01186 \u00a0 TS \u00a049 12:05:28 pts\/2 \u00a0 \u00a0 \u00a0 0:00 grep java<br \/>\nroot \u00a01050 \u00a0 \u00a0 1 \u00a0 TS \u00a059 \u00a0 Jul 21 ? \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 8:19 \/bin\/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -X<br \/>\n# pargs 1050 | grep -i dtrace<br \/>\nargv[7]: -XX:+ExtendedDTraceProbes<br \/>\nargv[8]: -XX:+DTraceMethodProbes<br \/>\nargv[9]: -XX:+DTraceAllocProbes<br \/>\nargv[10]: -XX:+DTraceMonitorProbes<\/code><\/p>\n<p><strong><span style=\"color: #ff0000;\">3) \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u044b:<\/span><\/strong><\/p>\n<p><code># dtrace -n hotspotPID:::'{@[probename]=count()}'<\/code><\/p>\n<p>\u0433\u0434\u0435 <strong>PID<\/strong> &#8211; \u043d\u043e\u043c\u0435\u0440 <strong>pid&#8217;a java<\/strong>-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 (\u043d\u043e\u043c\u0435\u0440 <strong>pid&#8217;a<\/strong> \u0432\u0437\u044f\u0442 \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u0430 2):<\/p>\n<pre># dtrace -n hotspot1050:::'{@[probename]=count()}'\r\ndtrace: description 'hotspot1050:::' matched 66 probes\r\n^C\r\n\r\n  thread-unpark                                                     1\r\n  thread-park-begin                                                11\r\n  thread-park-end                                                  11\r\n  thread-sleep-begin                                              130\r\n  thread-sleep-end                                                130\r\n  object-alloc                                                    467\r\n  method-entry                                                  29316\r\n  method-return                                                 29316\r\n<\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0431\u044b:<\/p>\n<p><code># dtrace -l | grep hotspot | wc -l<br \/>\n539<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u044b dtrace \u0434\u043b\u044f java, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0410 \u0432\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 lazy load, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u044f\u0432\u043d\u043e \u043a \u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439: 1) java \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c hotspot: # java -version java version &#8220;1.7.0_60&#8221; Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) Server VM (build [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,10,24],"tags":[],"class_list":["post-4325","post","type-post","status-publish","format-standard","hentry","category-freebsd","category-others","category-solaris"],"_links":{"self":[{"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/posts\/4325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4325"}],"version-history":[{"count":1,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/posts\/4325\/revisions"}],"predecessor-version":[{"id":4326,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=\/wp\/v2\/posts\/4325\/revisions\/4326"}],"wp:attachment":[{"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skeletor.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}