RU2011144807A - Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений - Google Patents

Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений Download PDF

Info

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
Application number
RU2011144807/08A
Other languages
English (en)
Other versions
RU2517238C2 (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 RU2011144807A publication Critical patent/RU2011144807A/ru
Application granted granted Critical
Publication of RU2517238C2 publication Critical patent/RU2517238C2/ru

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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

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, в которой второй поток должен установить частичный индикатор повторного хеширования корневого сегмента, когда только часть элементов содержания корневого сегмента повторно хеширована.
RU2011144807/08A 2009-04-08 2009-04-08 Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений RU2517238C2 (ru)

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)

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

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

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