After talking to Helen in support ticket, I found that it was because there were too many peers of my public sharing folders. Sync is keeping "ping" the peers to check whether they're still online. If there're hundreds offline peers, my node is waiting the "ping" responses until timed out. That costs too many CPU. (state umtxn and uwait)
So is it possible in future to add a parameter to disable active "ping" to other peers. I think that will free up the waiting locks.