“The whole period of square wave sounds an awful lot like it is around 49.7 days.”
The .NET thread pool switched its core count every few weeks on every machine at once. The cause was a 32-bit millisecond tick counter that wraps after 49.7 days. The same wraparound once crashed Windows 95. Decades later, the counter still overflows and somebody still forgot.