Safepoint+stats log with None vmop operation in output JDK12
Safepoint+stats log with None vmop operation in output JDK12
我是 JDK12 上的 运行 应用程序,使用 -Xlog:safepoint+stats=debug:file=safepoint.log vm 参数来记录安全点动作和 运行 ZGC。我无法理解日志输出:
[1408.417s][debug][safepoint,stats] vmop [ threads: total initially_running wait_to_block ][ time: spin block sync cleanup vmop ] page_trap_count
[1412.164s][debug][safepoint,stats] 1412.162: ZOperation [ 376 0 7 ][ 0 0 0 0 1 ] 7
[1413.164s][debug][safepoint,stats] 1413.164: None [ 376 0 0 ][ 0 0 0 0 0 ] 0
[1414.165s][debug][safepoint,stats] 1414.164: None [ 376 0 1 ][ 0 0 0 0 0 ] 1
我明白第一行告诉 ZOperation 花费了 1 毫秒,并且有 7 个线程参与了阻塞。
第二行没看懂,"None"vmop操作是什么?看起来那个操作的持续时间是 0。它真的是 0 或者它是 0 因为它花费了不到 1 毫秒?如果是,则可以设置更高粒度的时间记录,以查看花费了多少纳秒?还是微秒?
我每秒记录了很多这样的 "None" 操作。我想知道 JVM 在暂停期间正在做什么。我每 10 秒跟踪一次 ZGC 时间和 SafePoint 时间,聚合的安全点时间比聚合的 gc 暂停时间高 5 倍。我想以某种方式减少我的应用程序的安全点时间。
这是一个没有虚拟机操作的安全点。它的目的是执行定期清理任务,如放气空闲监视器或清除内联缓存缓冲区,只有在没有 Java 线程 运行.
时才能安全地完成这些任务
如果有清理任务要做,强制安全点每 GuaranteedSafepointInterval
毫秒发生一次。默认值为 1000。请注意,在您的情况下,无操作安全点恰好发生在前一个安全点之后 1 秒。
间隔可以用
调整
-XX:+UnlockDiagnosticVMOptions -XX:GuaranteedSafepointInterval=<ms>
为了避免混淆,在 JDK 13 个这样的无操作安全点中获得了 Cleanup
操作名称。
我是 JDK12 上的 运行 应用程序,使用 -Xlog:safepoint+stats=debug:file=safepoint.log vm 参数来记录安全点动作和 运行 ZGC。我无法理解日志输出:
[1408.417s][debug][safepoint,stats] vmop [ threads: total initially_running wait_to_block ][ time: spin block sync cleanup vmop ] page_trap_count
[1412.164s][debug][safepoint,stats] 1412.162: ZOperation [ 376 0 7 ][ 0 0 0 0 1 ] 7
[1413.164s][debug][safepoint,stats] 1413.164: None [ 376 0 0 ][ 0 0 0 0 0 ] 0
[1414.165s][debug][safepoint,stats] 1414.164: None [ 376 0 1 ][ 0 0 0 0 0 ] 1
我明白第一行告诉 ZOperation 花费了 1 毫秒,并且有 7 个线程参与了阻塞。
第二行没看懂,"None"vmop操作是什么?看起来那个操作的持续时间是 0。它真的是 0 或者它是 0 因为它花费了不到 1 毫秒?如果是,则可以设置更高粒度的时间记录,以查看花费了多少纳秒?还是微秒?
我每秒记录了很多这样的 "None" 操作。我想知道 JVM 在暂停期间正在做什么。我每 10 秒跟踪一次 ZGC 时间和 SafePoint 时间,聚合的安全点时间比聚合的 gc 暂停时间高 5 倍。我想以某种方式减少我的应用程序的安全点时间。
这是一个没有虚拟机操作的安全点。它的目的是执行定期清理任务,如放气空闲监视器或清除内联缓存缓冲区,只有在没有 Java 线程 运行.
时才能安全地完成这些任务如果有清理任务要做,强制安全点每 GuaranteedSafepointInterval
毫秒发生一次。默认值为 1000。请注意,在您的情况下,无操作安全点恰好发生在前一个安全点之后 1 秒。
间隔可以用
调整-XX:+UnlockDiagnosticVMOptions -XX:GuaranteedSafepointInterval=<ms>
为了避免混淆,在 JDK 13 个这样的无操作安全点中获得了 Cleanup
操作名称。