带JNA的Cassandra速度慢(高IO)

带JNA的Cassandra速度慢(高IO),cassandra,jna,Cassandra,Jna,我们在一个具有64GB RAM、8GB堆大小、32核CPU、Java1.7的系统上使用Cassandra2.0.14。 加载JNA时(按照生产设置中的建议),它会对性能产生负面影响,尤其是与HDD=>一起使用时,它会显著增加IO等待时间。 看起来JNA只有在与SSD磁盘结合使用时才能正常工作。否则最好不要使用JNA 我的问题是: 有人有类似的经历吗?Java如何可能超越本机文件系统操作(通过JNA访问) 我们可以在没有JNA的情况下使用Cassandra进行生产吗?有副作用吗 结果(按性能排序)

我们在一个具有64GB RAM、8GB堆大小、32核CPU、Java1.7的系统上使用Cassandra2.0.14。 加载JNA时(按照生产设置中的建议),它会对性能产生负面影响,尤其是与HDD=>一起使用时,它会显著增加IO等待时间。 看起来JNA只有在与SSD磁盘结合使用时才能正常工作。否则最好不要使用JNA

我的问题是:

有人有类似的经历吗?Java如何可能超越本机文件系统操作(通过JNA访问)

我们可以在没有JNA的情况下使用Cassandra进行生产吗?有副作用吗

结果(按性能排序):

a)HDD+JNA 表现最差。高IO等待

b)硬盘,无JNA 表现不错。低IO等待,但Cassandra CPU使用率相当高(500%)

c)SSD+JNA 似乎提供了最好的性能。低IO等待。卡桑德拉CPU使用率低(300%)。但我们不能总是使用SSD。这是一个测试,对我来说不是一个解决方案


谢谢。

好的,Cassandra使用JNA将JVM锁定到内存中,并使用mlockall来避免JVM被调出。我想如果操作系统决定把JVM换成磁盘,性能会很差


我知道在Cassandra的早期版本中,JNA也被用来创建硬链接,但由于Java>=7本机支持这种功能,我认为Cassandra的最新版本使用Java API而不是JNA来创建硬链接。

谢谢您的回答。我不确定情况是否如此。在我的例子中,当JNA与HDD一起使用时,情况变得更糟。这真是出乎意料。