wp_get_update_data() function running on every admin request

If it’s native behavior (and not something like third party extensions screwing it up) then update checks should basically fire if there is no data or the time for next check have passed.

My educated guess would be it’s one of the two:

  • your install not being able to store transients correctly (thus data always empty)
  • your install having time screwed up (thus always “behind” the time to check)

But to say with certainty need to pretty much take that logic apart and step through. I did such before, it’s pretty murky code spaghetti around there in core.