Кто-нить сталкивался с такой проблемой - роботы работают на виртуальных машинах (vmware, windows xp). В начале дня синхронизируем время в xp, к концу торгов часы отстают минуты на 2-3 от реального времени, притом что если выходной и робот не работает - то отставания никакого нет. В чем может быть причина?
Comments (15)
Login or Create account, Log in or register to leave a comment
Причину не скажу, но я поставил прогу Absolute Time Corrector, она у меня автоматически часы каждую минуту проверяет, если надо то сама подводит. Очень удобная вещь, рекомендую.
Очень полезная статья:
http://www.vmware.com/files/pdf/techpaper/Timekeeping-In-VirtualMachines.pdf
Похоже то, что надо, спасибо - буду читать
Сталкивался с подобной проблемой как и у топикстартера, только не в гостевой ось, а в основной. В определенный момент часы на компе стали сильно отставать за день. Причина оказалось в недавно установленной проге.
Если по простому, то системный таймер обновляется с некоторой периодичностью и если есть проблемы с железом/драйверами/софтом, то он не обновляется "во время". Из за этого постепенно накапливается отставание.
DPC Latency Checker - тулза для проверки.
В идеале должно выглядеть так:
У меня же было так:
Из за этого и были проблемы.
Ого, да у меня там все красно-желтое, на домашнем все нормально... Попробую завтра с утра, когда робот работать не будет. Спасибо большое
Такая байда может быть если загрузка DPC в диспетчере задач высокая. То есть отложенный вызов процедур фигачит чего-то но посколь нагрузка большая не успевает отфигачивать. Других причин в латенси объяснить не могу. Даже уже не помню от чего такое может вылазить, но бывает что вылазит
А что такое DPC? С помощью проги от Moadip увидел, что вообще задержки сильно скачут на виртуалке и зависят от загрузки цп, те запускаю какую-нибудь прогу - сразу задержки в красную зону. Судя по статье - это проблема всех виртуалок, у меня еще все сделано на гипервизоре ESXi, может от этого тоже зависит
У меня похоже гостевые ос не синхронизирутся с хостом и где это включить не могу найти)
Если кратко: Сначала надо выбрать способ синхронизации - через tools или w32time (или NTP client) через tools: Отключаем w32time (в настройках времени -вкладка "время интернета" - снять галку "выполнять синхронизацию" Вставляем в .vmx файл строчки: tools.syncTime = true tools.syncTime.period = 60
Через окно tools можно включить синхронизацию, но нельзя установить необходимый период.
через w32time отключаем синхронизацию в tools (можно через окошко tools в гостевой машине) Настраиваем время интернета на адрес хоста (на нем должен быть настроен NTP сервер, на ESXi настраивается ) Через реестр ставим время обновления почаще, не более 15мин.
Через ntp client: Отличный бесплатный NTP сервер/клиент для windows (порт с UNIX): http://www.meinbergglobal.com/english/sw/ntp.htm Желательно найти поблизости (ping не более 3-4мс) NTP сервер Stratum1, тогда можно рассчитывать на отклонение от точного времени порядка 10мс.
PS. http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1318 http://www.mustbegeek.com/virtualization/time-synchronization-between-virtual-machine-and-esxi-server/
Ага, спасибо - нашел и включил через tools. Я встречал упоминание, что tools каждую минуту время сравнивает, это так? И еще - не будет ли каких косяков в работе робота в момент синхронизации, у меня несколько таймеров используется и Thread.Sleep?
Все настроил - работает как часы, всем огромное спасибо за помощь!
Работает как часы))
Да, в результате так и сделал