在使用读写锁的pthread散列表中读取性能差【JAVA教程】

!
也想出现在这里? 联系我们
信息

在使用读写锁的pthread散列表中读取性能差,第1张

概述在使用读写锁的pthread散列表中读取性能

我已经把一个简单的关键值存储放在一起,它说的是Redis协议的一个子集。 它使用linux上的pthreads来共享哈希表; 我使用pthreads rwlocks来pipe理对这个表的访问。 我一直在使用Redis基准testing工具testingKV商店。

有了一个客户端,我可以每秒做大约2500次SET *** 作。 但是,它只能做到每秒25个GET。 我期望别的方法,所以这让我感到惊讶。 它在某种程度上可以扩展,所以如果我扔10个客户端,我会得到每秒近9000个SET和每秒250个GET。

我的GET代码很简单, 我locking表,find合适的散列表位置,并检查链接列表中的匹配键。 对于GET,当我完成时,我使用pthread_rwlock_rdlock和pthread_rwlock_unlock 。 对于SET,我使用pthread_rwlock_wrlock和pthread_rwlock_unlock 。 SET比GET复杂得多。

我还使用共享内存进程和自己的读/写锁实现了Plan 9的代码。 在那里,GET几乎和SET一样快,而不是慢100倍。 这让我觉得我的哈希表代码可能是好的; 我使用两个 *** 作系统完全相同的哈希表代码,我只是使用#defines为每个 *** 作系统select合适的锁(在两种情况下,接口是相同的,幸运的!)。

将每个数组对象添加到Hashtable

我对pthreads不是很有经验。 谁能帮我弄清楚为什么我的performance太糟糕了?

(注意:这不是一个高性能的KV商店,它是一个天真的书面testing应用程序/基准testing程序,通过为每个客户端分离一个新的线程,以最简单的方法处理请求)

我不知道rwlocks,但是使用pthreads进行条件锁定的经验是,在实时内核条件下唤醒速度更快。 您甚至可以使用chrt命令调整程序优先级。

总结

以上是内存溢出为你收集整理的在使用读写锁的pthread散列表中读取性能差全部内容,希望文章能够帮你解决在使用读写锁的pthread散列表中读取性能差所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞171 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容