RU2638635C2 - Method of determining priority of tasks queued in server system - Google Patents
Method of determining priority of tasks queued in server system Download PDFInfo
- Publication number
- RU2638635C2 RU2638635C2 RU2014125149A RU2014125149A RU2638635C2 RU 2638635 C2 RU2638635 C2 RU 2638635C2 RU 2014125149 A RU2014125149 A RU 2014125149A RU 2014125149 A RU2014125149 A RU 2014125149A RU 2638635 C2 RU2638635 C2 RU 2638635C2
- Authority
- RU
- Russia
- Prior art keywords
- tasks
- user
- task
- processor
- priority
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Description
ОБЛАСТЬ ПРИМЕНЕНИЯ ИЗОБРЕТЕНИЯFIELD OF THE INVENTION
[0001] Настоящее изобретение относится к определению приоритета задач в очереди, обрабатываемой локальной или облачной серверной системой.[0001] The present invention relates to determining the priority of tasks in a queue processed by a local or cloud server system.
УРОВЕНЬ ТЕХНИКИ НАСТОЯЩЕГО ИЗОБРЕТЕНИЯBACKGROUND OF THE INVENTION
[0002] В различных ситуациях, предполагающих выполнение нескольких поставленных в очередь задач от нескольких пользователей на одном или нескольких компьютерах или процессорах, необходимо, чтобы заданный доступный процессор определял, какую из находящихся в очереди задач следует выполнять первой. В системах, обрабатывающих большое количество задач, поставленных в очередь пользователями, могут возникать проблемы, связанные с нагрузкой буферизации. Если обработка задачи занимает много времени, пользователи могут ставить элементы работы в очередь быстрее, чем они обрабатываются.[0002] In various situations involving multiple queued tasks from multiple users on one or more computers or processors, it is necessary for a given available processor to determine which of the tasks in the queue should be performed first. In systems that handle a large number of tasks queued by users, problems may arise with the load of buffering. If processing a task takes a lot of time, users can queue work items faster than they are processed.
[0003] Один подход состоит в том, чтобы помещать новые задачи в очередь по мере их поступления и обрабатывать процессором по принципу «первым пришел - первым ушел» (FIFO). Данный принцип является эффективным при наличии одного пользователя. Однако когда множество пользователей помещают задачи в очередь в случайные моменты времени и все пользователи ожидают достаточно быструю обработку, данный подход может быть неудовлетворительным.[0003] One approach is to queue new tasks as they arrive and process them with a first come, first go (FIFO) processor. This principle is effective in the presence of one user. However, when many users queue tasks at random times and all users expect fast enough processing, this approach may be unsatisfactory.
[0004] Например, можно предположить, что обработка каждой задачи занимает 10 секунд. Пользователь А появляется первым и быстро ставит в очередь сто задач, и для обработки всех задач требуется 17 минут. Через одну минуту после того как пользователь А поставил свои задачи в очередь, пользователь В ставит в очередь одну задачу. Если система работает по принципу FIFO, то единственная задача от пользователя В не будет обрабатываться до тех пор, пока не будут обработаны все задачи от пользователя А, т.е. приблизительно 16 минут. Пользователю В придется ждать приблизительно 16 минут, чтобы просто обработать одну задачу, требующую 10 секунд процессорного времени.[0004] For example, it can be assumed that processing each task takes 10 seconds. User A appears first and quickly queues a hundred tasks, and it takes 17 minutes to process all the tasks. One minute after user A has queued his tasks, user B queues one task. If the system works according to the FIFO principle, then the only task from user B will not be processed until all tasks from user A have been processed, i.e. about 16 minutes. User B will have to wait approximately 16 minutes to simply process a single task requiring 10 seconds of processor time.
[0005] Другой распространенный подход заключается в назначении каждой задаче некоторого номера, чтобы процессор мог выбирать задачу с наивысшим приоритетом.[0005] Another common approach is to assign a specific number to each task so that the processor can select the task with the highest priority.
[0006] Когда несколько пользователей размещают задачи для процессоров, необходимо следить за тем, чтобы устанавливать приоритет задач в соответствии с ожиданиями пользователей, например, равномерно распределяя процессорное время и другие ресурсы между пользователями. В данном контексте под равномерностью может подразумеваться равномерное распределение процессорного времени с учетом частоты размещения задач пользователями и объема задач пользователей. Новые задачи пользователя, который недавно использовал больше процессорного времени, размещал большее число задач и задачи с большим совокупным объемом, должны иметь относительно меньший приоритет, чем новая задача от менее требовательного пользователя.[0006] When several users place tasks for processors, care must be taken to prioritize tasks in accordance with user expectations, for example, evenly distributing processor time and other resources between users. In this context, uniformity may mean uniform distribution of processor time, taking into account the frequency of placing tasks by users and the volume of tasks of users. New tasks of a user who recently used more processor time, posted more tasks and tasks with a large cumulative volume should have a relatively lower priority than a new task from a less demanding user.
[0007] Один пример таких задач представляет собой обработку содержащих текст изображений (в любом графическом формате, таком как pdf, tiff, jpeg и т.д.) с использованием оптического распознавания символов (OCR). В этом случае размер или объем каждой задачи измеряется в страницах. Время обработки задачи не обязательно напрямую связано с числом страниц в задаче, так как количество текста на разных страницах в разных задачах может различаться.[0007] One example of such tasks is the processing of text-containing images (in any graphic format such as pdf, tiff, jpeg, etc.) using optical character recognition (OCR). In this case, the size or volume of each task is measured in pages. The processing time of a task is not necessarily directly related to the number of pages in the task, since the amount of text on different pages in different tasks can vary.
[0008] РАСКРЫТИЕ ИЗОБРЕТЕНИЯ Задачи могут размещаться в облачной серверной системе, на удаленном или локальном сетевом сервере, либо на том же компьютере, который отвечает за обработку задачи (в этом случае данный компьютер выступает в качестве сервера), если у пользователей есть возможность загружать задачи в систему. По завершении задачи каждый компьютер или процессор запрашивает у сервера задачу с наивысшим приоритетом. Затем процессор обрабатывает задачу и в это время не обрабатывает любую другую задачу и не прерывается на выполнение любой другой задачи.[0008] DISCLOSURE OF THE INVENTION Tasks can be hosted on a cloud server system, on a remote or local network server, or on the same computer that is responsible for processing the task (in this case, this computer acts as a server) if users have the ability to download tasks into the system. Upon completion of the task, each computer or processor requests the server with the highest priority from the server. Then the processor processes the task and at this time does not process any other task and does not interrupt the execution of any other task.
[0009] В соответствии с настоящим изобретением каждой задаче, находящейся в очереди в системе, назначается приоритет, выбранный из диапазона приоритетов, например, от 0 до 255, где 0 - наивысший приоритет, который можно назначить задаче. Разным задачам одного пользователя могут назначаться разные приоритеты в зависимости от характера использования. Как правило, приоритет задачи не меняется в течение всего периода существования задачи.[0009] In accordance with the present invention, each task queued in the system is assigned a priority selected from a range of priorities, for example, from 0 to 255, where 0 is the highest priority that can be assigned to the task. Different tasks of one user may be assigned different priorities depending on the nature of use. As a rule, the priority of the task does not change during the entire period of the existence of the task.
[0010] При поступлении новой задачи система определяет, насколько интенсивно пользователь отправлял новые элементы в недавнем прошлом, и назначает новой задаче приоритет таким образом, чтобы задачи от пользователей, нечасто размещающих небольшие задачи, получали более высокий приоритет, а задачи от пользователей, интенсивно размещающих большое количество задач, получали более низкий приоритет. Система дополнительно отличается от подхода FIFO тем, что задачи сначала выбираются по приоритету (задачи с наибольшим приоритетом обрабатываются первыми), а задачи с одинаковым приоритетом распределяются в порядке их поступления.[0010] When a new task arrives, the system determines how intensively the user sent new items in the recent past, and assigns priority to the new task so that tasks from users who do not often post small tasks receive a higher priority, and tasks from users who intensively post a large number of tasks received a lower priority. The system additionally differs from the FIFO approach in that tasks are first selected by priority (tasks with the highest priority are processed first), and tasks with the same priority are distributed in the order they are received.
[0011] В контексте OCR задачи, как правило, представляют собой файлы изображений или PDF-файлы, содержащие более одной страницы. Для анализа характера использования помимо количества задач система использует количество страниц, поскольку время обработки задачи часто приблизительно пропорционально количеству страниц в задаче, таким образом, на приоритет будущих задач одного пользователя должно влиять не только количество задач, поставленных в очередь пользователем, но и количество страниц.[0011] In the context of OCR, tasks are typically image files or PDF files containing more than one page. To analyze the nature of use, in addition to the number of tasks, the system uses the number of pages, since the processing time of a task is often approximately proportional to the number of pages in the task, therefore, not only the number of tasks queued by the user, but also the number of pages should influence the priority of future tasks of one user.
[0012] Чтобы охарактеризовать использованное процессорное время, количество задач и объем задач (например, количество распознаваемых страниц), можно использовать различные монотонные метрики. Монотонные метрики представляют собой функции (например, с такими аргументами, как время или количество страниц или задач), которые имеют монотонную зависимость от своих аргументов, т.е. являются строго невозрастающими или строго неубывающими по всей соответствующей области знаний. Монотонная зависимость представляет собой зависимость, выражаемую монотонной функцией.[0012] In order to characterize the processor time used, the number of tasks and the volume of tasks (for example, the number of recognized pages), various monotonous metrics can be used. Monotone metrics are functions (for example, with arguments such as time or the number of pages or tasks) that are monotonously dependent on their arguments, i.e. are strictly non-increasing or strictly non-decreasing throughout the relevant field of knowledge. A monotonic dependence is a dependence expressed by a monotonic function.
[0013] Варианты реализации настоящего изобретения включают в себя способы определения приоритета множества задач от множества пользователей по меньшей мере для одного процессора, содержащие, применительно к необработанной задаче одного пользователя из множества пользователей, назначение числового приоритета пользователю; вычисление монотонной метрики Ml по совокупному процессорному времени, использованному предыдущими задачами пользователя по меньшей мере на одном процессоре за предшествующий период времени Т1; вычисление монотонной метрики М2 по временному интервалу между необработанной задачей и предшествующей задачей пользователя по меньшей мере на одном процессоре за предшествующий период времени Т2; вычисление монотонной метрики М3 по совокупному объему задач пользователя по меньшей мере на одном процессоре за предшествующий период времени Т3; уменьшение числового приоритета пользователя, монотонно зависящего от значений M1, M2 и М3; и назначение числового приоритета пользователя необработанной задаче; причем необработанные задачи с более высокими приоритетами выбираются для обработки по меньшей мере на одном процессоре раньше необработанных задач с более низкими приоритетами; и причем по меньшей мере один процессор последовательно выполняет только одну задачу в один момент времени.[0013] Embodiments of the present invention include methods for determining the priority of multiple tasks from multiple users for at least one processor, comprising, for an unprocessed task of one user from multiple users, assigning a numerical priority to a user; calculation of the monotonic metric Ml from the total processor time used by previous user tasks on at least one processor for the previous time period T1; the calculation of the monotonous metric M2 on the time interval between the unprocessed task and the previous user task on at least one processor for the previous time period T2; the calculation of the monotonic metric M3 for the total volume of user tasks on at least one processor for the previous time period T3; decrease in the numerical priority of the user, monotonously depending on the values of M1, M2 and M3; and assigning a user numerical priority to an unprocessed task; moreover, unprocessed tasks with higher priorities are selected for processing on at least one processor before unprocessed tasks with lower priorities; and wherein at least one processor sequentially performs only one task at a time.
[0014| Варианты реализации настоящего изобретения также включают в себя систему, содержащую компьютерный сервер или облачный сервер, на котором хранятся задачи и программное обеспечение, способное выполнять команды по определению приоритета множества задач от множества пользователей по меньшей мере для одного процессора, содержащие, применительно к необработанной задаче одного пользователя из множества пользователей: назначение числового приоритета пользователю; вычисление монотонной метрики M1 по совокупному процессорному времени, использованному предыдущими задачами пользователя по меньшей мере на одном процессоре за предшествующий период времени Т1; вычисление монотонной метрики M2 по временному интервалу между необработанной задачей и предшествующей задачей пользователя по меньшей мере на одном процессоре за предшествующий период времени Т2; вычисление монотонной метрики М3 по совокупному объему задач пользователя по меньшей мере на одном процессоре за предшествующий период времени Т3; уменьшение числового приоритета пользователя, монотонно зависящего от значений M1, M2 и М3; и назначение числового приоритета пользователя необработанной задаче; причем необработанные задачи с более высокими приоритетами выбираются для обработки по меньшей мере на одном процессоре раньше необработанных задач с более низкими приоритетами; и причем по меньшей мере один процессор последовательно выполняет только одну задачу в один момент времени.[0014 | Embodiments of the present invention also include a system comprising a computer server or a cloud server that stores tasks and software capable of executing commands to prioritize multiple tasks from multiple users for at least one processor, comprising, for an unprocessed task, one user from multiple users: assigning a numerical priority to the user; the calculation of the monotonous metric M1 for the total processor time used by the previous tasks of the user on at least one processor for the previous time period T1; the calculation of the monotonic metric M2 for the time interval between the unprocessed task and the previous user task on at least one processor for the previous time period T2; the calculation of the monotonic metric M3 for the total volume of user tasks on at least one processor for the previous time period T3; decrease in the numerical priority of the user, monotonously depending on the values of M1, M2 and M3; and assigning a user numerical priority to an unprocessed task; moreover, unprocessed tasks with higher priorities are selected for processing on at least one processor before unprocessed tasks with lower priorities; and wherein at least one processor sequentially performs only one task at a time.
[0015] Варианты реализации настоящего изобретения также включают в себя физический носитель данных, на котором хранится программа, при исполнении которой процессор выполняет команды по определению приоритета множества задач от множества пользователей по меньшей мере для одного процессора, содержащие, применительно к необработанной задаче одного пользователя из множества пользователей: назначение числового приоритета пользователю; вычисление монотонной метрики M1 по совокупному процессорному времени, использованному предыдущими задачами пользователя по меньшей мере на одном процессоре за предшествующий период времени Т1; вычисление монотонной метрики М2 по временному интервалу между необработанной задачей и предшествующей задачей пользователя по меньшей мере на одном процессоре за предшествующий период времени Т2; вычисление монотонной метрики М3 по совокупному объему задач пользователя по меньшей мере на одном процессоре за предшествующий период времени Т3; уменьшение числового приоритета пользователя, монотонно зависящего от значений M1, М2 и М3; и назначение числового приоритета пользователя необработанной задаче; причем необработанные задачи с более высокими приоритетами выбираются для обработки по меньшей мере на одном процессоре раньше необработанных задач с более низкими приоритетами; и причем по меньшей мере один процессор выполняет последовательно только одну задачу в один момент времени.[0015] Embodiments of the present invention also include a physical storage medium on which a program is stored, during which the processor executes instructions to prioritize a plurality of tasks from a plurality of users for at least one processor, comprising, for an unprocessed task, one user from multiple users: assigning a numerical priority to a user; the calculation of the monotonous metric M1 for the total processor time used by the previous tasks of the user on at least one processor for the previous time period T1; the calculation of the monotonous metric M2 on the time interval between the unprocessed task and the previous user task on at least one processor for the previous time period T2; the calculation of the monotonic metric M3 for the total volume of user tasks on at least one processor for the previous time period T3; decrease in the numerical priority of the user, monotonously depending on the values of M1, M2 and M3; and assigning a user numerical priority to an unprocessed task; moreover, unprocessed tasks with higher priorities are selected for processing on at least one processor before unprocessed tasks with lower priorities; and wherein at least one processor sequentially performs only one task at a time.
[0016] Варианты реализации настоящего изобретения также могут включать в себя вычисление монотонной метрики М4 по совокупному объему задач, размещенных пользователем, по меньшей мере для одного процессора за более ранний период времени Т4; а также уменьшение числового приоритета пользователя, монотонно зависящего от значений M1, М2, М3 и М4.[0016] Embodiments of the present invention may also include calculating a monotonic metric M4 from the cumulative amount of tasks posted by a user for at least one processor in an earlier T4 time period; as well as reducing the numerical priority of the user, monotonously depending on the values of M1, M2, M3 and M4.
[0017] В вариантах реализации настоящего изобретения по меньшей мере один процессор может выполнять любую из множества задач, полностью не прерываясь на любую другую задачу из множества задач или не выполняя одновременную обработку любой другой задачи из множества задач.[0017] In embodiments of the present invention, at least one processor can perform any of a variety of tasks, without completely interrupting any other task from the many tasks, or without simultaneously processing any other task from the many tasks.
[0018| В вариантах реализации настоящего изобретения числовой приоритет пользователя может представлять собой целое число, выбранное из некоторого интервала.[0018 | In embodiments of the present invention, a user's numerical priority may be an integer selected from a certain interval.
[0019] В вариантах реализации настоящего изобретения задача из необработанных задач с равным приоритетом, поступившая на обработку раньше, может быть выбрана для обработки по меньшей мере на одном процессоре раньше других необработанных задач с равным приоритетом.[0019] In embodiments of the present invention, a task from unprocessed tasks with equal priority received earlier may be selected for processing on at least one processor before other unprocessed tasks with equal priority.
[0020] Указанные выше и другие особенности настоящего изобретения, включая различные новые детали конструкции и комбинации деталей, а также другие преимущества, более конкретно описаны со ссылкой на прилагаемые чертежи и отмечены в формуле изобретения. Будет очевидно, что конкретный способ и устройство, воплощающие настоящее изобретение, показаны в качестве иллюстрации и не ограничивают настоящее изобретение. Принципы и особенности настоящего изобретения можно использовать в различных и многочисленных вариантах реализации без отклонения от объема настоящего изобретения.[0020] The above and other features of the present invention, including various new structural parts and combinations of parts, as well as other advantages, are more specifically described with reference to the accompanying drawings and are noted in the claims. It will be apparent that the specific method and apparatus embodying the present invention is shown by way of illustration and does not limit the present invention. The principles and features of the present invention can be used in various and numerous embodiments without deviating from the scope of the present invention.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[0021] На прилагаемых чертежах одинаковые номера позиций относятся к одинаковым частям на разных чертежах. Чертежи не обязательно приведены в масштабе; вместо этого акцент делается на представлении принципов настоящего изобретения. Содержание чертежей представлено ниже.[0021] In the accompanying drawings, like reference numerals refer to like parts in different drawings. The drawings are not necessarily to scale; instead, emphasis is placed on introducing the principles of the present invention. The contents of the drawings are presented below.
[0022] На Фиг. 1 представлена блок-схема нескольких первых этапов одного конкретного варианта реализации настоящего изобретения. Элемент А показывает, как блок-схема, представленная на Фиг. 1, связана с блок-схемой, представленной на Фиг. 2.[0022] In FIG. 1 is a flow chart of several first steps of one particular embodiment of the present invention. Element A shows how the flowchart shown in FIG. 1 is associated with the block diagram of FIG. 2.
[0023] На Фиг. 2 представлена блок-схема нескольких этапов одного конкретного варианта реализации настоящего изобретения, следующих за этапами, показанными на Фиг. 1. Элемент В показывает, как блок-схема, представленная на Фиг. 2, связана с блок-схемой, представленной на Фиг. 3.[0023] In FIG. 2 is a flowchart of several steps of one particular embodiment of the present invention, following the steps shown in FIG. 1. Element B shows how the flowchart shown in FIG. 2 is associated with the block diagram of FIG. 3.
[0024| На Фиг. 3 представлена блок-схема нескольких заключительных этапов одного конкретного варианта реализации настоящего изобретения, следующих за этапами, показанными на Фиг. 2.[0024 | In FIG. 3 is a flowchart of several final steps of one particular embodiment of the present invention, following the steps shown in FIG. 2.
[0025] На Фиг. 4 представлено схематическое изображение системы, реализующей настоящее изобретение для нескольких пользователей и нескольких процессоров, с применением облачного сервера.[0025] In FIG. 4 is a schematic illustration of a system implementing the present invention for multiple users and multiple processors using a cloud server.
[0026] На Фиг. 5 представлено схематическое изображение системы, реализующей настоящее изобретение для нескольких пользователей и нескольких процессоров, с применением компьютерного сервера.[0026] In FIG. 5 is a schematic illustration of a system that implements the present invention for multiple users and multiple processors using a computer server.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION
[0027] Для каждого пользователя в системе хранятся пять переменных: «приоритет пользователя» (его не следует путать с приоритетом задачи), «число страниц за последний час», «число страниц за последнюю минуту», «конец последнего часа» и «конец последней минуты». Последние две переменные хранятся таким образом, чтобы системе не приходилось постоянно обновлять все данные при каждом размещении задачи пользователем.[0027] For each user, the system stores five variables: “user priority” (it should not be confused with the priority of the task), “number of pages in the last hour”, “number of pages in the last minute”, “end of the last hour” and “end last minute. " The last two variables are stored in such a way that the system does not have to constantly update all the data every time the user places a task.
[0028] Каждая новая задача характеризуется количеством страниц в задаче (или, в общем случае, размером или объемом задачи), пользователем, поместившим задачу в очередь, готовностью задачи к обработке и приоритетом задачи (который изначально не определен). Данные характеристики хранятся вместе с задачей в локальной памяти задачи в виде переменных вместе с другими переменными, необходимыми для реализации метода.[0028] Each new task is characterized by the number of pages in the task (or, in general, the size or volume of the task), the user who placed the task in the queue, the readiness of the task for processing, and the priority of the task (which is not initially defined). These characteristics are stored together with the task in the local memory of the task in the form of variables together with other variables necessary for the implementation of the method.
[0029] Цель описанного ниже метода состоит в назначении задаче приоритета. В данном варианте реализации приоритет представляет собой целое число в диапазоне от 0 до 255.[0029] The purpose of the method described below is to prioritize a task. In this embodiment, the priority is an integer in the range from 0 to 255.
[0030] Как показано на Фиг. 1, при размещении задачи на сервере переменной «готовность задачи к обработке» присваивается значение «ложь» (элемент 1 на блок-схеме). Затем читаются переменные, связанные с пользователем (элемент 2 на блок-схеме).[0030] As shown in FIG. 1, when placing the task on the server, the variable "task readiness for processing" is assigned the value "false" (element 1 in the flowchart). Then, the variables associated with the user are read (element 2 in the flowchart).
[0031] При загрузке в локальную память приоритету задачи присваивается нулевое значение. Значение переменной пользователя «конец последнего часа» копируется в локальную память в виде локальной переменной «конец последнего часа», и значение переменной пользователя «число страниц за последний час» копируется в локальную память в виде локальной переменной «число страниц за последний час» (элемент 3 на блок-схеме).[0031] When loading into local memory, the task priority is set to zero. The value of the user variable “end of the last hour” is copied to the local memory as the local variable “end of the last hour”, and the value of the user variable “number of pages in the last hour” is copied to the local memory in the form of the local variable “number of pages in the last hour” (
[0032] Если (элемент 4 на блок-схеме) локальная переменная «конец последнего часа» не определена (т.е. не имеет значения) или ее значение на 30 минут меньше текущего времени (в противном случае следующие этапы показаны на Фиг. 2), то[0032] If (
[0033] Система просматривает задачи, поставленные в очередь пользователем в течение часа до текущего времени, и присваивает локальной переменной «число страниц за последний час» значение, равное общему количеству страниц во всех данных задачах (суммарное число страниц в задачах, поставленных пользователем в очередь в течение последнего часа). Локальной переменной «конец последнего часа» присваивается значение, равное текущему времени (элемент 5 на блок-схеме).[0033] The system scans the tasks queued by the user for an hour before the current time, and assigns the local variable "number of pages in the last hour" to a value equal to the total number of pages in all these tasks (the total number of pages in the tasks queued by the user in the last hour). The local variable “end of the last hour” is assigned a value equal to the current time (
[0034] Система просматривает задачи, поставленные в очередь пользователем, и присваивает локальной переменной «число секунд последнего часа» значение, равное общему числу миллисекунд, затраченных на выполнение каждой задачи за последний час, разделенному на тысячу (элемент 6 на блок-схеме).[0034] The system scans the tasks queued by the user and sets the local variable "number of seconds in the last hour" to the total number of milliseconds spent on each task in the last hour, divided by a thousand (
[0035] Локальная переменная «число секунд последнего часа», полученная на предыдущем этапе, используется для вычисления приоритета задачи по нагрузке в соответствии со следующей закономерностью, аппроксимирующей логарифмическую функцию (элемент 7 на блок-схеме):[0035] The local variable “number of seconds of the last hour” obtained in the previous step is used to calculate the priority of the load task in accordance with the following regularity approximating the logarithmic function (
если локальная переменная «число секунд последнего часа» меньше 100, то «приоритет задачи по нагрузке» равен 0, в противном случае,if the local variable “the number of seconds of the last hour” is less than 100, then the “priority of the load task” is 0, otherwise,
если локальная переменная «число секунд последнего часа» меньше 300, то «приоритет задачи по нагрузке» равен 3, в противном случае,if the local variable “number of seconds of the last hour” is less than 300, then the “priority of the load task” is 3, otherwise,
если локальная переменная «число секунд последнего часа» меньше 700, то «приоритет задачи по нагрузке» равен 5, в противном случае,if the local variable “the number of seconds of the last hour” is less than 700, then the “priority of the load task” is 5, otherwise,
если локальная переменная «число секунд последнего часа» меньше 1500, то «приоритет задачи по нагрузке» равен 8, в противном случае,if the local variable “number of seconds of the last hour” is less than 1500, then the “priority of the load task” is 8, otherwise,
если локальная переменная «число секунд последнего часа» меньше 4000, то «приоритет задачи по нагрузке» равен 11,if the local variable “the number of seconds of the last hour” is less than 4000, then the “priority of the load task” is 11,
в противном случае «приоритет задачи по нагрузке» равен 15.otherwise, the “priority of the load task” is 15.
(0036| Этапы после получения значений переменной «приоритет задач по нагрузке» и локальной переменной «число страниц за последний час» показаны на Фиг. 2.(0036 | The stages after obtaining the values of the variable "priority of tasks on load" and the local variable "number of pages in the last hour" are shown in Fig. 2.
[0037] Значение «приоритет пользователя» копируется в переменную «старый приоритет задачи». Переменной «новый приоритет задачи» присваивается значение переменной «старый приоритет задачи». Переменная пользователя «конец последней минуты» копируется в локальную переменную «конец последней минуты», а переменная пользователя «число страниц за последнюю минуту» копируется в локальную переменную «число страниц за последнюю минуту» (элемент 8 на блок-схеме).[0037] The value "user priority" is copied to the variable "old task priority". The variable "new task priority" is assigned the value of the variable "old task priority". The user variable “end of last minute” is copied to the local variable “end of last minute”, and the user variable “number of pages in the last minute” is copied to the local variable “number of pages in the last minute” (
[0038] Если (элемент 9 на блок-схеме) локальная переменная «конец последней минуты» не определена (т.е. не имеет значения) или ее значение меньше текущего времени менее чем на минуту (в противном случае необходимо пропустить следующие три пункта), то:[0038] If (
[0039] если (элемент 10 на блок-схеме) локальная переменная «конец последней минуты» не является неопределенной (имеет значение), то переменной «целые минуты» присваивается значение текущего времени, округленное до целого числа минут, а переменной «сохраненные целые минуты» присваивается значение локальной переменной «конец последней минуты», округленное до целого числа минут (элемент 11 на блок-схеме). В противном случае необходимо пропустить следующий пункт.[0039] if (
[0040] Если (элемент 12 на блок-схеме) результат целочисленного деления переменной «сохраненные целые минуты» на 20 меньше результата целочисленного деления переменной «целые минуты» на 20 (т.е. данный этап выполняется не более одного раза за 20 минут), то переменной «новый приоритет задачи» присваивается значение переменной «старый приоритет задачи» минус единица, минус результат вычитания («целые минуты» минус «сохраненные целые минуты»), разделенный на 20 (элемент 13 на блок-схеме).[0040] If (
[0041] Локальной переменной «конец последней минуты» присваивается значение текущего времени. Локальной переменной «число страниц за последнюю минуту» присваивается нулевое значение (элемент 14 на блок-схеме).[0041] The local variable "end of the last minute" is assigned the value of the current time. The local variable “last page count” is set to zero (
[0042| Локальная переменная «число страниц за последнюю минуту» увеличивается на число страниц в новой задаче (элемент 15 на блок-схеме).[0042 | The local variable “number of pages in the last minute” increases by the number of pages in the new task (
[0043] Этапы после получения значения локальной переменной «число страниц за последнюю минуту» показаны на Фиг. 3.[0043] The steps after obtaining the value of the local number of pages per last minute variable are shown in FIG. 3.
[0044] Если значение переменной «число страниц за последний час» меньше 5, то переменной «часовой приоритет задачи» присваивается значение 0, а переменной «лимит страниц за минуту» присваивается значение 3, в противном случае,[0044] If the value of the variable “number of pages in the last hour” is less than 5, then the variable “hourly priority of the task” is set to 0, and the variable “page limit per minute” is set to 3, otherwise,
если значение переменной «число страниц за последний час» меньше 10, то переменной «часовой приоритет задачи» присваивается значение 1, а переменной «лимит страниц за минуту» присваивается значение 3, в противном случае,if the value of the variable "number of pages in the last hour" is less than 10, then the variable "hourly priority of the task" is set to 1, and the variable "page limit per minute" is set to 3, otherwise,
если значение переменной «число страниц за последний час» меньше 50, то переменной «часовой приоритет задачи» присваивается значение 2, а переменной «лимит страниц за минуту» присваивается значение 5, в противном случае,if the value of the variable "number of pages in the last hour" is less than 50, then the variable "hourly priority of the task" is set to 2, and the variable "page limit per minute" is set to 5, otherwise,
если значение переменной «число страниц за последний час» меньше 100, то переменной «часовой приоритет задачи» присваивается значение 3, а переменной «лимит страниц за минуту» присваивается значение 10, в противном случае,if the value of the variable "number of pages in the last hour" is less than 100, then the variable "hourly priority of the task" is set to 3, and the variable "page limit per minute" is set to 10, otherwise,
если значение переменной «число страниц за последний час» меньше 250, то переменной «часовой приоритет задачи» присваивается значение 4, а переменной «лимит страниц за минуту» присваивается значение 15, в противном случае,if the value of the variable "number of pages in the last hour" is less than 250, then the variable "hourly priority of the task" is set to 4, and the variable "page limit per minute" is set to 15, otherwise,
если значение переменной «число страниц за последний час» меньше 512, то переменной «часовой приоритет задачи» присваивается значение 5, а переменной «лимит страниц за минуту» присваивается значение 22, в противном случае,if the value of the variable "number of pages in the last hour" is less than 512, then the variable "hourly priority of the task" is set to 5, and the variable "page limit per minute" is set to 22, otherwise,
если значение переменной «число страниц за последний час» меньше 1024, то переменной «часовой приоритет задачи» присваивается значение 6, а переменной «лимит страниц за минуту» присваивается значение 32,if the value of the variable "number of pages in the last hour" is less than 1024, then the variable "hourly priority of the task" is set to 6, and the variable "page limit per minute" is set to 32,
в противном случае переменной «часовой приоритет задачи» присваивается значение, равное целой части натурального логарифма от значения локальной переменной «число страниц за последний час» минус 2, а переменной «лимит страниц за минуту» присваивается значение, равное целой части квадратного корня от значения локальной переменной «число страниц за последний час» (элемент 16 на блок-схеме).otherwise, the variable “hourly priority of the task” is assigned a value equal to the integer part of the natural logarithm of the value of the local variable “number of pages in the last hour” minus 2, and the variable “page limit per minute” is assigned a value equal to the integer part of the square root of the local value the variable "number of pages in the last hour" (
[0045] Переменной «минутный приоритет задачи» присваивается нулевое значение (элемент 17 на блок-схеме).[0045] The variable "minute task priority" is assigned a value of zero (
[0046] Если (элемент 18 на блок-схеме) локальная переменная «число страниц за последнюю минуту» больше значения переменной «лимит страниц за минуту», то:[0046] If (
если локальная переменная «число страниц за последнюю минуту» меньше 4, то переменной «минутный приоритет задачи» присваивается значение 0, в противном случае,if the local variable "number of pages in the last minute" is less than 4, then the variable "minute priority of the task" is set to 0, otherwise,
если локальная переменная «число страниц за последнюю минуту» меньше 16, то переменной «минутный приоритет задачи» присваивается значение 5, в противном случае,if the local variable "the number of pages in the last minute" is less than 16, then the variable "minute priority of the task" is assigned the
если локальная переменная «число страниц за последнюю минуту» меньше 23, то переменной «минутный приоритет задачи» присваивается значение 7, в противном случае,if the local variable "the number of pages in the last minute" is less than 23, then the variable "minute priority of the task" is set to 7, otherwise,
если локальная переменная «число страниц за последнюю минуту» меньше 91, то переменной «минутный приоритет задачи» присваивается значение 10, в противном случае,if the local variable "number of pages in the last minute" is less than 91, then the variable "minute priority of the task" is set to 10, otherwise,
если локальная переменная «число страниц за последнюю минуту» меньше 180, то переменной «минутный приоритет задачи» присваивается значение 12,if the local variable “number of pages in the last minute” is less than 180, then the variable “minute priority of the task” is set to 12,
в противном случае переменной «минутный приоритет задачи» присваивается значение, равное целой части натурального логарифма от значения (локальная переменная «число страниц за последнюю минуту», умноженная на 60) минус 2 (элемент 19 на блок-схеме).otherwise, the variable "minute priority of the task" is assigned a value equal to the integer part of the natural logarithm of the value (local variable "number of pages in the last minute", multiplied by 60) minus 2 (
[0047] Переменной «новый приоритет задачи по числу страниц» присваивается большее из значений «часовой приоритет задачи» и «минутный приоритет задачи» (элемент 20 на блок-схеме).[0047] The variable "new task priority by the number of pages" is assigned the larger of the values "hourly priority of the task" and "minute priority of the task" (
[0048] Переменной «новый приоритет задачи» присваивается меньшее из значений «новый приоритет задачи по числу страниц» и «новый приоритет задачи». Если значение переменной «новый приоритет задачи» больше 255, переменной «новый приоритет задачи» присваивается значение 255; если значение переменной «новый приоритет задачи» меньше нуля, переменной «новый приоритет задачи» присваивается нулевое значение (элемент 21 на блок-схеме).[0048] The variable "new task priority" is assigned the smaller of the values "new task priority by the number of pages" and "new task priority". If the value of the variable "new task priority" is greater than 255, the variable "new task priority" is assigned the value 255; if the value of the variable "new task priority" is less than zero, the variable "new task priority" is assigned a zero value (
[0049] Переменной «новый приоритет задачи» присваивается меньшее из значений «новый приоритет задачи по нагрузке» и «новый приоритет задачи» (элемент 21 на блок-схеме).[0049] The variable "new task priority" is assigned the smaller of the values "new task priority on load" and "new task priority" (
[0050] Переменной пользователя «конец последнего часа» присваивается значение локальной переменной «конец последнего часа». Переменной пользователя «конец последней минуты» присваивается значение локальной переменной «конец последней минуты». Переменной пользователя «число страниц за последний час» присваивается значение локальной переменной «число страниц за последний час». Переменной пользователя «число страниц за последнюю минуту» присваивается значение локальной переменной «число страниц за последнюю минуту». Переменной «приоритет пользователя» присваивается значение переменной «новый приоритет задачи» (элемент 22 на блок-схеме).[0050] The user variable “end of last hour” is assigned the value of the local variable “end of last hour”. The user variable “end of last minute” is assigned the value of the local variable “end of last minute”. The user variable “number of pages in the last hour” is assigned the value of the local variable “number of pages in the last hour”. The user variable “number of pages in the last minute” is assigned the value of the local variable “number of pages in the last minute”. The variable "user priority" is assigned the value of the variable "new task priority" (
[0051] Переменной «приоритет новой задачи» присваивается значение переменной «новый приоритет задачи»; переменной «готовность задачи к обработке» присваивается значение «истина» (элемент 23 на блок-схеме).[0051] The variable "priority of the new task" is assigned the value of the variable "new priority of the task"; the variable “task readiness for processing” is assigned the value “true” (
[0052] Теперь новая задача на сервере готова к обработке процессором в соответствии с новым приоритетом задачи, рассчитанным по описанной выше методике.[0052] Now the new task on the server is ready for processing by the processor in accordance with the new priority of the task, calculated by the method described above.
[0053] На Фиг. 4 представлена система, реализующая способ определения приоритета задач для нескольких пользователей и нескольких процессоров с применением облачного сервера, содержащий, применительно к необработанной задаче, размещенной пользователем, назначение числового приоритета пользователю; вычисление монотонной метрики M1 по совокупному процессорному времени, использованному предыдущими задачами пользователя по меньшей мере на одном процессоре за предшествующий период времени Т1; вычисление монотонной метрики М2 по временному интервалу между необработанной задачей и предшествующей задачей пользователя по меньшей мере на одном процессоре за предшествующий период времени Т2; вычисление монотонной метрики М3 по совокупному объему задач пользователя по меньшей мере на одном процессоре за предшествующий период времени Т3; уменьшение числового приоритета пользователя, монотонного зависящего от значений M1, M2 и М3; и назначение числового приоритета пользователя необработанной задаче; причем необработанные задачи с более высокими приоритетами выбираются для обработки по меньшей мере на одном процессоре раньше необработанных задач с более низкими приоритетами; и причем по меньшей мере один процессор последовательно выполняет только одну задачу в один момент времени. Пользователи 1001, 1002 и 1003 размещают задачи (например, задачи по оптическому распознаванию символов) на облачном сервере 1011, где каждой задаче назначается приоритет в соответствии со способом, воплощающим настоящее изобретение. Задачи читаются облачным сервером и обрабатываются (например, путем оптического распознавания символов) процессорами 1021, 1022 и 1023. Пользователи и процессоры соединяются с облачным сервером через Интернет, другую сеть, через беспроводное соединение или напрямую.[0053] In FIG. 4 shows a system that implements a method for determining the priority of tasks for multiple users and multiple processors using a cloud server, comprising, in relation to an unprocessed task posted by a user, assigning a numerical priority to a user; the calculation of the monotonous metric M1 for the total processor time used by the previous tasks of the user on at least one processor for the previous time period T1; the calculation of the monotonous metric M2 on the time interval between the unprocessed task and the previous user task on at least one processor for the previous time period T2; the calculation of the monotonic metric M3 for the total volume of user tasks on at least one processor for the previous time period T3; reducing the numerical priority of the user, monotonously depending on the values of M1, M2 and M3; and assigning a user numerical priority to an unprocessed task; moreover, unprocessed tasks with higher priorities are selected for processing on at least one processor before unprocessed tasks with lower priorities; and wherein at least one processor sequentially performs only one task at a time.
[0054] На Фиг. 5 представлена система, реализующая способ определения приоритета задач для нескольких пользователей и нескольких процессоров с применением компьютерного сервера, содержащий, применительно к необработанной задаче, размещенной пользователем, назначение числового приоритета пользователю; вычисление монотонной метрики M1 по совокупному процессорному времени, использованному предыдущими задачами пользователя по меньшей мере на одном процессоре за предшествующий период времени Т1; вычисление монотонной метрики M2 по временному интервалу между необработанной задачей и предшествующей задачей пользователя по меньшей мере на одном процессоре за предшествующий период времени Т2; вычисление монотонной метрики М3 по совокупному объему задач пользователя по меньшей мере на одном процессоре за предшествующий период времени Т3; уменьшение числового приоритета пользователя, монотонно зависящего от значений M1, M2 и М3; и назначение числового приоритета пользователя необработанной задаче; причем необработанные задачи с более высокими приоритетами выбираются для обработки по меньшей мере на одном процессоре раньше необработанных задач с более низкими приоритетами; и причем по меньшей мере один процессор последовательно выполняет только одну задачу в один момент времени. Пользователи 2001 и 2002 размещают задачи (например, задачи по оптическому распознаванию символов) на компьютерном сервере 2011, где каждой задаче назначается приоритет в соответствии со способом, воплощающим настоящее изобретение. Задачи читаются компьютерным сервером и обрабатываются (например, путем оптического распознавания символов) процессорами 2021 и 2022. Пользователи и процессоры соединяются с компьютерным сервером через Интернет, другую сеть, через беспроводное соединение или напрямую.[0054] FIG. 5 shows a system that implements a method for determining the priority of tasks for multiple users and multiple processors using a computer server, comprising, in relation to an unprocessed task posted by a user, assigning a numerical priority to a user; the calculation of the monotonous metric M1 for the total processor time used by the previous tasks of the user on at least one processor for the previous time period T1; the calculation of the monotonic metric M2 for the time interval between the unprocessed task and the previous user task on at least one processor for the previous time period T2; the calculation of the monotonic metric M3 for the total volume of user tasks on at least one processor for the previous time period T3; decrease in the numerical priority of the user, monotonously depending on the values of M1, M2 and M3; and assigning a user numerical priority to an unprocessed task; moreover, unprocessed tasks with higher priorities are selected for processing on at least one processor before unprocessed tasks with lower priorities; and wherein at least one processor sequentially performs only one task at a time.
[0055] Хотя настоящее изобретение конкретно показано и описано со ссылкой на предпочтительные варианты его реализации, специалистам в данной области будет понятно, что возможно внесение различных изменений в форму и детали без отклонения от объема настоящего изобретения, обозначенного в прилагаемой формуле изобретения.[0055] Although the present invention is specifically shown and described with reference to preferred embodiments thereof, those skilled in the art will understand that various changes to the form and details are possible without departing from the scope of the present invention as indicated in the attached claims.
Claims (46)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2014125149A RU2638635C2 (en) | 2014-06-20 | 2014-06-20 | Method of determining priority of tasks queued in server system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2014125149A RU2638635C2 (en) | 2014-06-20 | 2014-06-20 | Method of determining priority of tasks queued in server system |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2014125149A RU2014125149A (en) | 2015-12-27 |
RU2638635C2 true RU2638635C2 (en) | 2017-12-14 |
Family
ID=55023288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2014125149A RU2638635C2 (en) | 2014-06-20 | 2014-06-20 | Method of determining priority of tasks queued in server system |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2638635C2 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465354A (en) * | 1992-03-19 | 1995-11-07 | Hitachi, Ltd. | Method and apparatus for job execution prediction and control and method for job execution situation display |
RU2121709C1 (en) * | 1996-02-13 | 1998-11-10 | Военная академия связи | Method for control of users requests processing in computer system |
US20080127193A1 (en) * | 2006-09-29 | 2008-05-29 | Fujitsu Limited | Scheduling method for executing jobs, scheduling apparatus for executing jobs, rewritable recording medium on which scheduling program for executing jobs is recorded |
US7743378B1 (en) * | 2005-05-13 | 2010-06-22 | Oracle America, Inc. | Method and apparatus for multi-dimensional priority determination for job scheduling |
US20130227557A1 (en) * | 2012-02-29 | 2013-08-29 | Jiri Pechanec | Systems and methods for providing priority build execution in a continuous integration system |
-
2014
- 2014-06-20 RU RU2014125149A patent/RU2638635C2/en active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465354A (en) * | 1992-03-19 | 1995-11-07 | Hitachi, Ltd. | Method and apparatus for job execution prediction and control and method for job execution situation display |
RU2121709C1 (en) * | 1996-02-13 | 1998-11-10 | Военная академия связи | Method for control of users requests processing in computer system |
US7743378B1 (en) * | 2005-05-13 | 2010-06-22 | Oracle America, Inc. | Method and apparatus for multi-dimensional priority determination for job scheduling |
US20080127193A1 (en) * | 2006-09-29 | 2008-05-29 | Fujitsu Limited | Scheduling method for executing jobs, scheduling apparatus for executing jobs, rewritable recording medium on which scheduling program for executing jobs is recorded |
US20130227557A1 (en) * | 2012-02-29 | 2013-08-29 | Jiri Pechanec | Systems and methods for providing priority build execution in a continuous integration system |
Also Published As
Publication number | Publication date |
---|---|
RU2014125149A (en) | 2015-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885571B (en) | Input of batch processing machine learning model | |
KR102076257B1 (en) | Calculation Graphs Processing | |
US9990229B2 (en) | Scheduling method and apparatus for applying laxity correction based on task completion proportion and preset time | |
CN106502791B (en) | A kind of method for allocating tasks and device | |
US8756209B2 (en) | Computing resource allocation based on query response analysis in a networked computing environment | |
CN110781145B (en) | File system task scheduling method, device, equipment and readable storage medium | |
US20150363229A1 (en) | Resolving task dependencies in task queues for improved resource management | |
US9965329B2 (en) | Method and apparatus for workload placement on heterogeneous systems | |
EP3832462A1 (en) | Dynamic orchestration in a multi-container architecture | |
US9886320B2 (en) | Method for prioritizing tasks queued at a server system | |
CN113535367A (en) | Task scheduling method and related device | |
CN108205469B (en) | MapReduce-based resource allocation method and server | |
US11210127B2 (en) | Method and apparatus for processing request | |
CN112506581A (en) | Method and device for rendering small program, electronic equipment and readable storage medium | |
CN111124644B (en) | Method, device and system for determining task scheduling resources | |
CN114968567A (en) | Method, apparatus and medium for allocating computing resources of a compute node | |
CN116594753A (en) | Task scheduling method, device, electronic equipment, storage medium and program product | |
CN111124708A (en) | Microservice-oriented batch inference method, server and computer-readable storage medium | |
CN109189581B (en) | Job scheduling method and device | |
CN115525400A (en) | Method, apparatus and program product for managing multiple computing tasks on a batch basis | |
US9501321B1 (en) | Weighted service requests throttling | |
CN110784478B (en) | Method, device, equipment and computer readable storage medium for adjusting timeout duration | |
RU2638635C2 (en) | Method of determining priority of tasks queued in server system | |
CN109739649B (en) | Resource management method, device, equipment and computer readable storage medium | |
CN111858542B (en) | Data processing method, device, equipment and computer readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
HE9A | Changing address for correspondence with an applicant | ||
PC43 | Official registration of the transfer of the exclusive right without contract for inventions |
Effective date: 20181121 |
|
QB4A | Licence on use of patent |
Free format text: LICENCE FORMERLY AGREED ON 20201211 Effective date: 20201211 |
|
QC41 | Official registration of the termination of the licence agreement or other agreements on the disposal of an exclusive right |
Free format text: LICENCE FORMERLY AGREED ON 20201211 Effective date: 20220311 |