ceph / ceph/ceph-nvmeof

avoid busy polling when use libspdk_nvmf for discovery service

Open
#77 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
132
Forks
69
Avg merge
1d 7h
Merged PRs (30d)
47

Description

The SPDK discovery controller(https://github.com/ceph/ceph-nvmeof/issues/63) and the NVMF infrastructure it needs rely on the SPDK event system (pollers). We don't want the Ceph DS to busy-poll, . We're looking at some options for addressing this problem.
The SPDK polling mechanism has an "interrupt mode", which blocks reactor threads on a set of sockets with select(), rather than busy polling. This only works on pollers that are created with a poll rate. Some of the pollers in NVMF are not created with a poll rate, and would probably busy-poll even if interrupt mode was enabled. There are a couple of things we can try in an SPDK app to avoid this. Among the possible solutions are some blunt instruments that will just force all reactor threads to sleep for a few clock ticks periodically. The impact that will have on IO latency is probably OK for an SPDK app that only provides a discovery controller.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the SPDK discovery controller and NVMF event-system pollers described in the issue, focusing on interrupt mode and pollers without a poll rate. Compare the proposed approaches and verify that the selected solution prevents the Ceph discovery service from busy-polling while keeping discovery-controller I/O latency acceptable.

Written by the indexing model from the issue text.

Assessment

Domain
infrastructure, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.