OpenMPDK / KVSSD

KV SSD host software including APIs and drivers
Other
229 stars 55 forks source link

KV-SSD internals #43

Closed manojps closed 4 years ago

manojps commented 4 years ago

I am trying to understand the internals of KV-SSD and at what granularity the KV device is implemented in the KV Emulator.

  1. In the FAQ page you mentioned that KV-SSD does not support offset read/write. But on page 17 of a SNIA KV-SSD presentation the diagram seems to insinuate that a key-value pair (KVP) is directly fetched from a page. For a scenario, where a physical KV-SSD page stores multiple KVPs, and an application has read for a specific KVP, does the KV-SSD reads the whole page in the device cache, gets the requested KVP from the page content and return to the device driver? Or the KV-SSD reads only the target KVP from the page.

  2. The above presentation also mentions that value has 32B granularity. Since, KV-SSD does not support offset read/write, what would such a granularity signify for read and write? Is it just that the physical device would read/write values in multiples of 32B?

  3. What does the User/Device Hash Key signifies (page 17 of the above mentioned presentation)? Is it a hash of the key in the key-value pair provided by an application?

  4. What is stored in the metadata section, as depicted in page 17 of the above mentioned presentation? What is it used for?

  5. Does KV ADI play a role similar to file systems in block SSDs? If yes, then how these two are similar or dissimilar? If no, then what is the role of KV ADI?

  6. How KV I/F command sends data that is too big for one I/F command to handle?

hao86yan commented 4 years ago
  1. For the latest firmware, offset read is already supported.
  2. We recommend customers to access KV SSD through Samsung's KV API. The KV API will handle the KV pairs. BTW, in KV API, the value's granularity is 1Byte.
  3. The hash value of key is calculated by firmware. User applications don't need pay any attention to it.
  4. The contents of the metadata depends on the implementation of the KV SSD firmware. It's implementation-specific.
  5. KV ADI is the core of KV API. If adapts the KV API to Kernel Space driver, User space driver, and KV emulator. Block SSD and KV SSD are totally different. KV API provides the access entry to KV SSD.
  6. At present, the maximum value size that KV SSD supports is 2MB. We are developing the KV multiple device solution that support big-size data storage.