Getting per-thread CPU time on *BSD

Thomas Schatzl thomas.schatzl at oracle.com
Thu Jun 26 11:55:48 UTC 2025


Hi Harald,

On 25.06.25 16:23, Harald Eilertsen wrote:
> Hi Thomas,
> 
> On Wed, Jun 25, 2025 at 01:48:58PM +0200, Thomas Schatzl wrote:
>>    actually it looks like there is at least a JDK 21 port which has the
>> necessary infrastructure implemented.
> 
> Yes, you'll also find the same in the latest update repo for FreeBSD:
> https://urldefense.com/v3/__https://github.com/freebsd/openjdk/blob/jdk24u-freebsd/src/hotspot/os/bsd/os_bsd.cpp*L2609__;Iw!!ACWV5N9M2RV99hQ!NOYYAR0rODCedfhq33DuAWwlenmBRQUMpw2ViZNgd34uafcKc0KBA_77dZc1wwPk6In2YGb7X_pe0ABnhHROAzR-U_4CueGo$
> 
> However, this implementation does not provide for getting only user time
> except for OpenBSD (and presumably OS X), unless it's a request for the
> timing of the current thread.
> 
> I have improved on that, so it should also fully work on FreeBSD. I'll
> include that in the JDK 24.0.2 release and in my fork of the mainline
> repo.

For GC we only need user+sys time, so that would be sufficient. The only 
user of user-only time seems to be Java's ThreadMXBean.

However an implementation may not support getting another thread's user 
time afaict 
(https://docs.oracle.com/en/java/javase/24/docs/api/java.management/java/lang/management/ThreadMXBean.html#getThreadUserTime(long), 
see the remark in the UnsupportedException description).

> 
>> Not sure how to proceed here for adding the suggested changes to mainline.
> 
> Me neither, I hope to be able to upstream the full port some time, but
> it will have to happen in increments.
> 

That would be great, and doing this incrementally is understandable (and 
favorable to reviewers :)).

Thomas


More information about the bsd-port-dev mailing list