Разработал я программу, выполняется она под CLR(.NET). В ней есть поток, который производит определенную обработку, достаточно интенсивную, крутится в цикле, либо без sleep-ов и wait-ов вообще, либо с ними (на проблему это не влияет никак). Тестировал на разных компьютерах под ОС Windows 7 x64. Стал запускать на хостинге, там виртуальная машина (средствами Microsoft сделанная), гостевая ОС Windows Server 2012 R2 x64,
Xeon E5 (он мне так виден по крайней-мере). Подключаюсь через удаленный рабочий стол, тестирую. И наблюдаю я такую картину: работает поток себе работает, а потом хлоп, через некоторое время (порядка получаса но в целом рандомно) прерывает свое выполнение, типа "засыпает" причем очень грубо на 500 — 6000 мс, потом опять работает нормально, затем через какое-то время "засыпает" опять и т.д. Еще я пробовал в этом же процессе поток запускать, который параллельно ему работал. Сейчас наклепал программулину, имитирующую работу.В момент лагов первого потока, второй поток не лагал. И точно, сейчас уже получил в одном цикле задержку 1.5 сек, и это не предел видимо. Пробовал задирать приоритеты процесса и потока, изменил Win32PrioritySeparation на 26, timeBeginPeriod уменьшал, не помогает, да и не в этом дело видимо, слишком грубые лаги. Нет, ну я конечно понимаю, это не ОС реального времени, виртуалка, .Net опять же с горбатым коллектором. Но несколько секунд, это оочень грубо я считаю.
Подскажите пожалуйста в чем может быть причина и как ее выявить, несколько дней парюсь уже.