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

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

Info

Publication number
RU2014143063A
RU2014143063A RU2014143063A RU2014143063A RU2014143063A RU 2014143063 A RU2014143063 A RU 2014143063A RU 2014143063 A RU2014143063 A RU 2014143063A RU 2014143063 A RU2014143063 A RU 2014143063A RU 2014143063 A RU2014143063 A RU 2014143063A
Authority
RU
Russia
Prior art keywords
blocking list
list structures
memory elements
structures
blocking
Prior art date
Application number
RU2014143063A
Other languages
English (en)
Other versions
RU2639944C2 (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

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)
  • Memory System (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

1. Способ управления выделением множества элементов (206) памяти, хранимых в одной или более безблокировочных списковых структурах (204), причем эти безблокировочные списковые структуры доступны в среде операционной системы многоядерного процессора, при этом способ содержит этапы, на которых:разделяют упомянутые одну или более безблокировочные списковые структуры (204);изначально разделяют упомянутое множество элементов (206) памяти среди упомянутых одной или более безблокировочных списковых структур;при запросе выделения элемента памяти ядерному процессору, ищут в упомянутых одной или более безблокировочных списковых структурах доступный элемент памяти;по нахождении доступного элемента памяти выделяют этот доступный элемент (214) памяти ядерному процессору; идинамически балансируют элементы памяти среди одной или более упомянутых безблокировочных списковых структур в соответствии с подходящей метрикой балансировки.2. Способ по п. 1, в котором этап разделения упомянутых одной или более безблокировочных списковых структур дополнительно состоит в том, что разделяют упомянутые одну или более безблокировочные списковые структуры на первую структуру данных.3. Способ по п. 2, в котором первая структура данных представляет собой одну из группы, содержащей хэш структуру(202) и структуру данных динамического переключения списков (250).4. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответствии с архитектурой многоядерного процессора.5. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответствии с индексом процессора.6. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответст

Claims (10)

1. Способ управления выделением множества элементов (206) памяти, хранимых в одной или более безблокировочных списковых структурах (204), причем эти безблокировочные списковые структуры доступны в среде операционной системы многоядерного процессора, при этом способ содержит этапы, на которых:
разделяют упомянутые одну или более безблокировочные списковые структуры (204);
изначально разделяют упомянутое множество элементов (206) памяти среди упомянутых одной или более безблокировочных списковых структур;
при запросе выделения элемента памяти ядерному процессору, ищут в упомянутых одной или более безблокировочных списковых структурах доступный элемент памяти;
по нахождении доступного элемента памяти выделяют этот доступный элемент (214) памяти ядерному процессору; и
динамически балансируют элементы памяти среди одной или более упомянутых безблокировочных списковых структур в соответствии с подходящей метрикой балансировки.
2. Способ по п. 1, в котором этап разделения упомянутых одной или более безблокировочных списковых структур дополнительно состоит в том, что разделяют упомянутые одну или более безблокировочные списковые структуры на первую структуру данных.
3. Способ по п. 2, в котором первая структура данных представляет собой одну из группы, содержащей хэш структуру
(202) и структуру данных динамического переключения списков (250).
4. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответствии с архитектурой многоядерного процессора.
5. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответствии с индексом процессора.
6. Способ по п. 3, в котором в упомянутой хэш структуре используются ключи в соответствии с номером узла NUMA.
7. Способ по п. 1, в котором упомянутые структуры данных динамической перестановки списков дополнительно содержат безблокировочную списковую структуру помещения и безблокировочную списковую структуру извлечения, при этом упомянутый этап разделения одной или более безблокировочных списковых структур дополнительно состоит в том, что переставляют указатели между упомянутой безблокировочной списковой структурой помещения и упомянутой безблокировочной списковой структурой извлечения в соответствии с метрикой для балансировки ресурсов памяти.
8. Система для управления выделением множества элементов (206) памяти, хранимых в одной или более безблокировочных списковых структурах (204), причем эти безблокировочные списковые структуры доступны в среде операционной системы многоядерного процессора, при этом упомянутая система содержит:
множество ядерных процессоров (106), причем эти ядерные процессоры разделены на множество сокетов (104) процессора;
набор совместно используемой памяти (108), при этом
упомянутая совместно используемая память доступна с по меньшей мере одним из упомянутых сокетов процессора;
каналы (110) связи между по меньшей мере двумя сокетами процессора;
набор из одной или более безблокировочных списковых структур (204), где каждая безблокировочная списковая структура приспособлена хранить по меньшей мере один элемент памяти, причем данный набор из одной или более безблокировочных списковых структур приспособлен быть разделенным так, чтобы обеспечить выделение элементов памяти ядерным процессорам при запросе на выделения элементов памяти;
модуль (202) выделения, при этом данный модуль выполнен с возможностью принимать запросы на выделения элементов памяти от упомянутого множества ядерных процессоров;
при этом модуль выделения выполнен с возможностью динамически регулировать элементы памяти между упомянутым набором из одной или более безблокировочных списковых структур в соответствии с подходящей метрикой балансировки.
9. Система по п. 8, в которой модуль выделения выполнен с возможностью исполнения на одном из упомянутых ядерных процессоров (106).
10. Система по п. 9, в которой упомянутая подходящая метрика балансировки является одной из группы, содержащей поддержку, по существу, числового равенства элементов памяти среди безблокировочных списковых структур и избежание избыточного выделения ресурсов памяти.
RU2014143063A 2012-04-27 2013-04-19 Системы и способы для разделения однонаправленных списков для выделения элементов памяти RU2639944C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/458,355 US9652289B2 (en) 2012-04-27 2012-04-27 Systems and methods for S-list partitioning
US13/458,355 2012-04-27
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 true RU2014143063A (ru) 2016-05-20
RU2639944C2 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
CN107969153B (zh) * 2016-08-19 2021-06-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 长沙新弘软件有限公司 一种基于后备列表的内存管理方法

Family Cites Families (24)

* 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
US7111289B2 (en) 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
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
US10769215B2 (en) 2005-07-14 2020-09-08 Conversant Wireless Licensing S.A R.L. Method, apparatus and computer program product providing an application integrated mobile device search solution using context information
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
US8112570B2 (en) * 2007-03-15 2012-02-07 Broadcom Corporation Pipelined buffer interconnect with trigger core controller
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
RU2406127C2 (ru) 2007-09-18 2010-12-10 Виктор Анатольевич Кущенко Цифровой процессор кущенко в.а.
US7941688B2 (en) 2008-04-09 2011-05-10 Microsoft Corporation Managing timers in a multiprocessor environment
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
US20100251250A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Lock-free scheduler with priority support
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

Also Published As

Publication number Publication date
RU2639944C2 (ru) 2017-12-25
BR112014022764B1 (pt) 2021-10-13
JP2015515076A (ja) 2015-05-21
CN104254839B (zh) 2018-10-12
WO2013163008A1 (en) 2013-10-31
BR112014022764A8 (pt) 2017-12-12
US9652289B2 (en) 2017-05-16
US20130290667A1 (en) 2013-10-31
CN104254839A (zh) 2014-12-31
US20170249243A1 (en) 2017-08-31
TWI605340B (zh) 2017-11-11
EP2842032B1 (en) 2020-05-06
JP6275119B2 (ja) 2018-02-07
US10223253B2 (en) 2019-03-05
EP2842032A1 (en) 2015-03-04
BR112014022764A2 (ru) 2017-06-20
TW201405308A (zh) 2014-02-01

Similar Documents

Publication Publication Date Title
RU2014143063A (ru) Системы и способы для разделения однонаправленных списков для выделения элементов памяти
JP2015515076A5 (ru)
US10514955B2 (en) Method and device for allocating core resources of a multi-core CPU
CN102724277B (zh) 虚拟机热迁移和部署的方法、服务器及集群系统
CN108268317B (zh) 一种资源分配方法及装置
US20130263151A1 (en) Consistent Hashing Table for Workload Distribution
US20180157729A1 (en) Distributed in-memory database system and method for managing database thereof
US20150127834A1 (en) Optimizing placement of virtual machines
US9332067B2 (en) Load sharing method and apparatus
WO2015117565A1 (en) Methods and systems for dynamically allocating resources and tasks among database work agents in smp environment
US20150186184A1 (en) Apparatus and method for optimizing system performance of multi-core system
US20130339977A1 (en) Managing task load in a multiprocessing environment
CN103905531A (zh) 一种集群存储系统中转换节点间负载均衡方法
JP2008191949A (ja) マルチコアシステムおよびマルチコアシステムの負荷分散方法
WO2016199955A1 (ko) 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법
AU2013271250A1 (en) Virtualization management method and related apparatuses for managing hardware resources of a communication device
US20180227139A1 (en) Method of Terminal-Based Conference Load-Balancing, and Device and System Utilizing Same
CN107969153B (zh) 一种资源分配方法、装置及numa系统
US10599436B2 (en) Data processing method and apparatus, and system
CN104021029A (zh) 一种空间信息云计算系统及其实现方法
US8671232B1 (en) System and method for dynamically migrating stash transactions
US20140059560A1 (en) Resource allocation in multi-core architectures
JP6158751B2 (ja) 計算機資源割当装置及び計算機資源割当プログラム
US10891056B2 (en) Virtualization of memory compute functionality
CN115202859A (zh) 一种内存扩展方法以及相关设备