intel / intel/hyperscan

Improved memory managment for NUMA architectures

Open
#108 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
5.5k
Forks
816
Avg merge
4d 21h
Merged PRs (30d)
2

Description

While investigating Hyperscan for use in a DPI system I've noticed that the current memory allocation method will create a bottleneck for multi-threaded/multi-streamed NUMA (Non-Uniform Memory Architectures) systems, such as Linux. The bottleneck is created around the four static functions in the file alloc.c. It requires a mutli-threaded caller to wrap these methods with a critical region semaphore, mutex or spinlock. In addition, the static variables associated with these methods create false-sharing issues in the cache of multi-threaded systems.

Do you plan to improve the Hyperscan interface to improve memory management?

Possible solutions could include:

* Functions to create and place scratch and stream objects at specific memory locations, much like the hs_deserialize_at() function
* Create a new pair of functions for scratch and stream objects, one for discovering the size required for the allocation, and the second for placement of the object into a memory buffer
* Provide a C++ interface that accepts a virtualized memory management object as a parameter to the creation functions

Regards,
Daris Nevil

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.