3 ms·
You are spot on that the original author had a valid reason: at the time, it was literally the only way to do it. The method in question (Java 1.5) was release
by jonasn 9mo ago
You are spot on that the original author had a valid reason: at the time, it was literally the only way to do it.
The method in question (Java 1.5) was released in September 2004. While the POSIX standard existed, it only provided a way to get total CPU time, not the specific user time that Java needed. You can read about it more in the history section here: https://norlinder.nu/posts/User-CPU-Time-JVM/#a-walk-through-history https://norlinder.nu/posts/User-CPU-Time-JVM/#a-walk-through....
But it's worth noting that while this specific case can be "fixed" with a function call, parsing /proc is still the standard way to get data in Linux.
Even today, a vast amount of kernel telemetry is only exposed via the filesystem. If you look at the source code for tools like htop, they are still busy parsing text files from /proc to get memory stats (/proc/meminfo), network I/O, or per-process limits. See here https://github.com/hishamhm/htop/blob/master/linux/LinuxProcessList.c https://github.com/hishamhm/htop/blob/master/linux/LinuxProc....
- kstrauser 9mo agoThat sounds like a pretty good reason! I knew about using proc for all that other information. I just wouldn’t have imagined using it for critical performance path. Unless, that is, that’s the way you have to get the information.