четверг, 7 февраля 2013 г.

диспетчер параллельных вычислений

Введение Основные сложности при выполнении длительных регламентных задач возникают в следующих случаях: 1. На выполнение задачи выделен строго определенный ограниченный интервал времени, которого может не хватать для завершения регламентной задачи. 2. Выполнять задачу необходимо множество раз, в несколько итераций, когда в каждой последующей итерации постепенно корректируются какие-либо данные в зависимости от результатов предыдущей итерации до тех пор, пока не будут получены целевые значения. Общая продолжительность таких действий может оказаться неприемлемо большой. 3. Если длительность выполнения задачи начинает превышать некий порог, она каждый раз завершается аварийно (либо «зависает навсегда»). И корректно выполнить её вообще не удаётся. 4. Необходимо постоянное присутствие специалиста во время выполнения задачи, притом что её длительность может достигать 9-12 часов и более. Во многих случаях решить проблему ускорения длительных задач можно применением параллельных вычислений. Как указывалось в предыдущих статьях, написание программистом кода, в котором заложено использование параллельных вычислений, - это более сложная задача, чем классическое кодирование в «один поток». Также следует отметить, что не все задачи в принципе распараллеливаются (по крайней мере, эффективно). Напомню, за счет чего при использовании параллельных вычислений возможно ускорение. В современных серверах увеличение производительности идет по пути увеличения количества процессоров (и их ядер). Задача, написанная классически в «один поток», будет использовать только один процессор, и большая часть вычислительного потенциала многопроцессорного сервера останется не задействованной. Ускорение возможно в том случае, если задача будет работать одновременно в нескольких потоках и эффективно задействовать мощности нескольких процессоров. Далее рассматривается пример того, как можно ускорить проведение документа РаспределениеНДСКосвенныхРасходов с помощью параллельных вычислений.   Проведение документа РаспределениеНДСКосвенныхРасходов с применением параллельных вычислений Суть проблемы с проведением РаспределениеНДСКосвенныхРасходов заключается в следующем. По мере увеличения количества корректирующих движений, производимых документом, время его проведения увеличивается. Также увеличивается перечень блокируемых при этом ресурсов и длительность блокировок. В какой-то момент длительность проведения документа становится неприемлемо большой, либо документ вообще перестаёт корректно проводиться (например, он может «повисать», и отклика от него дождаться не удаётся). Ситуация усугубляется тем, что зачастую формирование этого документа происходит итерационно, когда он сначала заполняется, затем проводится, затем на основании полученного результата в документ вносятся корректировки, затем он еще раз проводится и так далее до тех пор, пока не будут получены желаемые цифры. Общие подходы к решению Описанные выше проблемы заставляют искать способ принципиально ускорить проведение документа РаспределениеНДСКосвенныхРасходов. Таким решением может быть применение параллельных вычислений, а именно, многопоточное проведение документа. Для успешной реализации такого решения в данном виде документа имеется ряд предпосылок: • Специфика алгоритмов данного документа такова, что если единый большой документ (тут величина документа оценивается по количеству строк в ТЧ «СоставКосвенныхРасходов») разделить на множество более мелких документов-дочек, то созданные при проведении множества мелких документов корректирующие движения дадут тот же результат (с точки зрения бухгалтерской отчетности), что и движения единого большого документа. Эта особенность известна и иногда используется на практике. Следует учесть, что небольшая разница в итоговых цифрах всё же возможна из-за погрешностей, связанных с округлением сумм. • Дробить большой документ можно на произвольное число более мелких документов-дочек. • Дробление исходного документа можно выполнять автоматически программно, это явно легкореализуемо. • Проводить документы-дочки можно в любой последовательности. • Организовать многопоточное проведение можно либо с через запуск N-сессий толстого клиента 1С:Предприятие, либо (что более эффектно и удобно) через использование механизма фоновых заданий. • Можно предположить, что, скорее всего, перечисленные выше факторы позволят реализовать механизм многопоточного проведения полностью штатными средствами 1С, без изменения структуры документа и без вмешательства в стандартный алгоритм проведения. А значит, будет автоматически выполнено главное условие реализации данного механизма – это обеспечение корректности итоговых данных с точки зрения бухгалтерской отчетности. Возможный выигрыш от многопоточного проведения в первом приближении можно оценить следующим образом: • Из опыта можно утверждать, что суммарное время проведения мелких документов-дочек, скорее всего, будет либо больше, либо примерно соответствовать времени большого документа-родителя. Однако, если запустить проведение документов-дочек в несколько потоков, то время должно сократиться за счет распараллеливания. Понятно, что степень реального параллелизма будет сильно зависеть от специфики конкретной ИС, в каких-то случаях её получить, возможно, не удастся, но в целом в большинстве случаев всё же можно ожидать выигрыша по времени. • В тех случаях, когда исходный большой документ вообще может проводиться стандартным способом, «многопоточный» вариант как минимум гарантирует успешное проведение в течение какого-то обозримого времени. А это уже немало в такой ситуации. Реализация механизма многопоточного проведения Далее приводится пример практической реализации механизма многопоточного проведения документа РаспределениеНДСКосвенныхРасходов. Сразу следует также отметить, что описанный здесь механизм – не единственный возможный вариант реализации принципа

Содержание P P P PPPPP PPPPPP PPPPPP PPPPPPP

В моей практике все больше сталкиваюсь с ситуациями, когда клиентам необходимо ускорить выполнение регламентных отчетов, обработок, документов (в дальнейшем будем называть - задачи). Как правило, эти задачи выполняются очень долго, время их выполнения измеряется часами или даже сутками. Далее в статье будет рассмотрен пример того, как можно применять параллельные вычисления в 1С:Предприятие 8.2 для ускорения документа РаспределениеНДСКосвенныхРасходов (распределение НДС косвенных расходов).

Применение параллельных вычислений для ускорения регламентных задач на 1С Предприятие 8.2 -01.10.2012   

Наши Клиенты (отзывы):

Поиск по сайту  

+7(495) 543-74-02 , softpoint@softpoint.ru

Применение параллельных вычислений для ускорения регламентных задач на 1С Предприятие 8.2 -01.10.2012

Комментариев нет:

Отправить комментарий