Currently GobiesVM ends a transaction on BC_GETLOCAL and BC_SEND bytecode instructions. However, these two are too frequent therefore shrink transaction length. Shorter transactions do well when abort rate is high, but produce too much initialization overhead on the other hand.
We can set a counter to determine how many instruction encounters to end a transaction. To avoid consistently abort on lengthy transactions, we can decrement the counter maximum on each retry.
Currently GobiesVM ends a transaction on
BC_GETLOCAL
andBC_SEND
bytecode instructions. However, these two are too frequent therefore shrink transaction length. Shorter transactions do well when abort rate is high, but produce too much initialization overhead on the other hand. We can set a counter to determine how many instruction encounters to end a transaction. To avoid consistently abort on lengthy transactions, we can decrement the counter maximum on each retry.