Linux 有人能推荐一个支持复杂数据的高性能共享内存API吗?

Linux 有人能推荐一个支持复杂数据的高性能共享内存API吗?,linux,Linux,我正在考虑将一个旧的驱动程序移植到用户空间中,该驱动程序生成一组大型复杂的数据表,因为这些数据表已经变得足够大,内存消耗是一个严重的问题 由于性能非常关键,而且会有16-32个数据的同时读取器,因此我们认为应该使用共享内存模型替换旧的基于/dev的代码接口,该模型允许客户端直接搜索表,而不是直接查询守护进程 问题是——最好的方法是什么?我可以直接使用shm_open(),但这可能需要我设计自己的记录锁定,甚至可能需要为共享内存设计ISAM数据结构 有没有提供基于散列的查找机制的高性能共享内存AP

我正在考虑将一个旧的驱动程序移植到用户空间中,该驱动程序生成一组大型复杂的数据表,因为这些数据表已经变得足够大,内存消耗是一个严重的问题

由于性能非常关键,而且会有16-32个数据的同时读取器,因此我们认为应该使用共享内存模型替换旧的基于/dev的代码接口,该模型允许客户端直接搜索表,而不是直接查询守护进程

问题是——最好的方法是什么?我可以直接使用shm_open(),但这可能需要我设计自己的记录锁定,甚至可能需要为共享内存设计ISAM数据结构


有没有提供基于散列的查找机制的高性能共享内存API,而不是编写我自己的代码来重温20世纪70年代?数据是完全数字的,搜索键是8、16或32字节长的固定长度位字段

这是我想写一段时间的东西,但总有一些更紧迫的事情要做

不过,对于大多数共享密钥数据RAM存储的用例来说,这是最简单的答案

在您的情况下,它看起来是较低级别的,所以它memcached,虽然速度很快,但可能不是最好的答案。我会尝试使用
shmem
块。它们的速度非常快,因此即使您使用一个简单的锁来包装访问,您仍然可以获得高性能的访问

对于更复杂的任务,我会搜索无锁结构(一些链接:,,)。我甚至在不久前写了一篇文章,将它集成到一个内核中,但事实证明它很难与现有的实现保持一致。不过,你可能会感兴趣