日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

NVME CLI -- nvme 命令查看NVME设备内部状态

發(fā)布時(shí)間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NVME CLI -- nvme 命令查看NVME设备内部状态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • NVME 和 AHCI 性能比較
    • NVME-CLI nvme工具使用
      • 1. 安裝
      • 2. 命令綜述
      • 3. 基本命令演示
      • 4. NVME 固件設(shè)備升級(jí)


近期在做一些rocksdb on 新硬件的性能測(cè)試(flash ssd, nvme ssd , nvme optane ssd, optane persistent memory),由于底層一些設(shè)備的實(shí)現(xiàn)對(duì)我來(lái)說(shuō)還是知識(shí)盲區(qū),一些設(shè)備IO表現(xiàn)出來(lái)的行為完全是黑盒,讓人琢磨不透。
因此利用周末時(shí)間對(duì)基礎(chǔ)的AHCI + SATA 調(diào)度的傳統(tǒng)ssd 和 基于 NVME 協(xié)議調(diào)度的ssd 做了一個(gè)入門了解。
細(xì)粒度的參考可以直接讀官方文檔:NVME-doc

NVME 和 AHCI 性能比較

NAND 閃存是傳統(tǒng)ssd的存儲(chǔ)介質(zhì)。早期的ssd通過(guò)上層的AHCI(advanced host controller interface) + SATA協(xié)議進(jìn)行操作系統(tǒng)的塊設(shè)備驅(qū)動(dòng)層到底層物理設(shè)備的IO調(diào)度,但是這樣的組合AHCI + SATA 是為了傳統(tǒng)的HDD機(jī)械硬盤設(shè)計(jì)的,在如今ssd內(nèi)部核心技術(shù)的快速發(fā)展中已經(jīng)無(wú)法發(fā)揮出底層SSD的低延時(shí)和高性能的優(yōu)勢(shì)。為了發(fā)揮SSD高性能,固件廠商為SSD量身打造了一個(gè)協(xié)議標(biāo)準(zhǔn)NVME( Non-Volatile Memeory Express),且這個(gè)標(biāo)準(zhǔn)不僅可以應(yīng)用在NAND的存儲(chǔ)介質(zhì)上,也能夠應(yīng)用在高性能和低延時(shí)的3D XPoint 新型介質(zhì)上。

整體的NVME 協(xié)議架構(gòu)如下,總共分為四層,到最底層就是 nvme的subsystem:

nvme的subsystem

NVME和AHCI 相比的優(yōu)勢(shì)主要是以下三個(gè)方面:

  1. 低延時(shí)(Latency)
    傳統(tǒng)的HDD+sas/sata 隨機(jī)讀延時(shí)大概在ms量級(jí)
    NAND ssd + sas/sata 隨機(jī)讀延時(shí)在110us 左右
    基于NVME的NAND ssd 隨機(jī)讀延時(shí)在85us 左右,相比于sata的nand ssd 延時(shí)降低了20 us
    當(dāng)然3D XPoint + nvme 這樣的新型存儲(chǔ)介質(zhì) 延時(shí)只有10us左右(intel Optane p4800),這樣的硬件紅利帶來(lái)的效果還是很給力的。

    以上的延時(shí)都會(huì)體現(xiàn)在上層的應(yīng)用之中,尤其是新型存儲(chǔ)介質(zhì)搭配nvme協(xié)議 體現(xiàn)出的低延時(shí) 對(duì)上層應(yīng)用的正向反饋還是十分給力的。而且intel 近期仍然會(huì)推出更為給力的p5800(iops 和帶寬 相比于p4800 提升一倍以上,latency會(huì)降低40%-50%)。

    實(shí)現(xiàn)上來(lái)看,對(duì)硬盤存儲(chǔ)延時(shí)有影響的如下幾種:

    • 存儲(chǔ)介質(zhì)層面,閃存比傳統(tǒng)的機(jī)械硬盤快很多。(NAND是通過(guò) 基于 MOS場(chǎng)效應(yīng)的浮柵晶體管 實(shí)現(xiàn)的底層0,1bit位的互換, 而 機(jī)械硬盤則是電信號(hào) 磁信號(hào)之間的轉(zhuǎn)化,還夾雜著主流程上大量的機(jī)械運(yùn)動(dòng)。一個(gè)是純化學(xué)反應(yīng),一個(gè)是機(jī)械運(yùn)動(dòng)為主體,兩者性能當(dāng)然千差萬(wàn)別)

    • 控制器方面,sata ssd需要通過(guò)南僑控制器中轉(zhuǎn),再連接到CPU;而NVME的 pcie ssd主控可以和CPU直連。所以時(shí)延方面,PCIE ssd 更低。

    • 軟件接口方面:NVME 縮短了CPU 到ssd的指令路徑,比如NVME減少了對(duì)寄存器的訪問(wèn)次數(shù),使用了MSI-X中斷管理;并行&多線程優(yōu)化 – NVME減少了各個(gè)CPU核之間的鎖同步操作。

  2. 高性能
    理論上,IOPS= 隊(duì)列深度/IO延遲,所有IOPS的性能和隊(duì)列深度有很大的關(guān)系(但并不是正比,實(shí)際應(yīng)用中,隨著隊(duì)列深度的增加,IO延時(shí)也會(huì)增加)。
    SATA ssd 市面上能做到最好的IO深度是32,但目前企業(yè)級(jí)的PCIE ssd 隊(duì)列深度能夠達(dá)到128 甚至256才能發(fā)揮出其底層ssd的最高性能。 而在NVME標(biāo)準(zhǔn)下,最大的隊(duì)列深深度能夠達(dá)到64K。

  3. 低功耗
    NVME加入了自動(dòng)功耗狀態(tài)切換 和 動(dòng)態(tài)能耗管理功能。

NVME-CLI nvme工具使用

所以總上來(lái)看NVME 是現(xiàn)在新型存儲(chǔ)的標(biāo)準(zhǔn),所以我們做存儲(chǔ)的應(yīng)該上通應(yīng)用,下曉FM,且與時(shí)俱進(jìn)。
而且NVME 社區(qū)也維護(hù)了一套完整的工具來(lái)協(xié)助我們加深對(duì)NVME的理解NVME-CLI

關(guān)于NVME以及 NAND閃存的原理其實(shí)理解的非常淺薄,后續(xù)會(huì)持續(xù)補(bǔ)充。接下來(lái)回到本節(jié)的主題,將NVME的基本工具使用做一個(gè)整體的記錄。

1. 安裝

  • on ubuntu :
    https://github.com/linux-nvme/nvme-cli
    
  • on Centos/RHEL 7.x or 8x
    https://github.com/linux-nvme/nvme-cli
    

2. 命令綜述

注意,以下命令需要在root用戶下運(yùn)行,并不是所有的自命令,只是一些比較常用的命令。
建議在測(cè)試硬盤上使用,且明確命令的含義,以下的部分命令會(huì)刪除數(shù)據(jù)。

CommandDescription
nvme list查看所有連接到當(dāng)前系統(tǒng)的nvme設(shè)備:名稱,序列號(hào),大小,LBA 和 serial
nvme id-ctrl展示nvme 控制器和它所支持的一些特性
nvme id-ns展示nvme 的命名空間,優(yōu)化特性和支持特性
nvme format安全擦除SSD上的數(shù)據(jù),格式化LBA大小或保護(hù)信息以實(shí)現(xiàn)端到端數(shù)據(jù)保護(hù)
nvme sanitize安全得擦除SSD上的所有數(shù)據(jù)
nvme smart-log查看NVME的smart log信息:page的健康狀態(tài),溫度,穩(wěn)定性情況等
nvme fw-log查看NVME的固件日志,會(huì)打印每個(gè)entry的健康情況
nvme error-logNVME的異常日志
nvme reset重置NVME的控制器
nvme help查看幫助信息
nvme delete-ns指定設(shè)備刪除一個(gè)命名空間
nvme create-ns指定設(shè)備創(chuàng)建命名空間。比如可以為一個(gè)設(shè)備創(chuàng)建一個(gè)較小大小的命名空間,從而提升SSD的穩(wěn)定性,性能和延時(shí)?(具體原理還不太清楚)
nvme fw-download為一個(gè)設(shè)備下載一個(gè)新的固件系統(tǒng)
nvme fw-commit讓固件立即運(yùn)行

如下使用

nvme help

能夠看到大量的命令集

3. 基本命令演示

一些命令需要指定設(shè)備運(yùn)行,這里建議指定字符設(shè)備,即/dev/nvme0 這樣的,因?yàn)樽址O(shè)備文件獲取到的數(shù)據(jù)是直接從底層存儲(chǔ)中取出來(lái)的;如果指定/dev/nvme0n1這樣的塊設(shè)備,數(shù)據(jù)讀取會(huì)走操作系統(tǒng)buffer cache,可能有一些數(shù)據(jù)更新不及時(shí)。

  1. nvme id-ctrl /dev/nvme0 查看nvme controller 支持的一些特性

    NVME Identify Controller:
    vid       : 0x1c5f # PCIe vendor id
    ssvid     : 0x1c5f
    sn        : FL172100442 # serial number
    mn        : Z45C7032C22
    fr        : 2090500 # firm version 固件版本號(hào)
    rab       : 1
    ieee      : 00e0cf
    cmic      : 0
    mdts      : 5
    cntlid    : 0
    ver       : 0
    rtd3r     : 0
    rtd3e     : 0
    oaes      : 0
    ...
    ...
    
  2. nvme list 查看當(dāng)前環(huán)境的 nvme設(shè)備

  3. nvme id-ns /dev/nvme0 查看nvme的namespace,這個(gè)能夠非常方便得看到nvme內(nèi)部的LBA(邏輯地址和物理地址的映射表)使用情況等非常有用的信息。
    如果出現(xiàn)如下錯(cuò)誤:

    # nvme id-ns /dev/nvme0
    Error: requesting namespace-id from non-block device
    NVMe Status:INVALID_NS: The namespace or the format of that namespace is invalid(b) NSID:0
    

    這里就需要指定namespace的id了,通過(guò)
    nvme list-ns /dev/nvme0 查看當(dāng)前設(shè)備的name space

    # nvme list-ns /dev/nvme0
    [   0]:0x1
    

    然后再執(zhí)行nvme id-ns --namespace-id=0x1 /dev/nvme0 即可看到如下信息

    使用-H 命令能夠提升輸出結(jié)果的可讀性

  4. nvme smart-log /dev/nvme0 查看設(shè)備smart log信息

  5. nvme error-log /dev/nvme0 查看設(shè)備error 信息

4. NVME 固件設(shè)備升級(jí)

ssd 供應(yīng)商會(huì)跟隨ssd的研發(fā)周期性更新固件,跟進(jìn)固件的更新能夠保證一些關(guān)于bug-fix, 穩(wěn)定性提升的補(bǔ)丁包及時(shí)得到更新。當(dāng)然,固件升級(jí)的頻率也不會(huì)很高,一般一年不會(huì)超過(guò)5次。升級(jí)前可以和供應(yīng)商核對(duì)固件升級(jí)的版本信息。

確認(rèn)固件版本:

nvme id-ctrl /dev/nvme0 |grep "fr "

下載固件并應(yīng)用起來(lái)

nvme fw-download /dev/nvme0 -
nvme fw-commit /dev/nvme0 -a 0

這里注意下commit 過(guò)程中-a指定的action 模式有種,表示不同的含義

  • 0 : 下載的固件鏡像替換原有的固件鏡像,但并不會(huì)激活。即不會(huì)讓這個(gè)鏡像運(yùn)行起來(lái)
  • 1:下載的固件鏡像替換原有的固件鏡像,會(huì)在NVME reset之后運(yùn)行起來(lái)。(發(fā)生了熱插拔,斷電,上電也會(huì)運(yùn)行)
  • 2:由固件插槽指定的鏡像會(huì)在下次重置之后激活
  • 3: 獲取到的固件鏡像會(huì)被立即激活而不需要重置

下載好的固件,加入需要重置的話可以執(zhí)行如下命令:

nvme reset /dev/nvme0

本身并不是NVME的研發(fā)人員,使用的話其實(shí)只需要獲取一些基本的設(shè)備狀態(tài)信息就可以了,后續(xù)工作中如果需要知道更加詳細(xì)的NVME 設(shè)備內(nèi)部狀態(tài)信息,會(huì)再做一些更加細(xì)致的整理。

不過(guò)關(guān)于基礎(chǔ)的NAND,3D-XPoint, NVME 等實(shí)現(xiàn)還是需要持續(xù)探索,未來(lái)的存儲(chǔ)系統(tǒng)一定會(huì)結(jié)合新硬件來(lái)做,這樣才會(huì)有更加極致的性能。

總結(jié)

以上是生活随笔為你收集整理的NVME CLI -- nvme 命令查看NVME设备内部状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。