RFR: 8271931: Make AbortVMOnVMOperationTimeout more resilient to OS scheduling [v4]

David Holmes dholmes at openjdk.java.net
Mon Aug 9 05:29:34 UTC 2021


On Sat, 7 Aug 2021 10:12:55 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> Perform VM-op timeout also on the VM thread. If a VM-op is stuck, the existing watcher-thread based machinery will kick in and detect it.
>> 
>> Test: tier1
>
> Albert Mingkun Yang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   disarm

Hi Albert,

I preferred earlier versions that didn't shove all this extra logic into the timeout task, but it isn't worth arguing over.

Thanks,
David

src/hotspot/share/runtime/vmThread.cpp line 84:

> 82:   // The two stores to `_armed` are counted in VM-op, but they should be
> 83:   // insignificant compared to the actual VM-op duration.
> 84:   jlong vm_op_duration = nanos_to_millis(os::javaTimeNanos() - _arm_time);

You could move this ahead of the store. And then you only need a small comment in arm().

src/hotspot/share/runtime/vmThread.cpp line 89:

> 87:   // VMOperationTimeoutTask might miss the arm-disarm window depending on
> 88:   // the scheduling.
> 89:   assert(Thread::current()->is_VM_thread(), "Check timeout on VM thread");

Seems unnecessary to assert this.

src/hotspot/share/runtime/vmThread.cpp line 94:

> 92:           _vm_op_name, vm_op_duration, AbortVMOnVMOperationTimeoutDelay);
> 93:   }
> 94:   _vm_op_name = nullptr;

Yes clearing this is good hygiene - no dangling pointers.

-------------

Marked as reviewed by dholmes (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/5016


More information about the hotspot-runtime-dev mailing list