RU2639944C2 - Системы и способы для разделения однонаправленных списков для выделения элементов памяти - Google Patents
Системы и способы для разделения однонаправленных списков для выделения элементов памяти Download PDFInfo
- Publication number
- RU2639944C2 RU2639944C2 RU2014143063A RU2014143063A RU2639944C2 RU 2639944 C2 RU2639944 C2 RU 2639944C2 RU 2014143063 A RU2014143063 A RU 2014143063A RU 2014143063 A RU2014143063 A RU 2014143063A RU 2639944 C2 RU2639944 C2 RU 2639944C2
- Authority
- RU
- Russia
- Prior art keywords
- memory
- list
- structures
- blocking
- allocation
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000000926 separation method Methods 0.000 title claims description 4
- 230000000903 blocking effect Effects 0.000 claims description 55
- 230000003044 adaptive effect Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 19
- 239000000872 buffer Substances 0.000 claims description 9
- 238000002955 isolation Methods 0.000 claims 1
- 238000005192 partition Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000027455 binding Effects 0.000 description 4
- 238000009739 binding Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000013468 resource allocation Methods 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Storage Device Security (AREA)
Abstract
Изобретение относится к средствам управления выделением множества элементов памяти, хранимых во множестве безблокировочных списковых структур. Технический результат заключается в расширении арсенала технических средств выделения памяти для памяти. Указанный результат достигается за счет применения способа выделения памяти для памяти, выполняемого в операционной системе многоядерного процессора. При этом способ предусматривает управление выделением памяти запрашивающим память частям многоядерного процессора посредством того, что: получают множество разделенных безблокировочных списковых структур; осуществляют поиск по упомянутому множеству разделенных безблокировочных списковых структур на предмет доступного элемента списка; по нахождении доступного элемента списка выделяют доступную секцию памяти процессору ядра для использования в качестве выделенной памяти; и динамически балансируют упомянутые доступные элементы списка. 3 н. и 17 з.п. ф-лы, 4 ил.
Description
УРОВЕНЬ ТЕХНИКИ
S-списки представляют собой структуры данных, которые являются безблокировочными реализациями списка LIFO (последним пришел - первым обслужен), сделанными доступными в операционных системах. S-списки, как правило, являются желаемым выбором структуры данных для хранения буферов фиксированного размера, которые могут быть выделены и освобождены без удерживания каких-либо спин-блокировок или других примитивов синхронизации. S-списки также могут использоваться для содержимого переменного размера в форме безблокировочного однонаправленного списка. Другие возможности предоставлены в среде операционной системы - такие как сохраняющие списки, которые построены на S-списках.
Однако в некоторых сценариях использование S-списков может быть нежелательным. В качестве одного из примеров, единственный заголовок S-списка может стать горячей точкой конкуренции строки кэша на серверах со многими процессорами, осуществляющими доступ к одному и тому же S-списку. Это может быть узким местом масштабируемости как в родном, так и в Hyper-V виртуализированных сценариях.
В другом сценарии S-списки могут быть в основном использованы как пакетные кэши или буферные хранилища фиксированного размера. Однако существуют сценарии, где более сложные структуры данных или ресурсы вероятно меняющихся размеров должны поддерживаться в таком безблокировочном списке. Может быть желательно иметь больше операций, чем просто 'Поместить' ('Push') и 'Извлечь' ('Pop') для таких целей, как балансировка нагрузки, занятие пакетов, осведомленность NUMA (архитектура неоднородного доступа к памяти) и других алгоритмических требований. Они часто удовлетворяются другой абстракцией структуры данных, чтобы управлять несколькими S-списками. Сохраняющие списки являются одним таким примером.
Сохраняющие списки поддерживают кэш буферов фиксированного размера для быстрого выделения и освобождения памяти. Для преимуществ привязки к процессору некоторые операционные системы также предоставляют сохраняющие списки из расчета на процессор. Эти сохраняющие списки из расчета на процессор, как правило (но не обязательно), поддерживаются глобальным списком, чтобы содержать резервные пакеты в случае, если список из расчета на процессор пустой. Может быть желательно иметь дополнительные выделения ресурсов, чтобы иметь довольно большой резервный список для предоставления абстракции единого пула ресурсов. Когда потребность падает, эти дополнительные выделения памяти могут быть освобождены, если есть потребность в памяти. Однако в определенных сценариях ресурсы не могут быть избыточно выделены. Это особенно верно для аппаратных драйверов, которые определяют пределы своих возможностей - подобно максимальному числу запросов I/O (ввода/вывода), которые может обработать RAID контроллер. Усовершенствованные алгоритмы связывают эти пределы с глубинами S-списков и избегают использования спин-блокировок. Также дополнительные издержки выделений и освобождений вызывают фрагментацию памяти и затраты в виде циклов ЦП (CPU, центрального процессора). Сохраняющие списки, которые выделяют больше, чем необходимое количество, могут не быть использованы по этим причинам.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Нижеследующее представляет упрощенное изложение сущности инновации, чтобы обеспечить базовое понимание некоторых аспектов, описанных в материалах настоящей заявки. Это краткое изложение сущности изобретения не является исчерпывающим обзором заявленного изобретения. Оно не предназначено ни для определения ключевых или критических элементов заявленного изобретения, ни для очерчивания объема изобретения. Его единственная цель состоит в том, чтобы представить некоторые принципы заявленного изобретения в упрощенной форме в качестве вводной части к более подробному описанию, которое представлено позже.
В одном из вариантов осуществления представлены системы и способы для управления выделением множества элементов памяти, хранимых во множестве безблокировочных списковых структур. Эти безблокировочные списковые структуры (такие как S-списки) могут быть сделаны доступными в среде операционной системы многоядерного процессора. В некоторых вариантах осуществления безблокировочные списковые структуры, S-списки или тому подобное могут быть встроены в другие общие структуры данных, такие как хэши, деревья и т.д., чтобы удовлетворить различным требованиям по выделению ресурсов и управлению.
Некоторые варианты осуществления могут разделять это множество безблокировочных списковых структур и изначально разделять элементы памяти среди этих безблокировочных списковых структур. Когда ядерный процессор (или другой обрабатывающий элемент) делает запрос на выделение себе элемента памяти, система и/или способ могут искать среди безблокировочных списковых структур доступный элемент памяти. Когда подходящий и/или доступный элемент памяти найден, система может выделить доступный элемент памяти запрашивающему ядерному процессору.
В некоторых вариантах осуществления система и/или способ могут затем динамически балансировать набор элементов памяти среди различных безблокировочных списковых структур в соответствии с подходящей метрикой балансировки. Такая возможная метрика может заключаться просто в поддержке, по существу, числового равенства элементов памяти среди безблокировочных списковых структур. Другие метрики могут включать в себя другие соображения балансировки нагрузки - возможно, основанные на типе выполняющегося процесса, возможных конкурентных ситуациях или тому подобном - например, такие как упомянутые выше, чтобы уменьшить конкуренцию ЦП или избежать избыточного выделения (over-allocation) ресурсов памяти.
Другие признаки и аспекты настоящей системы представлены ниже в Подробном Описании при прочтении в связи с чертежами, представленными в этой заявке.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Примерные варианты осуществления проиллюстрированы на чертежах, на которые даны ссылки. Предполагается, что варианты осуществления и чертежи, раскрытые в материалах настоящей заявки, следует рассматривать как иллюстративные, а не ограничительные.
Фиг. 1 иллюстрирует примерную компьютерную систему, в которой системы и методики настоящей заявки могут располагаться и работать.
Фиг. 2A представляет собой один из вариантов осуществления адаптивной системы структуры хэш и способа для управления S-списками.
Фиг. 2B представляет собой один из вариантов осуществления системы динамической перестановки списков и способа для управления S-списками.
Фиг. 3 иллюстрирует логическую блок-схему в одном из вариантов осуществления адаптивной хэш-системы, как могло быть реализовано на фиг. 2A.
ПОДРОБНОЕ ОПИСАНИЕ
Как использовано в материалах настоящей заявки, термины "компонент", "система", "интерфейс" и т.п. предназначены для обозначения связанной с компьютером сущности, т.е. аппаратных средств, программных средств (например, в ходе исполнения) и/или программно-аппаратных средств (firmware). Например, компонент может быть процессом, запущенным на процессоре, процессором, объектом, исполняемым файлом, программой и/или компьютером. В качестве иллюстрации, как приложение, работающее на сервере, так и сервер могут быть компонентом. Один или более компонентов могут находиться внутри процесса, и компонент может быть локализован на одном компьютере и/или распределен между двумя и более компьютерами.
Заявленное изобретение описано со ссылкой на чертежи, на всем протяжении которых одинаковые номера ссылок используются для указания идентичных элементов. В последующем описании, в целях пояснения, многочисленные характерные детали изложены для того, чтобы обеспечить исчерпывающее понимание предмета инновации. Однако может быть очевидно, что заявленное изобретение может быть реализовано на практике без этих характерных деталей. В других случаях широко известные структуры и устройства показаны в форме структурной схемы, чтобы облегчить описание предмета инновации. Чтобы удовлетворить потенциальную нехватку ресурсов, настоящая заявка раскрывает ряд вариантов осуществления, которые допускают действенное и эффективное использование S-списков. В одном из вариантов осуществления S-списки могут быть разделены эффективным способом, который решает многие из вышеупомянутых ограничений, при этом все еще поддерживая безблокировочную природу ресурсных S-списков, уменьшая конкуренцию, связанную со строками кэша, выделение фиксированного количества и совместное использование/занятие ресурсов между списками. В других вариантах осуществления эти методики могут использовать привязку к процессору и осведомленность NUMA (архитектура неоднородного доступа к памяти) для оптимальной производительности.
Фиг. 1 изображает схему компьютерной системы, показывающую состоящую из нескольких групп многоядерную систему 100 с узлами NUMA (т.е., сокетами процессора). Система 100, как показано, содержит 2 группы - например, Группу 0 (102a) и Группу 1 (102b). В одном из вариантов осуществления каждая группа может содержать до 64 (например, маркированных от 0 до 63) Логических Процессоров (LP).
Следует иметь в виду, что подходящая система может иметь 1 группу, если в ней меньше чем 64 логических процессора. Подобным образом, система может иметь больше чем 2 группы. Узлы NUMA полностью содержатся в группе, поэтому может быть возможно, что группа может иметь меньше чем 64 логических процессора. Система может иметь несколько (больше чем 2 группы) в зависимости от количества логических процессоров, содержащихся в системе.
Как показано, каждая группа может дополнительно содержать узлы 104 (т.е., сокеты для установки процессора). Узлы на схеме могут также относиться к Узлам NUMA (Неоднородный Доступ к Памяти). Во многих современных системах узлы NUMA пронумерованы от 0 до 63 в рамках всей системы, охватывающей все группы; однако будущие системы могут иметь другое количество узлов, и настоящая заявка не ограничена такими современными спецификациями. Каждый такой узел может дополнительно содержать ядра 106. В настоящем варианте осуществления каждый LP может быть ядром или аппаратным потоком. Логические Процессоры уникальным образом пронумерованы от 0 до 63 в каждой группе.
В некоторой вычислительной среде системы с более чем одним физическим процессором - или системы с физическими процессорами, которые имеют несколько ядер - могут предоставить операционной системе несколько логических процессоров. Логический Процессор представляет собой одну логическую вычислительную машину с точки зрения операционной системы, приложения или драйвера. "Ядро" (или "ядерный процессор") представляет собой процессор, который может состоять из одного или более логических процессоров. Физический процессор может состоять из одного или более ядер. Физический процессор может быть истолкован так же, как корпус процессора, сокет или ЦП.
Кроме того, Ядра с 0 по C-1 могут совместно использовать ресурс 108 памяти. Время доступа к локальной памяти между ядрами и памятью на заданном узле может быть быстрее, чем время доступа к памяти к другим узлам. Соединения 110 между узлами могут быть такими, что все узлы могут осуществлять доступ к памяти во всех других узлах, но время доступа к памяти может быть медленнее, чем доступ к локальной памяти.
Следует иметь в виду, что все узлы могут не обязательно быть полностью соединены, и, кроме того, доступ к памяти от одного узла к другому, возможно, должен пройти дополнительный узел, чтобы получить доступ к памяти на 3-м узле.
Управление S-списком
Настоящая заявка раскрывает много вариантов осуществления для эффективного управления безблокировочными списковыми структурами, S-списками или тому подобным. Фиг. 2A и 2B изображают два таких варианта осуществления - адаптивная хэш функция (Фиг. 2A) и динамическая структура Помещения и Извлечения (Фиг. 2B) для управления S-списком. В этих вариантах осуществления может быть желательно предоставить управление ресурсами или пакетами в безблокировочных списках (таких как S-списки), для того чтобы:
i) уменьшить конкуренцию строки кэша ЦП;
ii) избежать избыточного выделения ресурсов;
iii) предусмотреть совместное использование и занятие ресурсов между списками, чтобы приспособиться к требованиям ресурсов с максимальным лимитом;
iv) предоставить дополнительную логику для осведомленности топологии NUMA, привязки к процессору и т.д. и/или
v) предоставить определенные требования к выделению памяти, такие как программы распределения, например, в границах 4Гб и другие такие ограничения. Могут быть нежелательными дополнительные выделения и освобождения памяти, которые могут привести к фрагментации, которая может быть проблемой - например, особенно с пределами 4 Гб.
В целом, для методик и вариантов осуществления настоящей заявки характерно встраивать безблокировочные списковые структуры, S-списки или тому подобное в другие общие структуры данных, такие как хэши, деревья и т.д., чтобы удовлетворить различным требованиям по выделению ресурсов и управлению.
Во многих из настоящих вариантов осуществления представлены системы и способы для управления выделением множества элементов памяти, хранимых во множестве безблокировочных списковых структур. Эти безблокировочные списковые структуры (такие как S-списки) могут быть сделаны доступными в среде операционной системы многоядерного процессора.
Эти варианты осуществления могут разделять данное множество безблокировочных списковых структур и изначально разделять элементы памяти среди этих безблокировочных списковых структур. Когда ядерный процессор (или другой обрабатывающий элемент) делает запрос на выделение себе элемента памяти, система и/или способ могут искать среди безблокировочных списковых структур доступный элемент памяти. Когда подходящий и/или доступный элемент памяти найден, система может выделить доступный элемент памяти запрашивающему ядерному процессору. Таким разделением безблокировочных списковых структур может обеспечиваться уменьшение конкуренции ЦП.
Система и/или способ могут затем динамически балансировать набор элементов памяти среди различных безблокировочных списковых структур в соответствии с подходящей метрикой балансировки. Такая возможная метрика может заключаться просто в поддержке, по существу, числового равенства элементов памяти среди безблокировочных списковых структур. Другие метрики могут включать в себя другие соображения балансировки нагрузки - возможно, основанные на типе выполняющегося процесса, возможных конкурентных ситуациях или тому подобном - например, такие как упомянутое выше предотвращение избыточного выделения ресурсов памяти.
В другом варианте осуществления подходящий модуль выделения может быть реализован в компьютерной системе (такой как показанной на фиг. 1 - или в любой другой подходящей многоядерной обрабатывающей системе). В качестве лишь одного примера, модуль выделения может исполняться на одном из ядерных процессоров и выполнять динамическое выделение памяти оттуда. Как будет обсуждено более подробно ниже, модуль выделения может управлять динамическим разделением элементов памяти в различных структурах данных - например, динамических хэш структурах или структурах динамической перестановки списков или тому подобном.
Адаптивное Хэширование для Управления S-списком
Фиг. 2A изображает адаптивную динамическую хэш систему и методики (200) для управления S-списками. Как показано, хэш модуль 202 соединен с одним или более S-списками 204 (например, от S-списка 0 до S-списка 3). Каждый S-список может дополнительно содержать ноль или более элементов 206 памяти. Каждый из этих элементов 206 памяти может быть либо буферами фиксированного размера, либо буферами переменного размера и/или структурами данных.
В этом варианте осуществления упомянутый хэш различных S-списков может поддерживаться использованием ключа таким способом, который связан с системой в целом таким образом, который относится к топологии вычислительной системы и/или архитектуре многоядерного процессора. Например, фиг. 2A изображает две такие топологии: (1) использование ключа в виде индекса процессора (как показано сплошной линией стрелки для Группы 0, маркированной 208a); (2) или использование ключа в виде номера узла NUMA (как показано пунктирными линиями стрелки для Группы 0, маркированной 208b, дополнительно содержащей узлы 210 и LP 212). В этих вариантах осуществления цель связывания индекса с топологией системы может заключаться в оптимизации времени доступа, чтобы уменьшить задержку и конкуренцию с другими процессорами в системе. Как может быть видно, элементы памяти могут быть отрегулированы и/или сбалансированы между S-списками (например, 214) в соответствии с подходящими метриками для балансировки нагрузки и/или выделений ресурсов памяти.
В одном из вариантов осуществления возможно абстрагировать единый логический S-список в несколько. В таком случае может быть возможно перемещать элементы списка между различными списками, так что выделения не оканчиваются неудачей, если один конкретный S-список пуст. Может быть осуществлен поиск по всем S-спискам в хэше, перед тем как выделение окончится неудачей. Следует иметь в виду, что различные алгоритмы хэширования могут также удовлетворять топологии системы и целям оптимизации, таким как расширения NUMA или привязки к процессору этих списков.
Фиг. 3 изображает одну возможную логическую блок-схему для обработки S-списка в хэш структуре. На этапе 300 система начинает выделять ресурс памяти, и на этапе 302 система может вычислить хэш индекс на основе желаемого ключа (такого как, например, номер ЦП или идентификатор NUMA, как указано на фиг. 2A). S-список может затем быть назначен хэшу(индексу), после того как вычислен.
Система может выполнить запрос на этапе 306 на предмет того, является ли S-список, в частности, пустым или лишенным элементов памяти - и если так, система может перебрать другие S-списки, чтобы найти подходящий ресурс. Как только найден, ресурс может быть выделен из, скажем, следующего непустого S-списка.
В случае, когда S-список не был пустым, ресурс может быть выделен из него на этапе 310. Независимо от того, было ли выделение сделано на этапе 310 или на этапе 312, система может запросить, было ли выделение успешным, на этапе 314. Если нет, система может в это время вернуть сообщение об ошибке на этапе 320 и завершить обработку на этапе 322.
Однако, если выделение было успешным, ресурс памяти может быть использован как выделенный, на этапе 316. Как только ресурс памяти больше не нужен, система может опционально освободить ресурс назад в исходный или донорный S-список и завершить процесс на этапе 322.
Динамическая Перестановка Списков
Фиг. 2B показывает еще один другой вариант осуществления использования структур (250) данных динамической перестановки списков для эффективного управления S-списками. Как можно увидеть, два отдельных S-списка - например, один для операций Извлечения (освобождения) 252a и один для операций Помещения (получения/выделения) 252b - могут поддерживаться, и каждый может иметь элементы 254 памяти для выделения. Два различных указателя (256a и 256b) могут использоваться для доступа к этим S-спискам. В процессе работы, если S-список Помещения пустой (или удовлетворена какая-либо другая подходящая метрика для балансировки ресурсов памяти) при попытке выделения, возможно поменять местами указатели, так что предыдущий S-список Извлечения теперь становится S-списком Помещения и наоборот. С этого момента возможно попытаться осуществить выделение из этого нового S-списка Помещения. Данная методика аналогична поддержке различных списков 'выделения' ('alloc') и 'освобождения' ('free') и переключению их, когда список 'выделения' пуст.
То, что было описано выше, включает в себя примеры предмета инновации. Конечно, невозможно описать каждую мыслимую комбинацию компонентов или методологий в целях описания заявленного изобретения, но специалист в данной области техники может осознать, что возможны многочисленные дополнительные комбинации и перестановки предмета инновации. Соответственно, заявленное изобретение подразумевается охватывающим все такие изменения, модификации и варианты, которые подпадают под сущность и объем, определяемые прилагаемой формулой изобретения.
В частности и относительно различных функций, выполняемых вышеописанными компонентами, устройствами, схемами, системами и т.п., термины (включая ссылку на "средства"), используемые для описания таких компонентов, подразумеваются соответствующими, если не указано иное, любому компоненту, который выполняет указанную функцию описанного компонента (например, функциональный эквивалент), даже если он не эквивалентен структурно раскрытой структуре, которая выполняет функцию в проиллюстрированных в материалах настоящей заявки примерных аспектах заявленного изобретения. В связи с этим также будет признано, что инновация включает в себя систему, а также машинно-читаемый носитель, содержащий исполняемые компьютером инструкции для выполнения действий и/или событий различных способов заявленного изобретения.
Кроме того, хотя конкретный признак предмета инновации, возможно, был раскрыт относительно только одной из нескольких реализаций, этот признак может быть объединен с одним или более другими признаками других реализаций, что может быть желательно и предпочтительно для любого заданного или конкретного варианта применения. Более того, в тех рамках, в которых термины "включает в себя" и "включающий" и их варианты используются либо в подробном описании, либо в формуле изобретения, эти термины подразумеваются инклюзивными аналогично термину "содержащий".
Claims (34)
1. Способ выделения памяти для памяти, которая приспособлена для осуществления к ней доступа в среде операционной системы многоядерного процессора, при этом способ включает в себя управление выделением памяти запрашивающим память частям многоядерного процессора посредством того, что:
получают множество разделенных безблокировочных списковых структур, причем каждая из разделенных безблокировочных списковых структур включает в себя соответственное множество элементов списка, при этом каждый из соответственных элементов списка соответствует соответственной секции памяти, которая на текущий момент является пригодной для выделения, причем разделение упомянутого множества разделенных безблокировочных списковых структур реализуется посредством применения адаптивной хеш-функции к каждому из множества значений ключа, которые соответствуют элементам топологии архитектуры многоядерного процессора;
по запросу выделения одной или более из упомянутых соответственных секций памяти процессору ядра для использования в качестве выделенной памяти, осуществляют поиск по упомянутому множеству разделенных безблокировочных списковых структур на предмет доступного элемента списка, который соответствует доступной соответственной секции памяти, которая на текущий момент является пригодной для выделения для использования в качестве выделенной памяти, каковой поиск выполняют с использованием адаптивной хеш-функции, к которой обращаются по ключу для соответственного хеширования для доступа к каждой из упомянутого множества разделенных безблокировочных списковых структур;
по нахождении упомянутого доступного элемента списка выделяют упомянутую доступную секцию памяти процессору ядра для использования в качестве выделенной памяти; и
динамически балансируют упомянутые доступные элементы списка среди упомянутого множества безблокировочных списковых структур в соответствии с метрикой балансировки, которая приспособлена для оптимизации выделения памяти.
2. Способ по п. 1, в котором упомянутые соответственные секции памяти содержат одно или более из: буферов фиксированного размера и буферов переменного размера.
3. Способ по п. 2, в котором упомянутые разделенные безблокировочные списковые структуры представляют собой структуры S-списка.
4. Способ по п. 1, в котором упомянутое получение множества разделенных безблокировочных списковых структур включает в себя этапы, на которых:
получают исходную безблокировочную списковую структуру, которая включает в себя исходное множество элементов списка, причем каждый из исходных элементов списка соответствует исходной соответственной секции памяти, которая на текущий момент является пригодной для выделения; и
разделяют исходную безблокировочную списковую структуру на разделенные безблокировочные списковые структуры так, что каждой безблокировочной списковой структуре из множества разделенных безблокировочных списковых структур назначается хеш-индекс, вычисляемый применением адаптивной хеш-функции к соответственному значению ключа из упомянутого множества значений ключа.
5. Способ по п. 1, в котором в адаптивной хеш-функции используются ключи в соответствии с архитектурой многоядерного процессора.
6. Способ по п. 1, в котором в адаптивной хэш-функции используются ключи в соответствии с индексом процессора.
7. Способ по п. 1, в котором в адаптивной хеш-функции используются ключи в соответствии с номером узла архитектуры неоднородного доступа к памяти (NUMA).
8. Способ по п. 1, в котором метрика балансировки приспособлена для балансировки ресурсов памяти.
9. Способ по п. 1, в котором метрика балансировки приспособлена для поддержания, по существу, числового равенства элементов памяти среди безблокировочных списковых структур.
10. Способ по п. 1, в котором метрика балансировки приспособлена для избежания избыточного выделения ресурсов памяти.
11. Способ по п. 1, в котором адаптивная хеш-функция приспособлена для размещения множества соответственных заголовков списков, каждый из которых ссылается на соответственные списковые структуры из разделенных безблокировочных списковых структур.
12. Система для управления выделением памяти для памяти, которая приспособлена для осуществления к ней доступа в среде операционной системы многоядерного процессора посредством управления выделением памяти запрашивающим память частям многоядерного процессора, каковая система содержит:
первый блок обработки, который изначально разделяет исходную безблокировочную списковую структуру на множество разделенных безблокировочных списковых структур с использованием адаптивной хеш-функции, к которой обращаются по ключу согласно архитектуре многоядерного процессора;
второй блок обработки, который изначально разделяет множество элементов списка среди упомянутого множества разделенных безблокировочных списковых структур, причем каждый из соответственных элементов списка соответствует соответственной секции памяти, которая на текущий момент является пригодной для выделения;
третий блок обработки, который, по запросу выделения памяти запрашивающему память процессору ядра осуществляет поиск по упомянутому множеству разделенных безблокировочных списковых структур на предмет доступного одного из упомянутых соответственных элементов списка и после нахождения доступного одного из соответственных элементов списка выделяет запрашивающему память процессору ядра упомянутую соответственную секцию памяти, которая на текущий момент является пригодной для выделения и которая соответствует найденному одному из соответственных элементов списка; и
четвертый блок обработки, который динамически балансирует упомянутые элементы списка среди упомянутого множества разделенных безблокировочных списковых структур в соответствии с метрикой балансировки, каковая метрика балансировки применяется для распределения элементов списка среди упомянутых разделенных безблокировочных списковых структур.
13. Система по п. 12, при этом упомянутые соответственные секции памяти содержат одно или более из: буферов фиксированного размера и буферов переменного размера, причем исходная безблокировочная списковая структура представляет собой структуру S-списка.
14. Система по п. 12, в которой при упомянутом разделении исходной безблокировочной списковой структуры на множество разделенных безблокировочных списковых структур исходная безблокировочная списковая структура разделяется на множество разделенных безблокировочных списковых структур с использованием адаптивной хеш-функции, к которой обращаются по ключу в соответствии с индексом процессора.
15. Система по п. 12, в которой при упомянутом разделении исходной безблокировочной списковой структуры на множество разделенных безблокировочных списковых структур исходная безблокировочная списковая структура разделяется на множество разделенных безблокировочных списковых структур с использованием адаптивной хеш-функции, к которой обращаются по ключу в соответствии с номером узла NUMA.
16. Способ управления выделением памяти запрашивающим память частям многоядерного процессора, содержащий этапы, на которых:
получают множество разделенных безблокировочных списковых структур, причем каждая из разделенных безблокировочных списковых структур включает в себя соответственное множество элементов списка, при этом каждый из соответственных элементов списка соответствует соответственной секции памяти, которая на текущий момент является пригодной для выделения, причем упомянутое множество разделенных безблокировочных списковых структур разделено с использованием адаптивной хеш-функции, к которой обращаются по ключу согласно архитектуре многоядерного процессора;
по запросу выделения одной или более из упомянутых соответственных секций памяти процессору ядра для использования в качестве выделенной памяти, осуществляют поиск по упомянутому множеству разделенных безблокировочных списковых структур на предмет доступного элемента списка, который соответствует доступной соответственной секции памяти, которая на текущий момент является пригодной для выделения для использования в качестве выделенной памяти, каковой поиск выполняют с использованием адаптивной хеш-функции;
по нахождении упомянутого доступного элемента списка выделяют упомянутую доступную секцию памяти процессору ядра для использования в качестве выделенной памяти; и
динамически балансируют упомянутые доступные элементы списка среди упомянутого множества безблокировочных списковых структур в соответствии с метрикой балансировки, которая приспособлена для оптимизации выделения памяти.
17. Способ по п. 16, в котором в адаптивной хэш-функции используются ключи в соответствии с индексом процессора.
18. Способ по п. 16, в котором в адаптивной хеш-функции используются ключи в соответствии с номером узла NUMA.
19. Способ по п. 16, в котором метрика балансировки приспособлена для балансировки ресурсов памяти.
20. Способ по п. 16, в котором адаптивная хеш-функция приспособлена для размещения множества соответственных заголовков списков, каждый из которых ссылается на соответственные списковые структуры из разделенных безблокировочных списковых структур.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/458,355 | 2012-04-27 | ||
US13/458,355 US9652289B2 (en) | 2012-04-27 | 2012-04-27 | Systems and methods for S-list partitioning |
PCT/US2013/037266 WO2013163008A1 (en) | 2012-04-27 | 2013-04-19 | Systems and methods for partitioning of singly linked lists for allocation memory elements |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2014143063A RU2014143063A (ru) | 2016-05-20 |
RU2639944C2 true RU2639944C2 (ru) | 2017-12-25 |
Family
ID=48289638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2014143063A RU2639944C2 (ru) | 2012-04-27 | 2013-04-19 | Системы и способы для разделения однонаправленных списков для выделения элементов памяти |
Country Status (8)
Country | Link |
---|---|
US (2) | US9652289B2 (ru) |
EP (1) | EP2842032B1 (ru) |
JP (1) | JP6275119B2 (ru) |
CN (1) | CN104254839B (ru) |
BR (1) | BR112014022764B1 (ru) |
RU (1) | RU2639944C2 (ru) |
TW (1) | TWI605340B (ru) |
WO (1) | WO2013163008A1 (ru) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652289B2 (en) | 2012-04-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Systems and methods for S-list partitioning |
US9372825B1 (en) * | 2013-02-27 | 2016-06-21 | Netapp, Inc. | Global non-volatile solid-state cache in a network storage system |
US9377954B2 (en) * | 2014-05-09 | 2016-06-28 | Advanced Micro Devices, Inc. | System and method for memory allocation in a multiclass memory system |
US9870328B2 (en) * | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
US10564865B2 (en) | 2016-03-22 | 2020-02-18 | Seagate Technology Llc | Lockless parity management in a distributed data storage system |
WO2018032519A1 (zh) * | 2016-08-19 | 2018-02-22 | 华为技术有限公司 | 一种资源分配方法、装置及numa系统 |
CN107944297B (zh) * | 2017-12-11 | 2020-11-24 | 北京奇虎科技有限公司 | 一种访问文件的控制方法及装置 |
EP3756092A4 (en) * | 2018-05-04 | 2021-04-14 | Samsung Electronics Co., Ltd. | APPARATUS AND METHOD FOR MANAGING A SHARED RESOURCE IN A MULTI-CORE PROCESSOR |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030121030A1 (en) * | 2001-12-21 | 2003-06-26 | Christopher Koob | Method for implementing dual link list structure to enable fast link-list pointer updates |
US20090259870A1 (en) * | 2008-04-09 | 2009-10-15 | Microsoft Corporation | Managing timers in a multiprocessor environment |
RU2390824C2 (ru) * | 2005-07-14 | 2010-05-27 | Нокиа Корпорейшн | Способ, устройство и компьютерный программный продукт, обеспечивающие поисковое решение для мобильного устройства, интегрированное с приложениями и использующее контекстную информацию |
US20100251250A1 (en) * | 2009-03-30 | 2010-09-30 | Microsoft Corporation | Lock-free scheduler with priority support |
RU2406127C2 (ru) * | 2007-09-18 | 2010-12-10 | Виктор Анатольевич Кущенко | Цифровой процессор кущенко в.а. |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02162439A (ja) * | 1988-12-15 | 1990-06-22 | Fujitsu Ltd | 共有メモリのフリーリスト管理方式 |
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
US6785888B1 (en) * | 1997-08-29 | 2004-08-31 | International Business Machines Corporation | Memory allocator for a multiprocessor computer system |
US6643754B1 (en) * | 2000-02-15 | 2003-11-04 | International Business Machines Corporation | System and method for dynamically allocating computer memory |
US6986015B2 (en) | 2001-12-10 | 2006-01-10 | Incipient, Inc. | Fast path caching |
US7016923B2 (en) | 2002-11-05 | 2006-03-21 | Sun Microsystems, Inc. | Multi-threaded garbage collector employing cascaded memory arrays of task identifiers to implement work stealing queues for task identification and processing |
US7069394B2 (en) | 2002-12-05 | 2006-06-27 | International Business Machines Corporation | Dynamic data routing mechanism for a high speed memory cloner |
US7587566B2 (en) | 2004-02-20 | 2009-09-08 | Microsoft Corporation | Realtime memory management via locking realtime threads and related data structures |
US7844973B1 (en) | 2004-12-09 | 2010-11-30 | Oracle America, Inc. | Methods and apparatus providing non-blocking access to a resource |
US7904688B1 (en) * | 2005-12-21 | 2011-03-08 | Trend Micro Inc | Memory management unit for field programmable gate array boards |
EP1936498A1 (en) * | 2006-12-21 | 2008-06-25 | International Business Machines Corporation | A method and system to manage memory accesses from multithread programs on multiprocessor systems |
US8700823B2 (en) * | 2007-03-15 | 2014-04-15 | Broadcom Corporation | Software driver interconnect framework |
US8495641B2 (en) * | 2007-06-29 | 2013-07-23 | International Business Machines Corporation | Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes |
US20090259780A1 (en) | 2008-04-10 | 2009-10-15 | Weistech Technology Co., Ltd. | Portable electronic device for controlling under-controlled devices |
US8190827B2 (en) * | 2009-02-27 | 2012-05-29 | Red Hat, Inc. | Memory sharing among computer programs |
US8078825B2 (en) * | 2009-03-11 | 2011-12-13 | Oracle America, Inc. | Composite hash and list partitioning of database tables |
TW201112125A (en) | 2009-09-16 | 2011-04-01 | Ibm | Method and system for operating an instance of a data structure |
US20110296437A1 (en) * | 2010-05-28 | 2011-12-01 | Devendra Raut | Method and apparatus for lockless communication between cores in a multi-core processor |
US9652289B2 (en) | 2012-04-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Systems and methods for S-list partitioning |
-
2012
- 2012-04-27 US US13/458,355 patent/US9652289B2/en active Active
-
2013
- 2013-04-15 TW TW102113317A patent/TWI605340B/zh not_active IP Right Cessation
- 2013-04-19 JP JP2015509034A patent/JP6275119B2/ja active Active
- 2013-04-19 BR BR112014022764-0A patent/BR112014022764B1/pt active IP Right Grant
- 2013-04-19 EP EP13720655.3A patent/EP2842032B1/en active Active
- 2013-04-19 CN CN201380022199.1A patent/CN104254839B/zh active Active
- 2013-04-19 WO PCT/US2013/037266 patent/WO2013163008A1/en active Application Filing
- 2013-04-19 RU RU2014143063A patent/RU2639944C2/ru active
-
2017
- 2017-05-15 US US15/595,088 patent/US10223253B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030121030A1 (en) * | 2001-12-21 | 2003-06-26 | Christopher Koob | Method for implementing dual link list structure to enable fast link-list pointer updates |
RU2390824C2 (ru) * | 2005-07-14 | 2010-05-27 | Нокиа Корпорейшн | Способ, устройство и компьютерный программный продукт, обеспечивающие поисковое решение для мобильного устройства, интегрированное с приложениями и использующее контекстную информацию |
RU2406127C2 (ru) * | 2007-09-18 | 2010-12-10 | Виктор Анатольевич Кущенко | Цифровой процессор кущенко в.а. |
US20090259870A1 (en) * | 2008-04-09 | 2009-10-15 | Microsoft Corporation | Managing timers in a multiprocessor environment |
US20100251250A1 (en) * | 2009-03-30 | 2010-09-30 | Microsoft Corporation | Lock-free scheduler with priority support |
Also Published As
Publication number | Publication date |
---|---|
EP2842032B1 (en) | 2020-05-06 |
BR112014022764B1 (pt) | 2021-10-13 |
RU2014143063A (ru) | 2016-05-20 |
EP2842032A1 (en) | 2015-03-04 |
US20170249243A1 (en) | 2017-08-31 |
TWI605340B (zh) | 2017-11-11 |
JP2015515076A (ja) | 2015-05-21 |
US20130290667A1 (en) | 2013-10-31 |
BR112014022764A2 (ru) | 2017-06-20 |
US10223253B2 (en) | 2019-03-05 |
CN104254839A (zh) | 2014-12-31 |
US9652289B2 (en) | 2017-05-16 |
CN104254839B (zh) | 2018-10-12 |
BR112014022764A8 (pt) | 2017-12-12 |
WO2013163008A1 (en) | 2013-10-31 |
JP6275119B2 (ja) | 2018-02-07 |
TW201405308A (zh) | 2014-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2639944C2 (ru) | Системы и способы для разделения однонаправленных списков для выделения элементов памяти | |
US9323677B2 (en) | Method, apparatus and computer programs providing cluster-wide page management | |
US9223709B1 (en) | Thread-aware cache memory management | |
EP2985702B1 (en) | Data processing method and device, and computer system | |
US9223712B2 (en) | Data cache method, device, and system in a multi-node system | |
US7624246B2 (en) | Method and system for memory allocation in a multiprocessing environment | |
US20170255397A1 (en) | Efficient implementation of queues and other data structures using processing near memory | |
WO2013177313A2 (en) | Processing structured and unstructured data using offload processors | |
US9632958B2 (en) | System for migrating stash transactions | |
CN110990154B (zh) | 一种大数据应用优化方法、装置及存储介质 | |
US20180322075A1 (en) | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests | |
US20210191777A1 (en) | Memory Allocation in a Hierarchical Memory System | |
US9542319B2 (en) | Method and system for efficient communication and command system for deferred operation | |
US9858185B1 (en) | Multi-tier data storage using inclusive/exclusive burst buffer caching based on reference counts | |
US12086622B2 (en) | Optimizing virtual machine scheduling on non-uniform cache access (NUCA) systems | |
US11989586B1 (en) | Scaling up computing resource allocations for execution of containerized applications | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
US11580023B2 (en) | Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program | |
US8484420B2 (en) | Global and local counts for efficient memory page pinning in a multiprocessor system | |
EP4312133A1 (en) | Image scaling cloud database | |
US11860785B2 (en) | Method and system for efficient communication and command system for deferred operation | |
US11086779B2 (en) | System and method of a highly concurrent cache replacement algorithm | |
US8688880B2 (en) | Centralized serialization of requests in a multiprocessor system | |
Ahn et al. | VeloxDFS: Streaming Access to Distributed Datasets to Reduce Disk Seeks |