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