RU2014143063A - Системы и способы для разделения однонаправленных списков для выделения элементов памяти - Google Patents
Системы и способы для разделения однонаправленных списков для выделения элементов памяти Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract 16
- 230000000903 blocking effect Effects 0.000 claims abstract 22
- 238000000605 extraction Methods 0.000 claims 1
- 238000002955 isolation Methods 0.000 claims 1
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)
- Storage Device Security (AREA)
- Memory System (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, в которой упомянутая подходящая метрика балансировки является одной из группы, содержащей поддержку, по существу, числового равенства элементов памяти среди безблокировочных списковых структур и избежание избыточного выделения ресурсов памяти.
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 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)
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 | 北京奇虎科技有限公司 | 一种访问文件的控制方法及装置 |
CN115605846A (zh) * | 2018-05-04 | 2023-01-13 | 三星电子株式会社(Kr) | 用于在多核处理器中管理可共享资源的设备和方法 |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
Family Cites Families (24)
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 |
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 |
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 |
-
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 RU RU2014143063A patent/RU2639944C2/ru active
- 2013-04-19 EP EP13720655.3A patent/EP2842032B1/en active Active
- 2013-04-19 WO PCT/US2013/037266 patent/WO2013163008A1/en active Application Filing
- 2013-04-19 CN CN201380022199.1A patent/CN104254839B/zh active Active
- 2013-04-19 JP JP2015509034A patent/JP6275119B2/ja active Active
- 2013-04-19 BR BR112014022764-0A patent/BR112014022764B1/pt active IP Right Grant
-
2017
- 2017-05-15 US US15/595,088 patent/US10223253B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015515076A (ja) | 2015-05-21 |
BR112014022764B1 (pt) | 2021-10-13 |
WO2013163008A1 (en) | 2013-10-31 |
BR112014022764A8 (pt) | 2017-12-12 |
US20170249243A1 (en) | 2017-08-31 |
CN104254839A (zh) | 2014-12-31 |
TW201405308A (zh) | 2014-02-01 |
JP6275119B2 (ja) | 2018-02-07 |
RU2639944C2 (ru) | 2017-12-25 |
CN104254839B (zh) | 2018-10-12 |
US20130290667A1 (en) | 2013-10-31 |
US9652289B2 (en) | 2017-05-16 |
TWI605340B (zh) | 2017-11-11 |
EP2842032B1 (en) | 2020-05-06 |
EP2842032A1 (en) | 2015-03-04 |
US10223253B2 (en) | 2019-03-05 |
BR112014022764A2 (ru) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2014143063A (ru) | Системы и способы для разделения однонаправленных списков для выделения элементов памяти | |
JP2015515076A5 (ru) | ||
CN102724277B (zh) | 虚拟机热迁移和部署的方法、服务器及集群系统 | |
US20190319895A1 (en) | Resource Scheduling Method And Apparatus | |
US20130263151A1 (en) | Consistent Hashing Table for Workload Distribution | |
KR20130093995A (ko) | 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템 | |
WO2015117565A1 (en) | Methods and systems for dynamically allocating resources and tasks among database work agents in smp environment | |
WO2017020742A1 (zh) | 负载均衡方法及设备 | |
US20150186184A1 (en) | Apparatus and method for optimizing system performance of multi-core system | |
JP2012522320A5 (ru) | ||
CN103905531A (zh) | 一种集群存储系统中转换节点间负载均衡方法 | |
RU2015120595A (ru) | Динамический выбор уровней хранилища | |
JP2008191949A (ja) | マルチコアシステムおよびマルチコアシステムの負荷分散方法 | |
US20150373094A1 (en) | Load sharing method and apparatus | |
WO2016197628A1 (zh) | 终端会议负载均衡方法、装置及系统 | |
AU2013271250A1 (en) | Virtualization management method and related apparatuses for managing hardware resources of a communication device | |
CN103257898A (zh) | 嵌入式系统中资源分配方法和系统 | |
CN104021029A (zh) | 一种空间信息云计算系统及其实现方法 | |
CN107969153B (zh) | 一种资源分配方法、装置及numa系统 | |
US20180293075A1 (en) | Data processing method and apparatus, and system | |
US8671232B1 (en) | System and method for dynamically migrating stash transactions | |
US9547590B2 (en) | Managing memory | |
US20150186186A1 (en) | Resource allocation in multi-core architectures | |
TW201633143A (zh) | 用於在非統一記憶體架構中提供改進的延遲的系統和方法(一) | |
JP6158751B2 (ja) | 計算機資源割当装置及び計算機資源割当プログラム |