RU2639944C2 - Системы и способы для разделения однонаправленных списков для выделения элементов памяти - Google Patents

Системы и способы для разделения однонаправленных списков для выделения элементов памяти Download PDF

Info

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
Application number
RU2014143063A
Other languages
English (en)
Other versions
RU2014143063A (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 RU2014143063A publication Critical patent/RU2014143063A/ru
Application granted granted Critical
Publication of RU2639944C2 publication Critical patent/RU2639944C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/5011Allocation 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/5016Allocation 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management 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, в котором адаптивная хеш-функция приспособлена для размещения множества соответственных заголовков списков, каждый из которых ссылается на соответственные списковые структуры из разделенных безблокировочных списковых структур.
RU2014143063A 2012-04-27 2013-04-19 Системы и способы для разделения однонаправленных списков для выделения элементов памяти RU2639944C2 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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