SATA / SAS Link Speed

PCI-E 的速度可以透過 lspci (PCI Express Gen 1 , 2 , 3) 來查,- http://benjr.tw/10842 但 SATA / SAS Link Speed 就沒有辦法透過 lspci 的指令查詢的到了.須要使用下面的指令來查詢.

SATA

除了 dmesg 還有 hdparm ,甚至於直接查 /sys/class/ata_link/link1/sata_spd 也是可以的.

#dmesg -print or control the kernel ring buffer

# dmesg | grep -i sata
[    2.630625] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3f impl SATA mode
[    2.988260] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    2.988285] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    2.988306] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    2.988324] ata6: SATA link down (SStatus 0 SControl 300)
[    2.988343] ata5: SATA link down (SStatus 0 SControl 300)
[    2.988366] ata3: SATA link down (SStatus 0 SControl 300)

SATA 為 3Gbps (SATA 2.0 的裝置),換算時需注意 20% overhead (每八個位元的資料串上用十位元來加以編碼).

  • Generation 1(1.5 Gbit/s) = (1.5G*0.8)/8 = 150 MByte/s
  • Generation 2( 3 Gbit/s) = (3G*0.8)/8 = 300 MByte/s
  • Generation 3( 6 Gbit/s) = (6G*0.8)/8 = 600 MByte/s

#hdparm – get/set SATA/IDE device parameters

# hdparm -I /dev/sda |grep -i speed
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)

/sys/class/ata_link/link#
這個目錄下的幾個檔案都是與 SATA 速度相關的(路徑可以能會不同,可以直接用 find 尋找下面這幾個檔案).

  • hw_sata_spd_limit : Maximum speed supported by the connected SATA device.
  • sata_spd_limit : Maximum speed imposed by libata.
  • sata_spd : Current speed of the link [1.5, 3Gps,…].
# cat /sys/class/ata_link/link1/sata_spd
3.0 Gbps

SAS

至於 SAS 可以透過哪些指令來觀察呢!!透過 dmesg , hdparm 好像是不行,只能直接看 /sys 的資訊了.
目錄 /sys/class/sas_phy/phy-0\:0/ 下的這幾個檔案都是與 SAS 速度相關的 (路徑可以能會不同,可以直接用 find 尋找下面這幾個檔案).

  • maximum_linkrate
  • maximum_linkrate_hw : 硬體支援最高的速度.
  • minimum_linkrate
  • minimum_linkrate_hw : 硬體支援最低的速度.
  • negotiated_linkrate 目前硬碟的速度
#cat /sys/class/sas_phy/phy-0\:0/maximum_linkrate
6.0 Gbit

SAS 為 6Gbps (SAS 2.0 的裝置),換算時需注意 20% overhead (每八個位元的資料串上用十位元來加以編碼).

  • Generation 1(3 Gbit/s) = 2.4 Gbit/s (3*0.8) = 300 MByte/s
  • Generation 2(6 Gbit/s) = 4.8 Gbit/s (6*0.8) = 600 MByte/s
  • Generation 3(12 Gbit/s) = 9.6 Gbit/s (12*0.8) = 1200 MByte/s

比較簡單的方式是可以透過 smartctl -l sasphy 就可以檢視 SAS 硬碟 Link Speed (SATA 指令為 sataphy)

root@ubuntu:~# smartctl -l sasphy /dev/sdb
root@ubuntu:~# smartctl -l sataphy /dev/sdb
沒有解決問題,試試搜尋本站其他內容

5 thoughts on “SATA / SAS Link Speed

  1. 请教下,读取SATA速率时,link1,link2的选择依据是什么?
    在你的例子中,为何link1就是你的sata设备的速度,我在系统中发现,该目录下存在多个link文件
    烦请不吝告知

    1. 電腦通常不只有一個 SATA Bus ,並且需要依據你的硬碟是接在哪一個 SATA Bus 上,可以先進 BIOS 看一下你的 SATA Bus 連接狀況.

    2. 正好最近在看这个问题。
      1 确定硬盘是在哪个SATA port下。用lsscsi可以看出来盘符,此时可以看出来host id。例如
      [6:0:0:0] disk ATA INTEL SSDSC2BB12 CS01 /dev/sds
      第一个6就是host id。
      2 确定系统里一共有几个SATA port,就会对应几个scsi host(这里的用语可能不准确)。例如:
      [root@localhost library]# lsscsi -H
      [0] megaraid_sas
      [1] usb-storage
      [2] ahci
      [3] ahci
      [4] ahci
      [5] ahci
      [6] ahci
      [7] ahci
      3 此时,host id从2-7都是SATA,对应link 0-5。刚才看到的sds的host id是6,对应的link就是4,因此应该看link4。
      如果有兴趣,可以联系我继续讨论。邮箱:zeewee86@gmail.com

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料