Возможные проблемы сетевого просчёта.


shashlik

Все диспетчеры только запускают командную строку на удалённом компьютере. Но пользователи нередко наделяют возможностями рабочей программы и сам диспетчер. Не раз слышал вопросы типа - а может ли он считать в EXR, а может ли бейкать оклюжн и т.п. Диспетчер запустит Maya на удалённом компьютере, со сценой которую настроили Вы, и что уж она сделает или умеет делать, ему по барабану.

Бывает так что получается разный результат когда вы в открытой вами рабочей программе нажимаете на кнопку "рендер" и когда вы посылаете считаться на ферме. Часто в этом винят программу диспетчер - "почему она считает по-другому". А попробуйте сами запустить ту командну, которую запускает диспетчер. Обычно тут всё и выясняется. Ошибки же диспетчера существуют, но они другого характера. Например перестал отвечать клиент, приходит неправильная информация о его ресурсах, просто завис клиент или сервер. Но неправильно посчитать он не может в принципе, так он ничего не считает, а просто запускает ваши же рабочие программы с вашими же сценами на других компьютерах.

Диспетчер может только запустить неправильную команду. Тогда надо выяснять кто её подал диспетчеру.

  • Вы сами писали эти команды "ручками" и отправляли диспетчеру.
    Тут понятно, кто накосячил.
  • Вы послали считаться сцену используя для этого готовые инструменты ("менюшки", "окошки").
    • У вас есть технической директор.
      Жалуйтесь. Может он сам прикручивал диспетчер к вашей рабочей программе. Или подправил сущесвующие инструменты. Тогда он виноват. Или он будет общаться с разработчиками. Или даже править их баг. Теперь в любом случае это его проблема.
    • У вас нет технического директора.
      Если вы сами ничего не меняли в диспетчере (то есть если вы сами не ТД), значит вы пользуетесь инструментами, предоставляемыми разработчиками диспетчера. Тогда в диспетчере баг. Это значит он не работает у всех пользователей во всех конторах, и у разработчиков тоже. Это скорее всего уже заметили, и возможно исправили.

Хочу ещё обратить ваше внимание на то, что есть задачи которые нельзя разделить на кадры и каждый считать по отдельности. Это задачи, где каждый следующий кадр зависит от предыдущего. Сюда попадают всевозможные симуляции: партиклы, одежда, волосы, мех, флюиды. Что произойдет если вы сразу переместитесь в какой-нибудь 200 кадр, зависит от приложения. Симуляции либо не произойдёт вовсе, либо она будет считаться с начала на каждом компьютере, тогда смысла нет её считать на ферме. Перед расчётом картинки на ферме симуляцию обычно бейкают на одном компьютере.

Надо как-то узнать какую конкретно команду диспетчер просит запустить клиента. Наверняка это можно сделать в любом диспетчере, иначе будут большие трудности с его тестированием и настройкой.
(в Афанасии откройте задачу и кликните мышкой на "таск", внизу а линии "статуса" она появится, от туда её можно скопировать, рабочий каталог можно посмотреть свойствах "блока")

Этот "troubleshooting" запуска команды. Поэтому можно сказать что это "troubleshooting" любого диспетчера.

  • Запустите эту командную строку на своём компьютере.
    • Не запускается.
      1. Проблемы с путями.
      2. Командная строка в любой OS показывает где вы находитесь. Возможно команда должна быть запущена из определённого места, если вы используете относительные пути. Тогда перейдите в ту папку где её запускает диспетчер, и запустите от туда.
      3. Скрипт, создавший задачу, не правильно сгенерил команду. Если вы не сами "ручками" писали команды диспетчеру, а воспользовались готовой для этого утилитой ("менюшкой, окошком"), то команда правильная. Либо это баг в диспетчере и он у всех, обращайтесь к разработчикам. Возможно это ваш ТД прикрутил или просто подправил запускалку.
    • Запустилось с ошибками. Результат другой.
      1. Иногда приложения могут работать немного по разному через с GUI и без него. Например Maya не запускает скрипты связанные с GUI, а может где-то в них вы инициализируете нужную вам процедуру (а ещё как-то в ней генерация mi фалов без GUI немного по-другому работала).
  • Запустите эту команду на рендере.
    • Не запускается.
      1. Убедитесь что на рендерах стоят те же программы что и у вас.
        Лучше держать папку со всеми необходимыми программами где-нибудь на сервере. Рабочие станции и рендера настроить так чтобы они, например, при загрузке синхронизировались с этой папкой. Не надо устанавливать софт, его достаточно просто переписать.
    • Запустилось с ошибками. Результат другой.
      1. Рендер имеет доступ до сцены и всех её ресурсов?
        Лучше работать на удалённо на файловом сервере. А сеть везде настроить так, чтобы у пользователя и у рендера была та же файловая система. Тогда на любом компьютере одни и те же пути в проекте.
      2. Убедитесь что на рендерах стоят те же утилиты, скрипты, плагины что и у вас.
        Всякие мелкие тулзы можно просто держать в общей папке на сервере. А программы настроить так, чтобы они не локально что-то искали, а на этом сервере. Тогда точно у всех всё будет одинаково.
  • Зайдите удалённо на рендер пользователем, от имени которого работает там клиент диспетчера. И снова запустите команду.
    Под другим пользователем возможно другие пути и прочие переменные. Этот момент надо учитывать. Может ещё вы что-то инициализируете во время логина и это работает только "под вами".
  • Это последний рубеж. Далее, действительно можно сказать, что "виноват" диспетчер.
    Как то он по-другому запускает команду, не как вы. Но такое бывает очень редко и на очень нестандартных задачах. Если вы не сами сгенерили задачу, а воспользовались готовым скриптом из вашего рабочего софта, то это врятли. Но всё же. Узнайте как диспетчер запускает командную строку. Например Афанасий в Linux и Mac "bash -c командна_с_аргументами", в MS Windows "cmd.exe /c командна_с_аргументами". Т.е. запускает определённую оболочку и уже ей подаёт команду. Думаю что так делают все диспетчеры.
    (если вы не поняли о чём речь, то вы не должны были дойти до этого пункта, ищите ошибку раньше)

troubleshooting

CGRU