O NVMe tem páginas de registro e a única coisa perto do que você quer é encontrada na página de registro 02h, ele tem as seguintes informações:
- Data Units Read
- Unidades de dados escritas
- Comandos de leitura do host
- Comandos de gravação do host
- Tempo de Ocupação do Controlador
Assim, você pode obter o número de comandos de leitura e gravação do host e dividi-los com o tempo de ocupação do controlador, se fizer isso em intervalos relativamente curtos e subtrair o valor atual do valor anterior, obterá o tempo médio de um comando nesse intervalo de tempo. Não é bonita, mas perto o suficiente.
Se você estiver no Linux, você pode usar o comando nvme-cli para obter esses dados.
O que precede é tudo sobre latência interna; se você quiser uma latência de ponta a ponta, terá que medi-la em seu próprio aplicativo. Você tem um mecanismo similar em / proc / diskstats no Linux que mostra o número de comandos e o "tempo ocupado" deles na média.