In many posts people say "miners periodically vote to determine the block gas limit". But how actually do they vote and change the block limit? Do they vote for every block/or do it every day or for some other fixed period of time? Another related question: on September 2019 there was a jump of gas limit (8M to 10M). How did that happen?
This answer from another user fits perfectly. To quote:
strategy: gasLimit of block-to-mine is set based on parent's gasUsed value. if parentGasUsed > parentGasLimit * (2/3) then we increase it, otherwise lower it (or leave it unchanged if it's right at that usage) the amount increased/decreased depends on how far away from parentGasLimit * (2/3) parentGasUsed is.
The targetGasLimit parameter is now deprecated and miners can use
--miner.gastarget value to set their own gas limit. The default in geth is 8,000,000.