Something that is commonly happening in that case is that whatever is being loaded has multiple worker processes or threads performing work in parallel, and one main process that is receiving signals from those workers that their part is done. Parallel processing is not predictable (IO waits, memory waits, etc). Sometimes the process that updates the graphical interface (the loading bar) takes a while to be scheduled again by the CPU. All of that contributes to janky bar upates.