Using jstat to report custom JVM metric sets

I've always been missing possibility to configure custom headers in JStat. Of course there are a lot of predefined data sets, but it'll be nicer if we could create our own data set. And as you probably already devised I'm writing this post because such functionality is of course available :) Unfortunately I haven't found it in any documentation so now I'll try to fill this gap.

First thing we have to do is to provide custom descriptor with possible JStat options. This descriptor is just a text file containing something we'll call "jstat specification language". To make this custom file available to JStat we should place it in the following path: $HOME/.jvmstat/jstat_options
If you want to view the bundled options please refer to file in OpenJDK repository.

The specification language is pretty similar to json files, and it contains the group of option elements. Each option should be threaten as a set of columns that can be shown in single jstat execution. Just to name some of the predefined options: gcnew, gccause or printcompilation.

Each option element consists of several column segments. I think it's quite obvious what column means :) And whats the most important in this descriptor is just a column specification.

Each column must contain at least two nodes: header and data. Header is used to describe the column and can be aligned using special char ^ which I'll call "the grip". Grip means that it sticks the header with particular side of the column, so:
  • ^Name will be aligned to the left,
  • ^Name^ will be centered,
  • Name^ will be aligned to the right.
The next important node is the data column. It uses PerfCounter metrics and is able to make some basic arithmetic operations - like add, minus, divide and multiply as well as use parenthesis to group operations . You can also group If you want to see all metrics that are available via this mechanism just can invoke
$jcmd <PID> PerfCounter.print
and see the output values.

Sample minimum file content can be like that:
option customgc {
  column {
    header "Tenuring"
    data sun.gc.policy.tenuringThreshold
  }
}
When we'll invoke it using
$jstat -customgc <PID> 1s 3
we'll see something like:
Tenuring
6
4
5

We can also use the operations to show for example joint young generation usage:
option customgc {
  column {
    header "YoungC"
    data sun.gc.generation.0.space.0.used + sun.gc.generation.0.space.1.used + sun.gc.generation.0.space.2.used
  }
}

There are also four additional columns that are used to setup layout for our column.
  1. First is for alignments setting. We can choose if we want to align our data to left, center or right by setting align element to one of above values. 
  2. In the case of number metrics we can specify string used as DecimalFormat input by entering it in the format node.
  3. We're also able to specify the size of the column by adding width element with particular length.
  4. Last but not least is a scaling functionality. Because most of the metrics contain just raw output from JVM we need to transform it a little bit to make if useful for human eye. This can be done with the use of scale attribute set to one of the below values (token column).
    tokenfactordesc
    raw1no scaling
    percent1/100convert to percentage
    K1024kilo
    M1024*1024mega
    G1024*1024*1024giga
    n10^-9nano
    u10^-6micro
    m10^-3milli
    us10^-6microseconds
    ms10^-3milliseconds
    s1seconds
    min1/60minutes
    h1/3600hour

Now let's see the polished example that will show how we can use additional properties:
option customgc {
  column {
    header "YoungC^"
    data sun.gc.generation.0.space.0.used + sun.gc.generation.0.space.1.used + sun.gc.generation.0.space.2.used
    align right
    scale M
    width 7
    format "0.0"
  }
  column {
    header "OldC^"
    data sun.gc.generation.1.space.0.used
    align right
    scale M
    width 7
    format "0.0"
  }
}
Which produces
 YoungC    OldC
   67.7   161.0
   37.8   165.4
   92.2   182.8

End of topic :) Good luck!

Comments

Anonymous said…
If you are looking for getting the best data scientist than this activewizards.com/ is available for you to get you hire the best data scientist, these data scientists are highly professional and skilled and they can easily solve your all data related problems in a few days or hour it depends on the data size and complexity.
Aditi Ray said…
Thank you so much for sharing this article.
check out the best furniture sale
deepika said…
thanks for this post it really helped me alot
block chain training in bangalore
Tech Guy said…
Nice Blog.
For the Best Python training in Bangalore, Visit:
Python training in Bangalore
Unknown said…
This blog are more informative contents step by step. I here by attached mt site would you see this blog.

7 tips to start a career in digital marketing

“Digital marketing is the marketing of product or service using digital technologies, mainly on the Internet, but also including mobile phones, display advertising, and any other digital medium”. This is the definition that you would get when you search for the term “Digital marketing” in google. Let’s give out a simpler explanation by saying, “the form of marketing, using the internet and technologies like phones, computer etc”.

we have offered to the advanced syllabus course digital marketing for available join now

more details click the link now.

https://www.webdschool.com/digital-marketing-course-in-chennai.html
nikhil reddy said…
I found a lot of information here to create this actually best for all newbie here. Thank you for this information.
Artificial Intelligence Training In Hyderabad

Artificial Intelligence Course In Hyderabad
lionelmessi said…
Hi, Thanks for sharing wonderful stuff...

For More:

AI Training In Hyderabad
reshma said…
thanks for sharing nice information....
more : https://www.kellytechno.com/Hyderabad/Course/AI-Training-In-Hyderabad
Great writing! You have a flair for informational writing. Your content has impressed me beyond words. I have a lot of admiration for your writing. Thank you for all your valuable input on this topic.
SAP training in Mumbai
Best SAP training in Mumbai
SAP training institute Mumbai
Anonymous said…
Hey, i liked reading your article. You may go through few of my creative works here
Marhabapilates
Poppriceguide
William Jessie said…
This article contains a lot of valuable info. I am amazed by the quality of the info and also it is a beneficial article for us, Thanks for share it.drone
Maneesha said…
wow, great, I was wondering how to cure acne naturally. and found your site by google, learned a lot, now i’m a bit clear. I’ve bookmark your site and also add rss. keep us updated.
data scientist course in hyderabad
Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one.
data scientist training and placement

lionelmessi said…
Such a very useful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article.

DevOps Training in Hyderabad
This data is magnificent. I am impressed with your writing style and how properly you define this topic. After studying your post, my understanding has improved substantially.

Best Online Oracle Training Institute in Delhi, NCR
Certified Online Python Training Institute in Delhi, NCR
Such a great articles in my carrier, It's wonderful commands like easiest understand words of knowledge in information's.

Core to Advanced Digital Marketing Training Course in Delhi, India
Learn Complete Advanced Excel Training Course in Delhi, NCR
aaronnssd said…
The information you've provided is useful because it provides a wealth of knowledge that will be highly beneficial to me. Thank you for sharing that. Keep up the good work. Best blockchain research journal
Maneesha said…
I’ve read some good stuff here. Definitely worth bookmarking for revisiting. I surprise how much effort you put to create such a great informative website.
data scientist training and placement

Arnold DK said…
Nice Post , thank you so much for sharing the informative article share with us, your blog was creative writing ability has inspired me. whatsapp mod

Maneesha said…
Very useful post. This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. Really its great article. Keep it up.
data analytics training in hyderabad

Anonymous said…
youtube
youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube  youtube youtube youtube youtube youtube youtube free youtube to mp3 converter youtube youtube youtube youtube youtube youtube youtube youtube youtube youtube
Ali jan said…
What blows my mind about both of these sales funnel models is that they completely ignore the other person/company in the purchasing equation; the sales-activity based funnel completely ignores the buyer, and the buying-process funnel completely ignores the seller. Click here
prathyusha said…
This comment has been removed by the author.
anuaradhya said…
This comment has been removed by the author.
Chaitanya said…
It is very straightforward to find out any topic on the net as compared to training, and courses, I found this article on this site.
SAS Programming Training from Hyderabadg
AWS Training from Hyderabadg
SQL Azure DBA Training from Hyderabadg
Node JS Training from Hyderabadg

Popular posts from this blog

Understanding Spring Web Initialization

Overview of the circuit breaker in Hystrix

Do we really still need a 32-bit JVM?