Автоматизация учета

Применение параллельных вычислений для автоматизации бизнес процессов

За последние несколько лет ресурсы серверов использующихся для поддержания даже относительно небольших ИТ систем многократно возросли. Большинство серверов используют 4-е и более ядер процессоров. Не учитывая для определенных задач специфику параллельных вычислений, можно потерять значимую часть ресурсов ваших серверов.

Наверняка многие слышали о крупных исследовательских проектах использующих параллельные вычисления для раскрытия структуры гена человека. В таких проектах зачастую используются параллельные вычисления множества серверов и персональных машин участвующих в этом проекте. Параллельные вычисления иногда можно и нужно применять и в более приземленных повседневных задачах. За последние несколько лет ресурсы серверов использующихся для поддержания даже относительно небольших ИТ систем многократно возросли. Большинство серверов используют 4-е и более ядер процессоров. Не учитывая для определенных задач специфику параллельных вычислений, можно потерять значимую часть ресурсов ваших серверов.

Итак, в данной статье речь пойдет о параллельных вычислениях в пределах одного сервера с использованием многопоточности и соответствующим распределением по процессорам. Разумеется, возможность параллельных вычислений является неотъемлемой частью любой OLTP системы претендующей на приемлемую масштабируемость. В этом случае необходимо добиться максимальной параллельности выполнения потоков в разрезе пользователей. В контексте работы MS SQL сервера сессии должны быть максимально независимы друг от друга и не пересекаться на блокировках. При этом полностью от блокировок избавиться будет нельзя, т.к. может возникнуть проблема грязного чтения. В этом случае - цель достичь некоторой золотой середины между независимостью и параллельностью выполнения процессов, при этом не допустить серьезного риска возникновения грязного чтения или дедлоков.

Создание подобной масштабируемой OLTP системы не всегда является тривиальной задачей и этому можно посвятить не одну статью, в данном случае мы рассмотрим другую задачу. А именно ускорение выполнения регламентного процесса выполняемого в монопольном режиме путем распараллеливания.

Задачи распараллеливания отчасти решены в MS SQL – существует специальный параметр (max degree of parallelism) отвечающий за распараллеливание запросов в разрезе процессоров. Использование этого параметра позволяет распараллелить ряд SQL запросов и добиться их ускорения. К сожалению, это происходит не всегда – в ряде случаев может быть обратная ситуация, когда распараллеливаемый запрос выполняется дольше. Кроме этого практически всегда при распараллеливании совокупные затраты времени CPU значительно больше по отношению к выполнению в однопроцессорном варианте. Поэтому этот параметр для OLTP систем практически всегда нужно отключать и запрещать выполнение распараллеливания по умолчанию. 

Этим проблемам есть объяснение – не бывает общего решения по распараллеливанию для всех видов задач. Некоторые задачи вообще практически нельзя распараллеливать, некоторые напротив - хорошо поддаются распараллеливанию. (Кому знакомы термины мьютэксы и разработка многопоточных приложений, данная статья вряд ли подскажет что то новое). Рассмотрю несколько примеров из практики, которые показывают область применения алгоритмов распараллеливания. 

Расчет заработной платы

Несколько раз возникал вопрос решения проблем длительного времени выполнения регламентных обработок по расчету заработной платы. Разумеется, речь шла о больших объемах измеряемых десятками тысяч сотрудников. Анализ показал, что используемая система на базе 1С для расчета использует большое количество логических операций на клиентской части. На уровне MS SQL не было явно «тяжелых» конструкций, оптимизировав которые можно было бы рассчитывать на серьезный эффект ускорения. Это отчасти обусловлено тем, что сам по себе модуль расчета достаточно сложен в силу специфики российского законодательства, а также учитываются большое количество видов трудовых отношений. Используемое серьезное серверное оборудование было загружено минимально. При этом операции по расчету выполнялись весьма длительное время. Было решено применить для оптимизации этой задачи распараллеливание. В общем-то подобная задача достаточно хорошо распараллеливается, т.к. достаточно мало конкурирующих ресурсов, а также зависящих данных друг от друга. В определенном смысле можно сказать, что с точки зрения бухгалтерского учета расчет зарплаты произвольного сотрудника Х не влияет на расчет зарплаты произвольного сотрудника Y. (разумеется, в конце остается небольшая с точки зрения ресурсов задача агрегации и суммирования результатов).

Это утверждение не всегда справедливо. Например, в некоторых случаях руководители подразделения получают бонусы в зависимости от прибыли по текущему подразделению. В этом случае на бонус руководителя влияет бонус его подчиненных и рассчитывать его необходимо в последнюю очередь. То есть задача расчета бонуса руководителя будет зависеть от задачи расчета бонуса его подчиненным и эти задачи никогда не могут выполняться параллельно.

Концепция реализации достаточно простая. Необходимо посчитать количество сотрудников участвующих в расчете. Исходя из предположения, что время расчета на произвольного сотрудника является постоянной величиной, необходимо этот список поделить на несколько одинаковых по количеству групп. Оптимальное количество групп не всегда равняется количеству процессоров. В некоторых случаях может меньше, т.к. узким местом системы может стать, например дисковая подсистема. А в некоторых случаях, как не удивительно, оптимальное количество может быть больше количества процессоров. Этому тоже есть логическое объяснение, но оно выходит за рамки этой статьи. Далее по этим группам происходит расчет зарплаты в отдельных сессиях 1С. А затем в конце происходит агрегирование результатов.

Все сложности начинаются при реализации. Например, процессы расчета зарплаты по различным сотрудникам в независимых сессиях, несмотря на логическую независимость друг от друга, блокировали друг друга (на уровне внутренних блокировок MSSQL). Для этого пришлось изменить структуру индексов, уровни изоляции а также некоторые типы запросов. Затем узким местом системы стал механизм нумерации новых документов – его также пришлось менять. Были определенные сложности и в создании механизма управления сессиями. Их необходимо было запускать автоматически, определяя сколько их уже запущено, не зависла ли какая либо из них. Необходимо было реализовать механизм контроля выполнения общего процесса и т.п.

В конце концов, когда все было реализовано – получилось уменьшить более чем в десять раз время расчета, при этом загрузив оборудование на 100 процентов. Расчет в каждой из сессий выполнялся практически с одинаковой скоростью и за счет того, что каждая значительно группа была меньше общего списка – совокупное время расчета значительно уменьшилось.

Загрузка данных

В некоторых случаях необходима загрузка данных в ИТ систему. Агент который осуществляет подобную загрузку может работать как в одном потоке, так и в нескольких. Использование нескольких потоков в ряде случаев может существенно ускорить процесс загрузки, обеспечив большую оперативность и увеличение информационных потоков обмена.

К сожалению, это применимо не для всех систем и не для всей области данных. В большинстве случае информация, которая идет в систему зависит друг от друга и важна хронология предоставления этой информации. В этом случае нет возможности взять общую очередь и простым образом разделить ее на равномерные участки и обрабатывать их параллельно. Это возможно, как правило, в редких случаях. Например, в стандартном репликаторе MSSQL триггеры пишут в очередь изменений данные об операциях Insert, Delete, Update. Предполагается, что эти операции можно выполнить независимо друг от друга в случае если нет констрэинтов, вычисляемых полей и явных зависимостей. Кроме того в определенный момент времени может произойти ситуация, когда данные в системе будут несогласованы. Предположим, пройдут изменения по одному потоку в котором есть ссылка на новый элемент X, а в другом потоке где этот элемент создается (Insert) изменения могут еще не пройти. В результате, если в этот момент произойдет чтение по этой области данных, ссылка на элемент Х будет ссылаться на еще не существующий элемент в БД. Это самый простой случай, а ведь есть ситуации когда в зависимости от хронологии проведения документов результаты будут отличаться.

Поэтому область применения параллельных вычислений определяется различными факторами.

Важным условием является, работает ли кто-то с базой в момент загрузки данных. Как правило, параллельная загрузка необходима в случае возникновения больших очередей обмена. Это может произойти в случае длительного отсутствия связи источника и приемника. В этом случае в ночное время (если в это время с базой никто не работает, например система не 24*7) необходимо будет максимально использовать серверные ресурсы, для того чтобы в минимальный срок перенести всю очередь. Далее важно определить, а можно ли разбить очередь на группы изменений по объектам, которые относительно не зависят друг от друга.

Например, загрузка товаров по различным складам или загрузка различных видов документов использующих независимые контуры.

Вообще использование многопоточности является необходимым условием любого эффективного репликатора. В некоторых проектах применяя многопоточную загрузку наша проектная группа добивалась более чем 8-и кратного ускорения загрузки данных. Компания «СофтПоинт» успешно применяет технологию распараллеливания в проектах по оптимизации и построения распределенных систем.

Начать дискуссию

Кабмин направит на поддержку Запорожской и Херсонской областей 4,4 млрд рублей

Деньги пойдут на выплату зарплат сотрудников бюджетных учреждений.

Курсы повышения
квалификации

20
Официальное удостоверение с занесением в госреестр Рособрнадзора

Самые интересные споры по госзакупкам за 1 квартал 2024 года

ФАС привела обзор судебной практики в сфере госзакупок за 1 квартал 2024 года.

🔥 Акция «Жаркие скидки в любую погоду»! Самые горячие онлайн-курсы «Клерка» за 4 290 рублей до 20 мая

Мы предлагаем самые выгодные цены на онлайн-курсы по учету на маркетплейсах, УСН, ВЭД, финмоделированию, ФСБУ и бухгалтерии с нуля. Только до 20 мая их можно купить за 4 290 рублей!

Лучшие спикеры, новый каждый день

Святой рандом мая. PIKK — акции ПИК

Продолжаю третий сезон святого рандома с покупкой российских акций. Каждый месяц я выбираю одну рандомную акцию из индекса Мосбиржи. Ну как я, делает это святой рандом, он же генератор случайных чисел. Я её потом просто покупаю. Почему? Да потому что какой смысл ручками выбирать акции, если рынок ведет себя непредсказуемо ¯\_(ツ)_/¯

Святой рандом мая. PIKK — акции ПИК
Бесплатно с Трудовые отношения

Сверхурочные в 2024 году: как оплачивать по новым правилам

Порядок оплаты сверхурочных работ закреплен в обновленной ст. 152 ТК во исполнение поручения, которое дал законодателям КС в постановлении от 27.06.2023 № 35-П. Теперь при оплате сверхурочной работы необходим принимать во внимание все компенсационные и стимулирующие выплаты.

Сверхурочные в 2024 году: как оплачивать по новым правилам
Бесплатно с Налоговые проверки

Продажа авто учредителю по цене ниже рыночной: сколько доначислят налоговики

Если организация продает самортизированные активы по низкой цене взаимозависимым лицам, ей доначислят налоги. Разбираем судебную практику.

Продажа авто учредителю по цене ниже рыночной: сколько доначислят налоговики
Опытом делятся эксперты-практики, без воды

Что будет с интернетом, мобильной связью, Почтой России, электронными услугами, ИТ: заявления Минцифры

Максут Шадаев перед утверждением на должность министра цифрового развития, связи и массовых коммуникаций РФ назвал основные направления работы и какие вызовы стоят перед Минцифры.

Новое приложение «Ситидрайва» удалили из App Store

Уже установленные приложения будут работать на iOS. Пользователям рекомендуют отключить функцию «Сгружать неиспользуемые».

Платись, платись большая и маленькая: независимо от размера зарплату нужно платить два раза в месяц! 💰«Ночной бухгалтер» № 1684

Даже если ваш сотрудник на неполной ставке получает зарплату размером в несколько тысяч рублей, ее нельзя платить один раз. Даже сотрудник просит. Так Роструд сказал.

Иллюстрация: Вера Ревина/Клерк.ру

Расценки на техобслуживание газового оборудования, возможно, будет устанавливать государство

Регионы предлагают ввести государственное регулирование стоимости услуг по техобслуживанию газового оборудования.

Обменники крипты: как выбрать подходящий

Сегодня купить и продать криптовалюту* в России можно несколькими способами: через криптовалютные биржи, P2P-сервисы, криптоматы и обменники, работающие онлайн и офлайн. Последний вариант позволяет проводить сделки анонимно – без отправки своих персональных данных и платежных реквизитов.

Обменники крипты: как выбрать подходящий

Можно ли выдать за раз маленькую зарплату, как оплачивать переработку в командировке, на ГПД положен стандартный вычет. 3 важных разъяснения для бухгалтеров по зарплате

Собрали полезные разъяснения Роструда и Минфина по расчетам с работниками.

Иллюстрация: Вера Ревина/Клерк.ру
Миникурсы, текстовые и видеоинструкции для бухгалтеров

Приобретение лицом из недружественного государства доли (акций) в российской компании (ООО или АО) в 2024 году

Необходимо ли получать разрешение подкомиссии, если лицо из недружественного государства хочет стать участником (акционером) российской компании (ООО или АО). Какие требования предъявляются к данным сделкам (операциям).

Зарплата

Выделено финансирование на увеличенные выплаты педагогам

Правительство направит более 8 млрд рублей на увеличенные выплаты классным руководителям и кураторам.

IT-компании

Нидерландская компания Yandex сменит свое название до 31 июля

До 31 июля иностранная организация продаст остаток акций, перестанет использовать бренды российской компании «Яндекс» и сменит название.

Проверки ФАС

ФАС рассказала, как, где и на что контролирует цены

Контроль ценообразования на социально значимых рынках остается для Федеральной антимонопольной службы приоритетной задачей.

В России нашли фейковый магазин приложений Play Market

Специалисты по изучению киберпреступлений предупредили об опасном магазине приложений для смартфона. В файлах содержатся вирусы, которые могут украсть личные данные и деньги.

Обзоры новостей

⚡️ Итоги дня: искусственный интеллект защитит смартфон от кражи, в Петербурге будут следить за курильщиками, а в TikTok появятся часовые видео

Подготовили обзор главных событий дня — 17 мая 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Малый бизнес получил 130 млрд рублей по программе «1764»

По льготной ставке 13,4% годовых финансирование привлекли представители МСП из сферы гостиничных услуг, обрабатывающих производств, сельского хозяйства, а также транспортные компании и склады.

Интересные материалы

С 2025 года социальный заказ будет работать во всех регионах

Экспериментальный механизм социального заказа оказался успешным, поэтому Минфин утвердит его на постоянной основе. К участию присоединятся все регионы РФ.