PCI-E 的速度可以透過 lspci (PCI Express Gen 1 , 2 , 3) 來查,- https://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
请教下,读取SATA速率时,link1,link2的选择依据是什么?
在你的例子中,为何link1就是你的sata设备的速度,我在系统中发现,该目录下存在多个link文件
烦请不吝告知
電腦通常不只有一個 SATA Bus ,並且需要依據你的硬碟是接在哪一個 SATA Bus 上,可以先進 BIOS 看一下你的 SATA Bus 連接狀況.
正好最近在看这个问题。
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