RU2011144807A - Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений - Google Patents
Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений Download PDFInfo
- Publication number
- RU2011144807A RU2011144807A RU2011144807/08A RU2011144807A RU2011144807A RU 2011144807 A RU2011144807 A RU 2011144807A RU 2011144807/08 A RU2011144807/08 A RU 2011144807/08A RU 2011144807 A RU2011144807 A RU 2011144807A RU 2011144807 A RU2011144807 A RU 2011144807A
- Authority
- RU
- Russia
- Prior art keywords
- segment
- segments
- hash table
- hashing
- index
- Prior art date
Links
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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
Abstract
1. Способ, содержащий:выделяют второе количество сегментов для хеш-таблицы, совместно одновременно используемой множеством потоков, хеш-таблица, имеющая первое количество сегментов, второе количество сегментов, по меньшей мере, равное первому количеству сегментов, и каждый из второго количества сегментов логически отображают на соответствующий родительский один из первого или второго количества сегментов; ипубликуют обновленную емкость хеш-таблицы, включая в себя первое и второе количество сегментов, в которых выделение закончено, путем публикации обновленной емкости и без выполнения повторного хеширования элементов содержания первого количества сегментов.2. Способ по п.1, дополнительно содержащий: выполняют проверку, не блокируя сегмент, чтобы определить, необходимо ли повторное хеширование.3. Способ по п.1, дополнительно содержащий: затем выполняют повторное хеширование элементов содержания первого сегмента из первого количества сегментов до второго сегмента второго количества сегментов, выполняя операцию поиска для пары данных, присутствующей в первом сегменте.4. Способ по п.1, дополнительно содержащий: вычисляют индекс сегмента, используя обновленную емкость, получают доступ к сегменту, используя индекс сегмента, определяют, что сегмент не был повторно хеширован, и рекурсивно вычисляют родительский индекс сегмента для родительского сегмента, пока повторно хешированный корневой сегмент не будет найден, на который сегмент логически отображает, используя обновленную емкость.5. Способ по п.4, дополнительно содержащий: выполняют повторное хеширование, по меньшей мере, части элементов содержания повт�
Claims (20)
1. Способ, содержащий:
выделяют второе количество сегментов для хеш-таблицы, совместно одновременно используемой множеством потоков, хеш-таблица, имеющая первое количество сегментов, второе количество сегментов, по меньшей мере, равное первому количеству сегментов, и каждый из второго количества сегментов логически отображают на соответствующий родительский один из первого или второго количества сегментов; и
публикуют обновленную емкость хеш-таблицы, включая в себя первое и второе количество сегментов, в которых выделение закончено, путем публикации обновленной емкости и без выполнения повторного хеширования элементов содержания первого количества сегментов.
2. Способ по п.1, дополнительно содержащий: выполняют проверку, не блокируя сегмент, чтобы определить, необходимо ли повторное хеширование.
3. Способ по п.1, дополнительно содержащий: затем выполняют повторное хеширование элементов содержания первого сегмента из первого количества сегментов до второго сегмента второго количества сегментов, выполняя операцию поиска для пары данных, присутствующей в первом сегменте.
4. Способ по п.1, дополнительно содержащий: вычисляют индекс сегмента, используя обновленную емкость, получают доступ к сегменту, используя индекс сегмента, определяют, что сегмент не был повторно хеширован, и рекурсивно вычисляют родительский индекс сегмента для родительского сегмента, пока повторно хешированный корневой сегмент не будет найден, на который сегмент логически отображает, используя обновленную емкость.
5. Способ по п.4, дополнительно содержащий: выполняют повторное хеширование, по меньшей мере, части элементов содержания повторно хешированного корневого сегмента до сегмента во время выполнения или до выполнения поиска пары данных запроса поиска.
6. Способ по п.5, дополнительно содержащий: устанавливают частичный индикатор повторного хеширования, когда только часть элементов содержания корневого сегмента повторно хеширована.
7. Способ по п.4, дополнительно содержащий поиск сегментов для пары данных запроса поиска и возврат пары данных и без выполнения повторного хеширования элементов содержания сегментов.
8. Способ по п.1, дополнительно содержащий: в ответ на операцию поиска первым потоком, который не находит запрашиваемую пару данных в первом сегменте первого количества сегментов, сравнивают текущую величину емкости хеш-таблицы со значением емкости хеш-таблицы, использовавшимся при определении индекса сегмента для операции поиска, и если величина тока и значение являются разными, вычисляют индекс самого близкого сегмента наследника, получают доступ к самому близкому сегменту наследника и определяют состояние повторного хеширования для самого близкого сегмента наследника.
9. Способ по п.8, дополнительно содержащий: повторно запускают операцию поиска, если состояние повторного хеширования не обозначает новое (повторно не хешированное) состояние.
10. Способ по п.1, дополнительно содержащий, объединяют множество выделений в одиночное выделение для второго количества сегментов.
11. Способ по п.1, дополнительно содержащий: публикуют множество выделений и публикуют обновленную емкость один раз для множества выделений.
12. Изделие, содержащее машиносчитываемый носитель информации, включающий в себя инструкции, которые, при их выполнении устройством, обеспечивают возможность для устройству выполнить способ, содержащий:
выполняют операцию просмотра хеш-таблицы, совместно используемой одновременно множеством потоков, включающую в себя вычисление индекса сегмента для первого сегмента хеш-таблицы, используя первое значение емкости, получение доступа для хеш-таблицы, получая доступ к первому сегменту, используя индекс сегмента, и определение, что первый сегмент не включает в себя пару данных операции поиска;
сравнивают текущее значение емкости емкости хеш-таблицы с первым значением емкости, и если текущее значение емкости и первое значение являются разными, вычисляют обновленный индекс сегмента, используя текущее значение емкости; и
если обновленный индекс сегмента и индекс сегмента являются разными, вычисляют следующий индекс сегмента, получая доступ к следующему сегменту, соответствующему обновленному индексу сегмента, и определяющему состояние повторного хеширования для следующего сегмента.
13. Изделие по п.12, в котором способ дополнительно содержит повторный запуск операции поиска, если состояние повторного хеширования не обозначает новое состояние.
14. Изделие по п.12, в котором способ дополнительно содержит повторное хеширование сегмента хеш-таблицы, получая доступ к сегменту во время операции поиска.
15. Изделие по п.12, в котором операция поиска выполняется первым потоком, и хеш-таблица расширяется вторым потоком после того, как первый поток получит первое значение емкости для вычисления, и третий поток начинает повторное хеширование первого сегмента прежде, чем первый поток получит доступ к первому сегменту.
16. Система, содержащая:
микропроцессор, включающий в себя первой ядро и второе ядро, каждое предназначенное для выполнения одного или больше потоков, в котором первый поток должен выделять второе количество сегментов для хеш-таблицы, совместно используемой одновременно множеством потоков, причем хеш-таблица ранее имела первое количество сегментов, второе количество сегментов, по меньшей мере, равно первому количеству сегментов, где каждое второе количество сегментов логически отображают либо на соответствующего родителя одного из первого количества сегментов, или на один из второго количества сегментов, и публикации обновленной емкости хеш-таблицы, включая в себя первое и второе количество сегментов, в которой первый поток должен закончить выделение путем публикации обновленной емкости и без выполнения повторного хеширования элементов содержания первого количества сегментов, и второй поток должен выполнить операцию поиска в первом сегменте первого количества сегментов, не проверяя переменную блокировки, чтобы определить, необходимо ли повторное хеширование; и
совместно используемое запоминающее устройство, соединенное с микропроцессором, для содержания хеш-таблицы, доступ к хеш-таблице одновременно получают, по меньшей мере, некоторые из множества потоков.
17. Система по п.16, в которой третий поток должен выполнить повторное хеширование элементов содержания от первого сегмента, содержащего первое количество сегментов, до второго сегмента, содержащего второе количества сегментов, при выполнении операции поиска для пары данных, присутствующих в первом сегменте.
18. Система по п.16, в которой второй поток должен вычислять индекс сегмента для сегмента, содержащего второе количество сегментов, используя обновленную емкость, получить доступ к сегменту, используя индекс сегмента, определить, что сегмент не был повторно хеширован, и рекурсивно вычислять индекс родительского сегмента для родительского сегмента, на который сегмент был логически отображен, пока не будет найден повторно хешированный корневой сегмент.
19. Система по п.18, в которой второй поток должен повторно хешировать, по меньшей мере, часть элементов содержания повторно хешированного корневого сегмента до сегмента во время выполнения или до выполнения поиска пары данных запроса на поиск.
20. Система по п.19, в которой второй поток должен установить частичный индикатор повторного хеширования корневого сегмента, когда только часть элементов содержания корневого сегмента повторно хеширована.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2009/000169 WO2010117294A1 (en) | 2009-04-08 | 2009-04-08 | Performing concurrent rehashing of a hash table for multithreaded applications |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2011144807A true RU2011144807A (ru) | 2013-05-20 |
RU2517238C2 RU2517238C2 (ru) | 2014-05-27 |
Family
ID=42936410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2011144807/08A RU2517238C2 (ru) | 2009-04-08 | 2009-04-08 | Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений |
Country Status (7)
Country | Link |
---|---|
US (1) | US9563477B2 (ru) |
JP (1) | JP5401676B2 (ru) |
KR (1) | KR101367450B1 (ru) |
CN (1) | CN102460392B (ru) |
RU (1) | RU2517238C2 (ru) |
SG (1) | SG175109A1 (ru) |
WO (1) | WO2010117294A1 (ru) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515965B2 (en) | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US9444757B2 (en) | 2009-04-27 | 2016-09-13 | Intel Corporation | Dynamic configuration of processing modules in a network communications processor architecture |
US8539199B2 (en) * | 2010-03-12 | 2013-09-17 | Lsi Corporation | Hash processing in a network communications processor architecture |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US8606791B2 (en) * | 2011-06-17 | 2013-12-10 | Microsoft Corporation | Concurrently accessed hash table |
US8812555B2 (en) * | 2011-06-18 | 2014-08-19 | Microsoft Corporation | Dynamic lock-free hash tables |
US9009106B1 (en) | 2011-08-10 | 2015-04-14 | Nutanix, Inc. | Method and system for implementing writable snapshots in a virtualized storage environment |
US8850130B1 (en) | 2011-08-10 | 2014-09-30 | Nutanix, Inc. | Metadata for managing I/O and storage for a virtualization |
US9747287B1 (en) | 2011-08-10 | 2017-08-29 | Nutanix, Inc. | Method and system for managing metadata for a virtualization environment |
US8863124B1 (en) | 2011-08-10 | 2014-10-14 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9652265B1 (en) | 2011-08-10 | 2017-05-16 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types |
US8549518B1 (en) | 2011-08-10 | 2013-10-01 | Nutanix, Inc. | Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment |
US20130080481A1 (en) * | 2011-09-27 | 2013-03-28 | Sybase, Inc. | Extreme large space allocation |
US9772866B1 (en) | 2012-07-17 | 2017-09-26 | Nutanix, Inc. | Architecture for implementing a virtualization environment and appliance |
FI124397B (en) * | 2013-01-04 | 2014-08-15 | Tellabs Oy | A method and apparatus for defining a paging system for a network element of a software configurable network |
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9519668B2 (en) * | 2013-05-06 | 2016-12-13 | International Business Machines Corporation | Lock-free creation of hash tables in parallel |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9471710B2 (en) | 2013-06-14 | 2016-10-18 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
US10503716B2 (en) * | 2013-10-31 | 2019-12-10 | Oracle International Corporation | Systems and methods for generating bit matrices for hash functions using fast filtering |
US10250519B2 (en) | 2014-05-21 | 2019-04-02 | Oracle International Corporation | System and method for supporting a distributed data structure in a distributed data grid |
WO2015179092A1 (en) * | 2014-05-21 | 2015-11-26 | Oracle International Corporation | System and method for supporting a distributed data structure in a distributed data grid |
US9405699B1 (en) | 2014-08-28 | 2016-08-02 | Dell Software Inc. | Systems and methods for optimizing computer performance |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US10108653B2 (en) | 2015-03-27 | 2018-10-23 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US9401959B1 (en) | 2015-12-18 | 2016-07-26 | Dropbox, Inc. | Network folder resynchronization |
US10255208B2 (en) * | 2016-03-04 | 2019-04-09 | Toshiba Memory Corporation | Data transfer apparatus and data transfer system |
US10467103B1 (en) | 2016-03-25 | 2019-11-05 | Nutanix, Inc. | Efficient change block training |
US10467390B1 (en) | 2016-08-18 | 2019-11-05 | Snap Inc. | Cyclically dependent checks for software tamper-proofing |
US11797539B2 (en) * | 2019-09-12 | 2023-10-24 | Oracle International Corporation | Accelerated building and probing of hash tables using symmetric vector processing |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3164257B2 (ja) | 1993-02-02 | 2001-05-08 | 日本電信電話株式会社 | 索引方法 |
US6115802A (en) | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
GB9811574D0 (en) * | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
US6427039B1 (en) * | 1999-01-25 | 2002-07-30 | Massachusetts Institute Of Technology | Wavelength shifting and optical switching |
US6578083B2 (en) * | 1999-02-05 | 2003-06-10 | Pluris, Inc. | Method for monitoring data flow at a node on a network facilitating data transfer on at least one link having at least one class of service |
US6578131B1 (en) * | 1999-04-27 | 2003-06-10 | Microsoft Corporation | Scaleable hash table for shared-memory multiprocessor system |
US6915296B2 (en) * | 2002-10-29 | 2005-07-05 | Agere Systems Inc. | Incremental reorganization for hash tables |
US7287131B1 (en) | 2003-03-21 | 2007-10-23 | Sun Microsystems, Inc. | Method and apparatus for implementing a fully dynamic lock-free hash table |
US7277897B2 (en) * | 2003-08-01 | 2007-10-02 | Oracle International Corporation | Dynamic reassignment of data ownership |
US7702628B1 (en) * | 2003-09-29 | 2010-04-20 | Sun Microsystems, Inc. | Implementing a fully dynamic lock-free hash table without dummy nodes |
US7669241B2 (en) * | 2004-09-30 | 2010-02-23 | Alcatel-Lucent Usa Inc. | Streaming algorithms for robust, real-time detection of DDoS attacks |
US20060075486A1 (en) | 2004-10-01 | 2006-04-06 | Paul Lin | Self-contained token device for installing and running a variety of applications |
US7464103B2 (en) * | 2004-10-29 | 2008-12-09 | Microsoft Corporation | Multi-level nested open hashed data stores |
JP4768009B2 (ja) * | 2005-03-11 | 2011-09-07 | ロックソフト リミテッド | データ・クラスタを使用する冗長性の少ないデータを格納する方法 |
RU71016U1 (ru) * | 2006-05-10 | 2008-02-20 | Алексей Юрьевич Попов | Электронная вычислительная машина с многими потоками команд и одним потоком данных |
US20080021908A1 (en) * | 2006-07-20 | 2008-01-24 | Barrett Alan Trask | Synchronization and dynamic resizing of a segmented linear hash table |
US7809916B1 (en) * | 2007-09-28 | 2010-10-05 | Oracle America, Inc. | Method for dynamically refining locks in resizable concurrent hashing |
US8392368B1 (en) * | 2010-08-27 | 2013-03-05 | Disney Enterprises, Inc. | System and method for distributing and accessing files in a distributed storage system |
-
2009
- 2009-04-08 KR KR1020117026459A patent/KR101367450B1/ko not_active IP Right Cessation
- 2009-04-08 JP JP2012504646A patent/JP5401676B2/ja not_active Expired - Fee Related
- 2009-04-08 RU RU2011144807/08A patent/RU2517238C2/ru not_active IP Right Cessation
- 2009-04-08 SG SG2011073145A patent/SG175109A1/en unknown
- 2009-04-08 WO PCT/RU2009/000169 patent/WO2010117294A1/en active Application Filing
- 2009-04-08 CN CN200980159762.3A patent/CN102460392B/zh not_active Expired - Fee Related
- 2009-04-08 US US13/260,438 patent/US9563477B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102460392B (zh) | 2016-04-27 |
RU2517238C2 (ru) | 2014-05-27 |
CN102460392A (zh) | 2012-05-16 |
JP5401676B2 (ja) | 2014-01-29 |
JP2012523610A (ja) | 2012-10-04 |
KR101367450B1 (ko) | 2014-02-25 |
SG175109A1 (en) | 2011-11-28 |
KR20120014141A (ko) | 2012-02-16 |
WO2010117294A1 (en) | 2010-10-14 |
US20120036134A1 (en) | 2012-02-09 |
US9563477B2 (en) | 2017-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2011144807A (ru) | Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений | |
US10866971B2 (en) | Hash collision tables for relational operations | |
US8805850B2 (en) | Hardware-accelerated relational joins | |
US9529881B2 (en) | Difference determination in a database environment | |
US11294920B2 (en) | Method and apparatus for accessing time series data in memory | |
Abubakar et al. | Performance evaluation of nosql systems using ycsb in a resource austere environment | |
Breslow et al. | Horton tables: Fast hash tables for {In-Memory}{Data-Intensive} computing | |
Mahajan et al. | Improving the energy efficiency of relational and NoSQL databases via query optimizations | |
US9430355B2 (en) | System diagnostics with thread dump analysis | |
US8903814B2 (en) | Indexing timestamp with time zone value | |
RU2013155626A (ru) | Рекомендательная система для пополнения данных | |
CN109416682B (zh) | 用于管理数据库的系统和方法 | |
RU2016108105A (ru) | Интеллектуальное уточнение поиска | |
US9734176B2 (en) | Index merge ordering | |
US9977747B2 (en) | Identification of page sharing opportunities within large pages | |
JP2003186683A5 (ru) | ||
WO2014067298A1 (zh) | 实时检索信息获取方法、装置及服务器 | |
US8938442B2 (en) | Systems and methods for efficient paging of data | |
US8412701B2 (en) | Multi-dataset global index | |
US20220358178A1 (en) | Data query method, electronic device, and storage medium | |
CN106201917A (zh) | 一种数据处理系统和方法 | |
US8805811B2 (en) | Executing user-defined function on a plurality of database tuples | |
US10565204B2 (en) | Hash collision tables for relational join operations | |
Ren et al. | A low-latency multi-version key-value store using B-tree on an FPGA-CPU platform | |
US20110246436A1 (en) | Binary Method for Locating Data Rows in a Compressed Data Block |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20180409 |