Очередь расчёта: почему приходится ждать и откуда берётся срок
Почему расчёт не мгновенный, откуда берётся названный срок и что делать, если счёт оборвался по времени. Общий материал двух сервисов.
Нажали «рассчитать» — и вместо результата видите «В очереди». Ниже о том, что
происходит в эти секунды и почему названный срок именно такой.
Почему расчёт не мгновенный
Раскрой — это перебор. Программа не подставляет детали в формулу, а
примеряет порядки укладки, сравнивает их между собой и выбирает лучший.
Количество вариантов растёт быстрее числа деталей, поэтому задание на сотню
позиций считается не в сто раз дольше задания на одну.
Порядок величин в раскрое профиля: спецификация на 500 позиций считается около
семи секунд, на 2000 — около тридцати.
В раскрое листа величины иные, и это важно не перепутать. Там перебираются
ещё и повороты деталей, а сама деталь задана не длиной, а контуром из десятков
и сотен точек. Счёт идёт на десятки контуров, а не на тысячи позиций:
задание из 27 контуров считается около пятидесяти секунд, из 46 контуров в 107
экземплярах — около пяти с половиной минут. Если перенести на раскрой листа
привычку, взятую из раскроя профиля, покажется, что сервис завис.
Это счёт, а не ожидание сети. Обновление страницы его не ускорит.
Почему очередь, а не «всем сразу»
Сервер мог бы взяться за все задания одновременно. Так было бы хуже для
всех.
Работы от этого не убавится: те же расчёты поделят те же вычислительные ядра.
Но при очереди первый получает ответ через несколько секунд, а при
одновременности все ждут максимума. Двадцать заданий по пятнадцать секунд
на двух ядрах — либо кто-то готов через пятнадцать секунд, либо все через две с
половиной минуты.
Поэтому задания выполняются по порядку поступления, а сколько их идёт разом —
задаётся числом ядер, отданных расчётам.
Откуда берётся названный срок
Три величины.
Объём работы, стоящей впереди. Складываются не задания, а их объём: в
раскрое профиля — число позиций спецификации, в раскрое листа — число узлов
контуров после спрямления дуг.
Это существенно. «Третий в очереди» — сведение бесполезное, пока не известно,
что это за трое. Одно крупное задание впереди весит больше десятка мелких, и
оценка по числу заданий врала бы систематически.
Стоимость единицы работы на этом сервере. Не взятая из справочника, а
измеренная здесь: по последним нескольким сотням досчитанных заданий
считается, сколько в действительности уходит на позицию или на узел.
Оборванные по времени в счёт не идут: они говорят лишь о том, что упёрлись в
предел, а не сколько считались бы на деле. У другого
сервера другая частота, другая загрузка — и величина другая.
Пока измерений мало, применяется приближение, и оно намеренно осторожное.
Сколько расчётов идёт одновременно.
Отсюда: ожидание ≈ объём работы впереди ÷ число мест + собственное задание.
Почему «около сорока секунд», а не «43 секунды»
Оценка округляется вверх и до крупного шага. Это сделано намеренно.
Обещание с точностью до секунды создаёт ожидание точности, которой расчёт не
даёт: соседнее задание может оказаться тяжелее ожидаемого. А заниженное
обещание вредит вдвойне — человек, которому обещали двадцать секунд, на
сороковой решает, что расчёт завис, ставит задание заново и удлиняет ту самую
очередь, которую ждал.
Ступени: до десяти секунд — «меньше 10 секунд»; до минуты — десятками секунд;
до пяти минут — минутами; далее — пятёрками минут; свыше часа — «более часа».
Что делать, пока идёт расчёт
Не обновлять страницу и не нажимать «рассчитать» второй раз. Задание уже
принято; повторное нажатие поставит в очередь ещё одно, и ждать придётся
дольше.
Вкладку можно оставить открытой. Результат появится сам.
Можно уйти со страницы — задание не пропадёт.
Если расчёт оборвался по времени
У расчёта есть предел. Он не наказание, а защита: задание, ушедшее в перебор
без конца, заняло бы ядро и остановило очередь для всех остальных.
Оборванный расчёт не пропадает: выдаётся лучшее найденное к этому моменту
размещение, и об обрыве говорится прямо. Просто раскладка вышла хуже, чем могла
бы.
Что обычно помогает:
-
разделить задание. Две спецификации по 500 позиций считаются быстрее
одной на 1000 — перебор растёт быстрее их числа. В раскрое листа деление по
толщинам программа делает сама: детали разной толщины не лежат на одном
листе, и на каждую толщину получается своя карта; -
снять часть послаблений. Каждое послабление расширяет перебор. В раскрое
профиля это общие резы, зеркалирование и стыковка; в раскрое листа — повороты
деталей, число углов поворота, взятых из их геометрии, и размещение мелких
деталей в отверстиях крупных. Отключение самого дорогого из них часто
укладывает расчёт в предел с потерей долей процента по расходу металла; -
проверить исходные данные. Деталь, не помещающаяся в заготовку, нулевое
количество, ошибка в размерах — такое иногда уводит перебор в тупик. В
раскрое профиля к этому добавляется сечение с опечаткой, в раскрое листа —
незамкнутый или самопересекающийся контур.
Если ждать не хочется
Задание можно снять — тогда ядро освободится сразу, и очередь для остальных
станет короче. Снятие ничего не стоит и ничего не расходует.
Снятие доступно там, где оно предусмотрено интерфейсом сервиса; в раскрое
профиля расчёты коротки, и такой нужды обычно не возникает.
Чего очередь не означает
Не сбой. Задание принято и будет выполнено.
Не перегрузку сервера. Даже один расчёт впереди вашего даёт «в очереди» —
это обычная работа, а не признак нехватки мощности.
Не потерю данных. Исходные данные уже на сервере; закрытая вкладка расчёту
не мешает.
Документ размещён в справочных целях. Действующую редакцию сверяйте по официальному источнику.