Hi all, before I begin, a little introduction: I lead the Infinispan project [1] which is an in-memory data grid written in Java. Infinispan stores data in memory in "caches" which are k/v data structures where the "v" can either be a raw binary blob or a structured object (we default to ProtoBuf). Caches can be backed by a persistent store. We have a number of such stores (file, rocksdb, database, etc). I've been working on a Ceph cache store. The initial intention was to use the rados-java client [2] but unfortunately this uses JNA. While JNA is very convenient because it doesn't require building the additional native bits that JNI requires, its performance overhead is ... terrible. I have therefore started working on a JNI Rados client which is looking quite promising. I hope to share my initial implementation with you soon, including some benchmark comparisons against the JNA counterpart. In the meantime, I need some insights into how librados handles the "aio" set of functions, in particular related to whether there is any blocking involved and how the threading model works (if there is any). Thanks Tristan [1] https://infinispan.org [2] https://github.com/ceph/rados-java
participants (1)
-
Tristan Tarrant