RU2647657C2 - Назначение и планирование потоков для нескольких очередей с учетом приоритета - Google Patents

Назначение и планирование потоков для нескольких очередей с учетом приоритета Download PDF

Info

Publication number
RU2647657C2
RU2647657C2 RU2015153212A RU2015153212A RU2647657C2 RU 2647657 C2 RU2647657 C2 RU 2647657C2 RU 2015153212 A RU2015153212 A RU 2015153212A RU 2015153212 A RU2015153212 A RU 2015153212A RU 2647657 C2 RU2647657 C2 RU 2647657C2
Authority
RU
Russia
Prior art keywords
priority
workflow
queue
computer
operating system
Prior art date
Application number
RU2015153212A
Other languages
English (en)
Other versions
RU2015153212A (ru
Inventor
Педро ТЕЙКШЕЙРА
Арун КИШАН
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2015153212A publication Critical patent/RU2015153212A/ru
Application granted granted Critical
Publication of RU2647657C2 publication Critical patent/RU2647657C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • General Factory Administration (AREA)
  • Telephonic Communication Services (AREA)
  • Time Recorders, Dirve Recorders, Access Control (AREA)

Abstract

Изобретение относится к средствам администрирования потоков операционной системы. Технический результат заключается в расширении арсенала технических средств планирования потоков, исполняющихся в компьютерной системе. Компьютер планирования потоков для множественных очередей с учетом приоритета, содержащий: память, процессорное устройство; операционную систему, выполненную с возможностью: выделять пул рабочих потоков для приложения, каждый рабочий поток обслуживает запросы из данного приложения на доступ к ресурсам операционной системы, связывать множество очередей с пулом рабочих потоков, каждая очередь обладает приоритетом, причем операционная система дополнительно содержит контроллер параллелизма, назначающий элементы из упомянутого множества очередей рабочим потокам. 3 н. и 23 з.п. ф-лы, 7 ил.

Description

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0001] В современных вычислительных системах обычное дело, когда есть операционная система, которая обеспечивает возможность исполнения компьютерных программ в качестве нескольких потоков, которые совместно используют доступ к вычислительным ресурсам, администрирование которыми осуществляется посредством операционной системы. Сама по себе операционная система также может иметь несколько потоков, доступных для обслуживания запросов от приложений в отношении ресурсов операционной системы, именуемых в данном документе рабочими потоками.
[0002] Существует несколько способов осуществления администрирования сложности в отношении нескольких приложений, конкурирующих за ресурсы. Как правило, предусматривается очередь, чтобы осуществлять администрирование запросов от приложений, чтобы использовать рабочие потоки, как, например, запрос использования потока, чтобы осуществлять доступ к ресурсу. Если все запросы интерпретируются одинаково, тогда первым рабочему потоку назначается первый-по-прибытию запрос. В некоторых случаях некоторые запросы имеют более высокий приоритет, чем другие. В таком случае отдельные очереди запросов используются для каждого уровня приоритета, и каждый уровень приоритета имеет свой собственный пул рабочих потоков. Планировщик назначает потоки запросам в очередях на основании времени прибытия и осуществляет администрирование совместного доступа к ресурсам посредством нескольких потоков, делая потоки активными и блокируя или разрешая потоки на основании приоритета.
[0003] При такой системе каждый рабочий поток имеет фиксированный приоритет и не может менять приоритет во время исполнения; в противном случае существует риск инверсий приоритетов. Также, при наличии пула рабочих потоков для каждого уровня приоритета, количество уровней приоритета ограничивается ресурсами системы. В заключении, в такой системе могут возникать взаимоблокировки зависимости.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Это краткое изложение сущности изобретения представляет в упрощенной форме подборку концепций, которые дополнительно описываются ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначено ни для идентификации ключевых или неотъемлемых признаков заявленного изобретения, ни для ограничения объема заявленного изобретения.
[0005] Операционная система предоставляет пул рабочих потоков, обслуживающих несколько очередей из запросов с разными уровнями приоритета. Контроллер параллелизма ограничивает количество параллельно исполняющих, т.е. активных, рабочих потоков. Операционная система отслеживает количество параллельно исполняющих потоков касательно каждого уровня приоритета и прерывает обслуживание операций рабочих потоков с более низким приоритетом в пользу рабочих потоков с более высоким приоритетом. Система может иметь несколько пулов рабочих потоков, при этом каждый пул имеет свои собственные очереди по приоритету и контроллер параллелизма.
[0006] Контроллер параллелизма содержит в себе планировщик. Следовательно, поток также может менять свой приоритет в середине операции посредством непосредственного информирования планировщика. Если поток становится с более низким приоритетом и в настоящий момент активен, тогда предпринимаются шаги, чтобы гарантировать то, что не возникнет инверсии приоритетов. В частности, планировщик может прервать обслуживание активного рабочего потока теперь с более низким приоритетом в пользу рабочего потока с более высоким приоритетом.
[0007] В нижеследующем описании делается ссылка на сопроводительные чертежи, которые формируют его часть и на которых показаны, в качестве иллюстрации, особые примерные реализации данной методики. Следует понимать, что другие варианты осуществления могут быть использованы и структурные изменения могут быть выполнены, не отступая от объема варианта осуществления.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Фиг. 1 является структурной схемой примерного компьютера, с помощью которого могут быть реализованы компоненты такой системы.
[0009] Фиг. 2 является схемой, иллюстрирующей примерную реализацию нескольких очередей разных приоритетов для пула рабочих потоков, администрирование которых осуществляется посредством операционной системы для компьютерной системы.
[0010] Фиг. 3 является блок-схемой примерной реализации добавления элемента в очередь.
[0011] Фиг. 4 является блок-схемой примерной реализации выбора элемента после того, как рабочий поток завершается.
[0012] Фиг. 5 является блок-схемой примерной реализации изменения приоритета потока.
[0013] Фиг. 6 является блок-схемой примерной реализации назначения рабочего потока выбранному элементу из очереди.
[0014] Фиг. 7 является схемой иллюстративного примера управления параллелизмом в действии.
ПОДРОБНОЕ ОПИСАНИЕ
[0015] Нижеследующий раздел описывает примерную компьютерную систему, на которой может быть реализована операционная система, которая назначает и планирует рабочие потоки применительно к элементам из нескольких очередей с учетом приоритета.
[0016] Нижеследующее описание предназначено, чтобы предоставить краткое общее описание пригодного компьютера, с помощью которого может быть реализована такая система. Компьютер может быть любым из многообразия общего назначения или специализированных конфигураций вычислительного аппаратного обеспечения. Примеры общеизвестных компьютеров, которые могут быть пригодны, включают в себя, но не ограничиваются, персональные компьютеры, серверные компьютеры, переносные устройства или устройства класса «лэптоп» (например, мультимедийные проигрыватели, компьютеры класса «ноутбук», планшетные компьютеры, сотовые телефоны, помощники по персональным данным, диктофоны), многопроцессорные системы, основанные на микропроцессоре системы, телевизионные абонентские приставки, игровые консоли, программируемую потребительскую электронику, сетевые PC, мини-компьютеры, компьютеры класса мэйнфрейм, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и подобное.
[0017] Фиг. 1 иллюстрирует пример пригодного компьютера. Это лишь один пример пригодного компьютера и не предполагается, что он накладывает какие-либо ограничения на объем использования и функциональность такого компьютера.
[0018] Со ссылкой на Фиг. 1, примерный компьютер 100, в базовой конфигурации, включает в себя, по меньшей мере, один блок 102 обработки и память 104. Компьютер может включать в себя несколько блоков обработки и/или дополнительные блоки совместной обработки, такие как блок 120 обработки графики. В зависимости от точной конфигурации и типа компьютера, память 104 может быть энергозависимой (такой, как RAM), энергонезависимой (такой, как ROM, флэш-память и т.д.) или некоторым сочетанием двух видов. Данная конфигурация иллюстрируется на Фиг. 1 посредством штриховой линии 106.
[0019] Дополнительно, компьютер 100 также может обладать дополнительными признаками/функциональностью. Например, компьютер 100 также может включать в себя дополнительное хранилище (съемное и/или несъемное), включая, но не ограничиваясь, магнитные или оптические диски или ленту. Такое дополнительное хранилище иллюстрируется на Фиг. 1 посредством съемного хранилища 108 и несъемного хранилища 110. Компьютерные запоминающие носители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные любым способом или по любой технологии для хранения информации, такой как инструкции компьютерной программы, структуры данных, программные модули и прочие данные. Память 104, съемное хранилище 108 и несъемное хранилище 110 - все являются примерами компьютерных запоминающих носителей информации. Компьютерный запоминающий носитель информации включает в себя, но не ограничивается, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, хранилище на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель информации, который может быть использован, чтобы хранить требуемую информацию, и доступ к которому может быть получен посредством компьютера 100. Любые такие компьютерные запоминающие носители информации могут быть частью компьютера 100.
[0020] Компьютер 100 также может содержать соединение(я) 112 связи, которое предоставляет возможность устройству осуществлять связь с другими устройствами через средство связи. Средства связи, как правило, несут инструкции компьютерной программы, структуры данных, программные модули или прочие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые средства доставки информации. Понятие «модулированный сигнал данных» означает сигнал, одна или более характеристики которого установлены или изменены таким образом, чтобы кодировать информацию в сигнале, тем самым меняя конфигурацию или состояние принимающего сигнал устройства. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводную сеть или непосредственное соединение, и беспроводные средства, такие как акустические, RF, инфракрасные и прочие беспроводные средства. Соединения 112 связи являются устройствами, которые обеспечивают интерфейс со средствами связи, чтобы передавать данные по и принимать данные из средств связи, таких как сетевой интерфейс.
[0021] Компьютер 100 может обладать различными устройством(ами) 114 ввода, такими как клавиатура, манипулятор типа мышь, перо, камера, устройство сенсорного ввода и т.п. Также может быть включено устройство(а) 116 вывода, такое как дисплей, громкоговорители, принтер и т.п. Все из этих устройств хорошо известны в области техники и в данном документе не требуется их детального рассмотрения. Различные устройства ввода и вывода могут реализовывать естественный интерфейс пользователя (NUI), который является любой технологией интерфейса, которая позволяет пользователю взаимодействовать с устройством «естественным» образом, свободно от искусственных ограничений, накладываемых устройствами ввода, такими как манипуляторы типа мышь, клавиатуры, пульты дистанционного управления и подобные.
[0022] Примеры способов NUI включают в себя те, что основаны на распознавании речи, распознавании касания и стилуса, распознавании жеста как по экрану, так и рядом с экраном, жестов по воздуху, отслеживании головы или глаз, голосе и речи, зрении, касании, жестах и машинном интеллекте, и могут включать в себя использование сенсорных дисплеев, распознавание голоса и речи, понимание намерения и цели, обнаружение жеста движением, используя камеры глубины (такие, как системы стереоскопических камер, системы инфракрасных камер, и другие системы камер и сочетания их), обнаружение жеста движением, используя акселерометры и гироскопы, распознавания лица, трехмерные дисплеи, отслеживание головы, глаза и взгляда, систем дополненной реальности с эффектом присутствия и виртуальной реальности, все то, что обеспечивает более естественный интерфейс, как впрочем и технологии для регистрации мозговой активности, используя электроды регистрации электрического поля (EEG и родственные способы).
[0023] Каждый компонент данной системы, которая работает на компьютере, как правило, реализован посредством программного обеспечения, такого как одна или более компьютерные программы, которые включают в себя исполняемые компьютером инструкции и/или интерпретируемые компьютером инструкции, как, например, программные модули, обрабатываемые посредством компьютера. В целом, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных, и т.п., которые при обработке посредством блока обработки предписывают блоку обработки выполнять конкретные задачи или реализовывать конкретные абстрактные типы данных. Данная компьютерная система может быть воплощена на практике в распределенных вычислительных средах, где задачи выполняются посредством удаленных устройств обработки, которые связаны посредством сети связи. В распределенной вычислительной среде программные модули могут быть расположены как на локальных, так и удаленных компьютерных запоминающих носителях информации, включая запоминающие устройства памяти.
[0024] В качестве альтернативы, или в дополнение, функциональность, описываемая в данном документе, может быть выполнена, по меньшей мере частично, посредством одного или более компонентов аппаратной логики. Например, и без ограничения, иллюстративные типы компонентов аппаратной логики, которые могут быть использованы, включают в себя программируемые вентильные матрицы (FPGA), специализированные интегральные микросхемы (ASIC), специализированные стандартные изделия (ASSP), системы вида Система-на-Кристалле (SoC), комплексные программируемые логические устройства (CPLD) и т.д.
[0025] Описав теперь компьютер, операционная система является компьютерной программой, исполняемой на компьютере, которая осуществляет администрирование доступа к ресурсам компьютера другими приложениями. Одним способом, посредством которого операционная система предоставляет доступ к таким ресурсам, является посредством пула 200 рабочих потоков 202, такого как показанный на Фиг. 2. Рабочие потоки 202 представляют собой экземпляры компьютерной программы, которая может быть вызвана, чтобы осуществить доступ к ресурсам операционной системы. Такие ресурсы могут включать в себя, но не ограничиваются, устройства ввода, устройства вывода, запоминающие устройства, процессорное время и подобное.
[0026] Приложение использует интерфейс прикладного программирования операционной системы, чтобы выполнять различные задачи, которые относятся к такому пулу, такие как, но не ограничиваясь, чтобы запросить такой пул, чтобы указать элементы работы, которые будут обработаны пулом, и чтобы изменить приоритет рабочих элементов, обрабатываемых пулом.
[0027] В одном варианте осуществления, администрирование пулом доступных рабочих потоков осуществляется, используя очередь «последним пришел - первым обслужен» (LIFO), или стек. Посредством использования такой реализации потокам, которые ждали меньше всего времени, первым назначается работа, чтобы оптимизировать вероятность результативного обращения в кэш в отношении структур данных, которые относятся к потоку.
[0028] Чтобы осуществлять администрирование использования такого пула рабочих потоков, пул обладает ассоциированным набором очередей 206 из элементов. Каждый элемент в очереди представляет собой запрос от приложения в отношении работы, которая будет выполнена посредством рабочих потоков. Каждая очередь обладает ассоциированным уровнем приоритета, при этом каждый уровень приоритета обладает ассоциированной очередью. Разные очереди обладают разными уровнями приоритета. В одном примере реализации для каждой очереди 206, или для каждого уровня приоритета, система ведет счет 208 потоков, указывающий количество рабочих потоков, назначенных элементам с тем же самым уровнем приоритета, что и у очереди. Очередь может быть реализована различными способами, но чтобы предписывать обработку первыми запросов с более ранними временами прибытия, каждая очередь реализуется в качестве формы очереди «первым пришел – первым обслужен» (FIFO).
[0029] Как более подробно описывается ниже, контроллер 220 параллелизма для пула назначает элементы в очереди рабочим потокам, при этом ограничивая количество параллельно активных рабочих потоков. Чтобы выполнять данную функцию, контроллер параллелизма ведет лимит 222 количества рабочих потоков, которые могут быть параллельно активны, т.е. осуществляющими доступ к ресурсу операционной системы. Контроллер параллелизма гарантирует то, что количество активных рабочих потоков не превышает лимит параллелизма. В качестве примера, операционная система может устанавливать лимит параллелизма на основании количества процессоров, так что количество работающих потоков чрезмерно не абонирует центральный блок обработки. Данный пример реализует «пакетный» режим обработки, при котором рабочие потоки работают до завершения, вместо того, чтобы мультиплексироваться по времени с другими потоками в системе.
[0030] Каждый рабочий поток включает в себя данные, указывающие его приоритет 210 в момент, когда он был назначен элементу, любой измененный приоритет 212 в случае, когда приоритет потока может быть изменен, и флаг 214 параллелизма, указывающий на то, заносится ли данный поток в счет лимита параллелизма, который будет использоваться, если приоритеты потоков могут быть изменены. Любой заблокированный поток не заносится в счет параллелизма для его уровня приоритета. Поток с прерванным обслуживанием остается занесенным в счет потоков или счет параллелизма для его уровня приоритета.
[0031] При наличии описанных выше структур контроллер параллелизма может осуществлять администрирование назначения каждого нового запроса рабочему потоку, при этом ведя лимит параллелизма. Контроллер параллелизма также интегрирует планировщик, который осуществляет администрирование параллельного доступа активными рабочими потоками к ресурсам системы. Используя дополнительные данные для каждого потока, указывающие измененный приоритет 212 и флаг 214 параллелизма, контроллер параллелизма может осуществлять администрирование планирования активных рабочих потоков по мере изменения приоритетов потоков.
[0032] Примерная реализация контроллера параллелизма, который осуществляет администрирование добавления новых запросов в очередь, изменения приоритетов элементов и потоков и назначения рабочих потоков элементов в очередях с учетом приоритета, теперь будет описан в связи с Фиг. 3-6.
[0033] На Фиг. 3 примерная реализация контроллера параллелизма теперь будет описана в связи с операцией добавления элемента в очередь с учетом приоритета применительно к пулу рабочих потоков. Данное описание предполагает, что пул рабочих потоков уже был создан и информация о пуле была предоставлена приложению, так что приложение может осуществлять доступ к пулу, используя интерфейс прикладного программирования. После того как приложение имеет доступ к пулу, одна из команд, которую она может запросить, заключается в подаче запроса, чтобы рабочий поток в пуле, выполнял некоторую указанную работу с указанным уровнем приоритета. Указание уровня приоритета может подразумеваться из контекста, например уровня приоритета приложения или природы запроса ресурса, или может быть указан посредством приложения.
[0034] После того как приложение подает такой запрос, операционная система принимает 300 запрос и его уровень приоритета. Запрос помещается 302 в очередь для указанного уровня приоритета.
[0035] Далее определяется, может ли быть обслужен данный запрос. Если новый запрос не является следующим неназначенным элементом в его очереди, он не обслуживается до тех пор, пока не завершается предыдущий элемент(ы) в этой очереди в рамках лимита параллелизма. Контроллер параллелизма определяет 306 счет параллелизма для уровня приоритета нового запроса. Данный счет параллелизма является количеством активных рабочих потоков с уровнем приоритета очереди, в которую запрос был добавлен, и более высокими уровнями приоритета.
[0036] Например, если есть два рабочих потока с уровнем приоритета пять и один рабочий поток с уровнем приоритета четыре, тогда счет параллелизма для уровня приоритета четыре равен трем, а счет параллелизма для уровня приоритета пять равен двум.
[0037] Если лимит параллелизма превышается счетом параллелизма для уровня приоритета нового элемента, как определяется на этапе 308, тогда новый элемент лишь добавляется в очередь, в противном случае он выбирается 312 для непосредственного назначения рабочему потоку. Назначение элемента рабочему потоку будет описано более подробно в связи с Фиг. 6. Счет (например, 208 на Фиг. 2) рабочих потоков с этим уровнем приоритета обновляется, когда элемент назначается рабочему потоку, когда рабочий поток завершается, когда рабочий поток блокируется, когда меняется приоритет рабочего потока.
[0038] Обращаясь к Фиг. 4, другой момент, в который контроллер параллелизма может назначать рабочий поток элементу из очередей с учетом приоритета является тем, когда завершается другой рабочий поток. Контроллер параллелизма принимает 400 указание того, что рабочий поток завершился. Счет потоков для уровня приоритета этого рабочего потока может быть уменьшен 402. До тех пор, пока счет параллелизма для уровня приоритета меньше, чем лимит параллелизма, контроллер параллелизма выполняет 404 итерацию по любым неактивным потокам и очередям элементов, сначала с наивысшим приоритетом, чтобы идентифицировать наивысший уровень приоритета касательно либо неактивного потока, либо, по меньшей мере, одного элемента в его очереди. Он выбирает 406 следующий элемент наивысшего приоритета. Если этот элемент находится в очереди, он назначается рабочему потоку, который делается активным; если элемент уже назначен рабочему потоку, данный рабочий поток делается активным. Неактивные потоки выбираются по находящимся в очереди элементам на том же самом уровне приоритета. Таким образом, поток с прерванным обслуживанием планируется, когда лимит параллелизма еще не был достигнут и не может быть запущен поток с более высоким приоритетом и не существует потоков равного приоритета впереди потока. Таким образом, до тех пор, пока поток является с прерванным обслуживанием, очереди не могут высвободить любой элемент для назначения рабочему потоку с тем же самым уровнем приоритета или ниже, чем у потока с прерванным обслуживанием. Назначение элемента рабочему потоку более подробно описывается в связи с Фиг. 6.
[0039] Теперь, обращаясь к Фиг. 5, другим событием, которое оказывает влияние на находящиеся в очереди элементы и рабочие потоки, является то, когда меняется приоритет элемента или рабочего потока. Например, приложение может предпринять попытку изменения приоритета запроса, которое может вызвать изменение элемента в очереди или изменение приоритета рабочего потока, которому назначен элемент. Такое изменение выполняется посредством контроллера параллелизма, который интегрирует планировщик, так что приоритет рабочего потока меняется непосредственно посредством планировщика. Когда меняется приоритет элемента в очереди, он удаляется из очереди применительно к его исходному уровню приоритета и затем добавляется в очередь применительно к его новому уровню приоритета. Если приоритет для элемента или рабочего потока становится выше, тогда воздействие на систему является минимальным. Приоритет элемента в очереди или рабочий поток могут быть просто изменены. Элемент может быть удален из очереди по более низкому приоритету и помещен в другую очередь по более высокому приоритету; приоритет рабочего потока может быть изменен, чтобы быть выше, в планировщике.
[0040] Тем не менее, если элемент уже назначен рабочему потоку и его приоритет становится ниже, существует риск возникновения инверсии приоритетов, при которой поток с более низким приоритетом вследствие предотвращает запуск потока с более высоким приоритетом, назначенного элементу работы из очереди более высокого приоритета. В частности, инверсия приоритетов возникает, если предотвращается запуск потока более низкого приоритета, например, посредством еще одного другого потока с промежуточным приоритетом, и предотвращается запуск потока с более высоким приоритетом из-за потока с более низким приоритетом.
[0041] Примерная реализация администрирования изменения приоритета теперь будет описана на Фиг. 5. С учетом условий, которые могут привести к инверсии приоритетов, контроллер параллелизма принимает 500 указание того, что изменился уровень приоритета элемента. Например, посредством интерфейса прикладного программирования приложение может проинформировать контроллер параллелизма об изменении в приоритете. Если элемент не был назначен рабочему потоку, т.е. элемент по-прежнему в очереди, как определяется на этапе 502, тогда элемент может быть помещен 506 в очередь соответственно в очередь применительно к новому уровню приоритета и интерпретироваться в качестве нового запроса (смотри Фиг. 3). Если элемент уже назначен рабочему потоку, еще новый приоритет выше, как определяется на этапе 504, тогда приоритет нового потока может быть просто изменен в планировщике. Счет потоков и счет параллелизма для каждого уровня приоритета может быть обновлен. В противном случае, если приоритет уменьшается и данный элемент уже назначен рабочему потоку, тогда дополнительные шаги предпринимаются, чтобы прервать обслуживание нового запроса более низкого приоритета, чтобы позволить сделать активным поток более высокого приоритета, что может включать в себя назначение запроса из очереди по более высокому приоритету рабочему потоку.
[0042] Чтобы назначить запрос более высокого приоритета рабочему потоку или чтобы разрешить сделать активным поток более высокого приоритета, контроллер параллелизма сначала блокирует 508 очереди, чтобы разрешить выполнение изменения без взаимовлияния. Прерывается 510 обслуживание рабочего потока, назначенного элементу с измененным приоритетом. Счет потоков для предыдущего уровня приоритета и соответствующий счет параллелизма уменьшаются. Счет потоков и счет параллелизма для нового уровня приоритета увеличиваются. Приоритет потока устанавливается 512 в новый уровень приоритета. Контроллер параллелизма затем выбирает 514 следующий элемент самого высокого приоритета посредством либо активации потока более высокого приоритета, либо выбора элемента, которому не был еще назначен рабочий поток. Такое назначение описывается более подробно ниже в связи с Фиг. 6. После того как рабочий поток для следующего элемента с самым высоким приоритетом активен, данные очереди обновляются, блокировка по очереди может быть высвобождена 516.
[0043] Как отмечено выше, элемент может быть назначен рабочему потоку, когда он является следующим элементом самого высокого приоритета в очередях и если счет параллелизма для его уровня приоритета не превышает текущего лимита параллелизма. Данное назначение может произойти, например, когда элемент добавляется в очередь, когда рабочий поток завершает элемент, и когда меняется приоритет рабочего потока.
[0044] Примерная реализация назначения элемента рабочему потоку теперь будет описана в связи с Фиг. 6.
[0045] Контроллер параллелизма принимает 600 указание следующего выбранного элемента, который будет назначен рабочему потоку. Данный этап может быть точно таким же этапом, как описанный выше, где контроллер параллелизма выбирает следующий элемент. Затем определяется, на этапе 602, доступен ли рабочий поток из пула. В некоторых случаях, как ожидается, рабочий поток будет доступен, как, например, когда контроллер выбирает элемент после того, как другой рабочий поток завершается. В других, может быть один или более рабочих потоков, более низкого приоритета, чем у текущего элемента, в отношении одного из которых прерывается обслуживание, если ресурс недоступен. Если рабочий поток доступен, он назначается 604 текущему элементу. Если рабочий поток недоступен, рабочий поток более низкого приоритета выбирается и прерывается 606 его обслуживание. Затем текущий элемент назначается 604 теперь доступному рабочему потоку. Когда элемент назначается рабочему потоку, поток может быть помечен 608 как тот, что вносит свой вклад в лимит параллелизма и счет потоков для этого уровня приоритета может быть увеличен.
[0046] Когда рабочий поток назначается, ему дается приоритет элемента, которому он назначается. Как отмечено выше, если данный приоритет меняется, контроллер параллелизма может осуществлять администрирование этого изменения благодаря тому факту, что планировщик интегрирован с контроллером параллелизма, так что приоритет устанавливается как часть операции планирования, и, следовательно, расписание напрямую информируется о любом изменении приоритета.
[0047] При рабочих потоках, назначенных элементам из очереди с учетом приоритета, планировщик, размещающийся в контроллере параллелизма, затем может планировать параллельную операцию активных рабочих потоков.
[0048] При такой реализации один пул рабочих потоков может быть назначен элементам работы процесса с несколькими разными приоритетами. Контроллер параллелизма может гарантировать то, что самые последние принятые элементы наивысшего приоритета первыми назначаются рабочим потокам. Кроме того, приоритет потоков и/или элементов в очереди может измениться во время операции, и планировщик, интегрированный в контроллер параллелизма, может осуществлять администрирование назначения рабочего потока, чтобы сократить вероятность инверсии приоритетов.
[0049] Иллюстративный пример такой системы в действии иллюстрируется на Фиг. 7. На Фиг. 7 показаны пул рабочих потоков 700, очереди 702 по приоритету со счетом 704 потоков и лимит («2») параллелизма. Каждая из очередей по приоритету обладает приоритетом, в данном примере 0, 4, 10, 15 и 31 соответственно. Последовательность элементов работы, которые будут помещены в очередь, иллюстрируется обозначением 704. Как показано в обозначении «A», все очереди пусты. Далее, как показано в обозначении «B», элемент работы с приоритетом 10 добавляется в очередь с приоритетом 10. Данный элемент работы назначается рабочему потоку с приоритетом 10 и счет потоков для очереди по приоритету 10 увеличивается. Как показано в обозначении «C», второй элемент работы с приоритетом 10 добавляется в очередь с приоритетом 10. Данный элемент работы назначается рабочему потоку с приоритетом 10 и счет потоков для очереди по приоритету 10 увеличивается до «2». Как показано в обозначении «D», следующий элемент имеет приоритет 4 и добавляется в очередь с приоритетом 4. Так как лимит параллелизма равен «2» и счет потоков для всех очередей с приоритетом выше чем четыре уже «2» (из-за двух элементов с приоритетом 10), элемент не назначается рабочему потоку. Далее, как показано в обозначении «E», элемент работы с приоритетом 15 добавляется в его соответствующую очередь. Сумма всех счетов потоков с уровнем приоритета 15 и выше меньше, чем лимит параллелизма. Следовательно, данному элементу незамедлительно назначается рабочий поток, и поток устанавливается, чтобы иметь приоритет 15. Если машина обладает только двумя доступными вычислительными ресурсами, тогда глобальный планировщик прекращает обслуживание одного из потоков, запущенных с приоритетом 10, чтобы разрешить запуск потока с приоритетом 15.
[0050] Также возможно предоставить реализацию гарантированной организации очереди рабочих потоков, которая гарантирует в момент, когда элемент работы помещается в очередь, что рабочий поток будет доступен, чтобы обслуживать элемент работы. Одним условием, которое позволяет предоставлять гарантию, является то, что количество ожидающих работающих потоков выше количества элементов работы перед новым элементом в очередях с учетом приоритета. Так как элемент более высокого приоритета может прибыть после того, как элемент был помещен в очередь, предусматривается механизм, учитывающий такой случай. В одной реализации каждый элемент работы, обладающий гарантией, помечается. Когда элемент добавляется в очередь с гарантией, счетчик увеличивается; когда этот элемент назначается рабочему потоку, счетчик уменьшается. Когда новый элемент более высокого приоритета добавляется в очередь, он не назначается рабочему потоку, если присутствует элемент более низкого приоритета с гарантией. Такая реализация полезна в системе, которая может испытывать тяжелые перегрузки, и может исключить воспроизводимость логики рабочего потока, которая в противном случае используется, чтобы предоставить выделенные потоки, чтобы гарантировать производительность.
[0051] Теперь описав примерные реализации и варианты, должно быть очевидно, что любая или все из вышеупомянутых альтернативных реализаций, описанных в данном документе, может быть использована в любом сочетании, требуемом для формирования дополнительных гибридных реализаций. Должно быть понятно, что предмет изобретения, определяемый в прилагаемой формуле изобретения, необязательно ограничивается описанными выше особыми реализациями. Описанные выше особые реализации раскрываются лишь в качестве примера.

Claims (44)

1. Компьютер, выполненный с возможностью планирования потоков для множественных очередей с учетом приоритета, при этом компьютер содержит:
память и по меньшей мере одно процессорное устройство;
операционную систему, исполняющуюся на по меньшей мере одном процессорном устройстве, причем операционная система выполнена с возможностью:
в ответ на запрос от приложения, исполняющегося на компьютере, выделять пул рабочих потоков для этого приложения, причем каждый рабочий поток представляет собой поток, предоставляемый операционной системой, при этом каждый рабочий поток обслуживает запросы из данного приложения на доступ к ресурсам операционной системы,
связывать множество очередей с пулом рабочих потоков, выделенным для упомянутого приложения, причем каждая очередь обладает отличным от других приоритетом, для хранения элементов, которые должны назначаться рабочим потокам, причем каждый элемент представляет собой обладающий приоритетом запрос из упомянутого приложения на доступ к ресурсам операционной системы с использованием одного из рабочих потоков в пуле рабочих потоков, выделенном для упомянутого приложения;
причем операционная система дополнительно содержит контроллер параллелизма, выполненный с возможностью назначать элементы из упомянутого множества очередей рабочим потокам, ограничивая при этом количество параллельно исполняющихся рабочих потоков, при этом в ответ на обладающий приоритетом запрос из упомянутого приложения на доступ к ресурсам операционной системы контроллер параллелизма выполнен с возможностью:
добавлять элемент, соответствующий данному запросу, в очередь, обладающую приоритетом упомянутого запроса, и определять, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и
в качестве реакции на определение того, что лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, не достигнут, назначать упомянутый элемент, соответствующий упомянутому запросу, одному из рабочих потоков и увеличивать счет потоков, относящийся к упомянутой очереди.
2. Компьютер по п.1, в котором операционная система имеет интерфейс прикладного программирования, позволяющий приложениям добавлять элементы в очереди с заданными приоритетами.
3. Компьютер по п.2, в котором каждый рабочий поток имеет флаг параллелизма, указывающий на то, подсчитывается ли этот рабочий поток в отношении лимита параллелизма.
4. Компьютер по п.3, в котором каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.
5. Компьютер по п.4, в котором в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.
6. Компьютер по п.1, в котором контроллер параллелизма помечает элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.
7. Компьютер по п.1, в котором контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.
8. Компьютер по п.1, в котором контроллер параллелизма для определения того, достигнут ли лимит параллелизма для упомянутой очереди, дополнительно выполнен с возможностью сравнивать счеты потоков для очередей, обладающих не меньшим приоритетом, чем приоритет упомянутого запроса, с лимитом параллелизма.
9. Компьютер по п.1, в котором контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.
10. Машиночитаемый носитель, на котором хранятся инструкции компьютерной программы для планирования потоков для множественных очередей с учетом приоритета, которые при их считывании с машиночитаемого носителя и обработке процессорным устройством компьютера предписывают процессорному устройству конфигурироваться так, чтобы иметь операционную систему, исполняющуюся на процессорном устройстве, причем операционная система выполнена с возможностью:
в ответ на запрос от приложения, исполняющегося на компьютере, выделять пул рабочих потоков для этого приложения, причем каждый рабочий поток представляет собой поток, предоставляемый операционной системой, при этом каждый рабочий поток обслуживает запросы из данного приложения на доступ к ресурсам операционной системы,
связывать множество очередей с пулом рабочих потоков, выделенным для упомянутого приложения, причем каждая очередь обладает отличным от других приоритетом для хранения элементов, которые должны назначаться рабочим потокам, причем каждый элемент представляет собой обладающий приоритетом запрос из упомянутого приложения на доступ к ресурсам операционной системы с использованием одного из рабочих потоков в пуле рабочих потоков, выделенном для упомянутого приложения;
причем операционная система дополнительно содержит контроллер параллелизма, выполненный с возможностью назначать элементы из упомянутого множества очередей рабочим потокам, ограничивая при этом количество параллельно исполняющихся рабочих потоков, при этом в ответ на обладающий приоритетом запрос из упомянутого приложения на доступ к ресурсам операционной системы контроллер параллелизма выполнен с возможностью:
добавлять элемент, соответствующий данному запросу, в очередь, обладающую приоритетом упомянутого запроса, и определять, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и
в качестве реакции на определение того, что лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, не достигнут, назначать упомянутый элемент, соответствующий упомянутому запросу, одному из рабочих потоков и увеличивать счет потоков, относящийся к упомянутой очереди.
11. Машиночитаемый носитель по п.10, при этом операционная система имеет интерфейс прикладного программирования, позволяющий приложениям добавлять элементы в очереди с заданными приоритетами.
12. Машиночитаемый носитель по п.11, при этом каждый рабочий поток имеет флаг параллелизма, указывающий на то, подсчитывается ли этот рабочий поток в отношении лимита параллелизма.
13. Машиночитаемый носитель по п.12, при этом каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.
14. Машиночитаемый носитель по п.13, при этом в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.
15. Машиночитаемый носитель по п.10, при этом контроллер параллелизма помечает элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.
16. Машиночитаемый носитель по п.10, при этом контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.
17. Машиночитаемый носитель по п.10, при этом контроллер параллелизма для определения того, достигнут ли лимит параллелизма для упомянутой очереди, дополнительно выполнен с возможностью сравнивать счеты потоков для очередей, обладающих не меньшим приоритетом, чем приоритет упомянутого запроса, с лимитом параллелизма.
18. Машиночитаемый носитель по п.10, при этом контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.
19. Компьютерно-реализуемый способ планирования потоков для множественных очередей с учетом приоритета, причем способ выполняется операционной системой, исполняющейся на компьютере, при этом способ содержит:
выделение операционной системой пула рабочих потоков для приложения, исполняющегося на компьютере, в ответ на запрос от этого приложения, причем каждый рабочий поток представляет собой поток, предоставляемый операционной системой, при этом каждый рабочий поток обслуживает запросы из данного приложения на доступ к ресурсам операционной системы;
связывание операционной системой множества очередей с пулом рабочих потоков, выделенным для упомянутого приложения, причем каждая очередь - для элементов с отличным от других приоритетом, причем каждый элемент представляет собой обладающий приоритетом запрос из упомянутого приложения на доступ к ресурсам операционной системы с использованием одного из рабочих потоков в пуле рабочих потоков, выделенном для упомянутого приложения;
назначение элементов пулу рабочих потоков с использованием контроллера параллелизма, предусмотренного в операционной системе, ограничивая при этом количество параллельно исполняющихся рабочих потоков путем того, что в ответ на запрос из упомянутого приложения, включающий в себя обладающий приоритетом элемент, посредством контроллера параллелизма:
добавляют этот элемент в очередь, обладающую приоритетом данного элемента,
определяют, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого элемента, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и
в качестве реакции на определение того, что лимит параллелизма для очереди, обладающей приоритетом упомянутого элемента, не достигнут, назначают упомянутый элемент одному из рабочих потоков и увеличивают счет потоков для упомянутой очереди.
20. Компьютерно-реализуемый способ по п.19, в котором каждый рабочий поток имеет флаг параллелизма, указывающий на то, подсчитывается ли этот рабочий поток в отношении лимита параллелизма.
21. Компьютерно-реализуемый способ по п.20, в котором каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.
22. Компьютерно-реализуемый способ по п.21, в котором в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.
23. Компьютерно-реализуемый способ по п.19, дополнительно содержащий этап, на котором помечают элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.
24. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.
25. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма для определения того, достигнут ли лимит параллелизма для упомянутой очереди, дополнительно выполнен с возможностью сравнивать счеты потоков для очередей, обладающих не меньшим приоритетом, чем приоритет упомянутого запроса, с лимитом параллелизма.
26. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.
RU2015153212A 2013-06-14 2013-09-21 Назначение и планирование потоков для нескольких очередей с учетом приоритета RU2647657C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/918,749 US9715406B2 (en) 2013-06-14 2013-06-14 Assigning and scheduling threads for multiple prioritized queues
US13/918,749 2013-06-14
PCT/US2013/061086 WO2014200552A1 (en) 2013-06-14 2013-09-21 Assigning and scheduling threads for multiple prioritized queues

Publications (2)

Publication Number Publication Date
RU2015153212A RU2015153212A (ru) 2017-06-16
RU2647657C2 true RU2647657C2 (ru) 2018-03-16

Family

ID=49293918

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015153212A RU2647657C2 (ru) 2013-06-14 2013-09-21 Назначение и планирование потоков для нескольких очередей с учетом приоритета

Country Status (6)

Country Link
US (1) US9715406B2 (ru)
EP (1) EP3008594B1 (ru)
JP (1) JP6320520B2 (ru)
BR (1) BR112015030865A8 (ru)
RU (1) RU2647657C2 (ru)
WO (1) WO2014200552A1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10553315B2 (en) * 2015-04-06 2020-02-04 Preventice Solutions, Inc. Adverse event prioritization and handling

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US9742869B2 (en) * 2013-12-09 2017-08-22 Nvidia Corporation Approach to adaptive allocation of shared resources in computer systems
US10193964B2 (en) * 2014-05-06 2019-01-29 International Business Machines Corporation Clustering requests and prioritizing workmanager threads based on resource performance and/or availability
US9772959B2 (en) * 2014-05-30 2017-09-26 Apple Inc. I/O scheduling
US10162683B2 (en) * 2014-06-05 2018-12-25 International Business Machines Corporation Weighted stealing of resources
US10747573B2 (en) * 2014-07-08 2020-08-18 UST Global (Singapore) Pte. Ltd. Virtualized execution across distributed nodes
US20160188638A1 (en) * 2014-12-30 2016-06-30 Teradata Us, Inc. Apparatus and method for managing usage of a database system resources by concurrent database users of a database system
US10248463B2 (en) 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US10310820B2 (en) * 2016-05-12 2019-06-04 Basal Nuclei Inc Programming model and interpreted runtime environment for high performance services with implicit concurrency control
CN107450970B (zh) * 2016-05-30 2020-07-03 京瓷办公信息系统株式会社 能够根据处理器的利用优先级来利用硬件的电子设备
CN106130810B (zh) * 2016-06-01 2020-12-22 北京百度网讯科技有限公司 网站监测方法和装置
US10339295B2 (en) 2016-07-28 2019-07-02 Microsoft Technology Licensing, Llc Tracking work between system entities
US10298511B2 (en) 2016-08-24 2019-05-21 Apple Inc. Communication queue management system
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
CN109358960A (zh) * 2018-11-01 2019-02-19 郑州云海信息技术有限公司 一种任务分发方法、系统、设备及计算机可读存储介质
WO2020185623A1 (en) 2019-03-08 2020-09-17 Mobileye Vision Technologies Ltd. Priority based management of access to shared resources
CN112527476B (zh) * 2019-09-19 2024-03-26 华为技术有限公司 资源调度方法及电子设备
CN110969359A (zh) * 2019-12-05 2020-04-07 中国南方电网有限责任公司 配电网并行拓扑分析方法、装置、计算机设备和存储介质
CN111651865B (zh) * 2020-05-12 2023-03-17 北京华如科技股份有限公司 一种并行离散事件的事件集中发射式仿真执行方法及系统
CN112099945A (zh) * 2020-08-20 2020-12-18 深圳市元征科技股份有限公司 一种任务处理方法、任务处理装置及电子设备
CN112905326B (zh) * 2021-02-18 2023-04-11 上海哔哩哔哩科技有限公司 任务处理方法及装置
CN114466079B (zh) * 2022-02-09 2024-02-06 星环信息科技(上海)股份有限公司 请求处理方法、装置、代理服务器及存储介质
CN115018393B (zh) * 2022-08-08 2023-01-13 广东电网有限责任公司佛山供电局 一种配电网模型的拓扑分析方法及系统
CN115834709B (zh) * 2022-11-29 2024-08-16 陕西航星数科信息技术有限公司 一种抢占式请求并发控制的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US6223207B1 (en) * 1995-04-24 2001-04-24 Microsoft Corporation Input/output completion port queue data structures and methods for using same
US6411982B2 (en) * 1998-05-28 2002-06-25 Hewlett-Packard Company Thread based governor for time scheduled process execution
RU2364917C2 (ru) * 2003-10-24 2009-08-20 Майкрософт Корпорейшн Система и способ установки и выполнения прикладных программ предпочтений
US20120151063A1 (en) * 2010-12-10 2012-06-14 Salesforce.Com, Inc. Systems and techniques for utilizing resource aware queues and/or service sharing in a multi-server environment
RU2472213C2 (ru) * 2008-01-15 2013-01-10 ЭйДжиЭй Инк. Система, устройство и способ управления сообщениями

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477561B1 (en) * 1998-06-11 2002-11-05 Microsoft Corporation Thread optimization
US7080379B2 (en) 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US7349422B2 (en) * 2003-06-03 2008-03-25 Microsoft Corporation Providing contention free quality of service to time constrained data
JP4175185B2 (ja) * 2003-06-06 2008-11-05 日本電気株式会社 ネットワーク情報記録装置
US7657892B2 (en) 2004-05-20 2010-02-02 Bea Systems, Inc. System and method for application server with self-tuned threading model
US8635621B2 (en) 2008-08-22 2014-01-21 International Business Machines Corporation Method and apparatus to implement software to hardware thread priority
US8387057B2 (en) 2010-12-16 2013-02-26 Intel Corporation Fast and linearizable concurrent priority queue via dynamic aggregation of operations
US8954968B1 (en) * 2011-08-03 2015-02-10 Juniper Networks, Inc. Measuring by the kernel the amount of time a monitored thread spends in a queue in order to monitor scheduler delays in a computing device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223207B1 (en) * 1995-04-24 2001-04-24 Microsoft Corporation Input/output completion port queue data structures and methods for using same
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US6411982B2 (en) * 1998-05-28 2002-06-25 Hewlett-Packard Company Thread based governor for time scheduled process execution
RU2364917C2 (ru) * 2003-10-24 2009-08-20 Майкрософт Корпорейшн Система и способ установки и выполнения прикладных программ предпочтений
RU2472213C2 (ru) * 2008-01-15 2013-01-10 ЭйДжиЭй Инк. Система, устройство и способ управления сообщениями
US20120151063A1 (en) * 2010-12-10 2012-06-14 Salesforce.Com, Inc. Systems and techniques for utilizing resource aware queues and/or service sharing in a multi-server environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10553315B2 (en) * 2015-04-06 2020-02-04 Preventice Solutions, Inc. Adverse event prioritization and handling

Also Published As

Publication number Publication date
RU2015153212A (ru) 2017-06-16
BR112015030865A2 (pt) 2017-07-25
EP3008594A1 (en) 2016-04-20
WO2014200552A1 (en) 2014-12-18
EP3008594B1 (en) 2019-09-04
JP6320520B2 (ja) 2018-05-09
JP2016524238A (ja) 2016-08-12
CN105474175A (zh) 2016-04-06
US20140373021A1 (en) 2014-12-18
BR112015030865A8 (pt) 2020-01-28
US9715406B2 (en) 2017-07-25

Similar Documents

Publication Publication Date Title
RU2647657C2 (ru) Назначение и планирование потоков для нескольких очередей с учетом приоритета
US10754706B1 (en) Task scheduling for multiprocessor systems
US10223165B2 (en) Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment
WO2016197716A1 (zh) 一种作业调度方法和装置
US9141433B2 (en) Automated cloud workload management in a map-reduce environment
US8650570B2 (en) Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
US11100604B2 (en) Multiple application cooperative frame-based GPU scheduling
US10275287B2 (en) Concurrent distributed graph processing system with self-balance
US12079660B2 (en) Evolutionary modelling based non-disruptive scheduling and management of computation jobs
US9947068B2 (en) System and method for GPU scheduling
US10310891B2 (en) Hand-off scheduling
EP2613257B1 (en) Systems and methods for use in performing one or more tasks
US20200167191A1 (en) Laxity-aware, dynamic priority variation at a processor
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
Yabuuchi et al. Low-latency job scheduling with preemption for the development of deep learning
EP2840513B1 (en) Dynamic task prioritization for in-memory databases
US8806180B2 (en) Task execution and context switching in a scheduler
CN115904744A (zh) 线程持锁方法、装置、电子设备及计算机可读介质
US9378062B2 (en) Interface between a resource manager and a scheduler in a process
US9304831B2 (en) Scheduling execution contexts with critical regions

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190922