Linux 硬件相關_pcie_cpu_io_mem_gpu
※,pcie 的 BDF 詳細介紹,及用法實例、linux 查看pci設備信息命令詳解
此文中貌似有一處錯誤,即BDF的格式,參考另一篇博客中:在 Linux 中,PCI 設備的設備名稱(Device Name)通常以 "domain:bus:slot:function" 的形式來表示(這里的slot應該就是device),其中冒號分隔開的各個數字具有以下含義:
- domain:表示 PCI 設備所在的 PCI 域(Domain),通常為一個 16 位的十六進制數,用于區分不同的 PCI 域。在大多數情況下,這個值為 0000。
- bus:表示 PCI 設備所在的總線(Bus),通常為一個 8 位的十六進制數,用于區分不同的總線。一個系統可以具有多個總線。
- slot:表示 PCI 設備所在的插槽(Slot),通常為一個 5 位的十六進制數,用于區分不同的插槽。一個總線上可以有多個插槽。
- function:表示 PCI 設備的功能(Function),通常為一個 3 位的十六進制數,用于區分同一插槽上的不同功能。一個插槽上可以有多個功能。
通過這種編號方式,可以唯一標識一個 PCI 設備的位置信息。在上述示例中,"0000:03:00.0" 表示該設備位于 PCI 域 0000,總線 03,插槽 00,功能 0。請注意,這些數字可能會因系統配置而有所不同,具體取決于你的系統和相應的 PCI 設備。
※,lspci命令詳解:lspci 命令用于顯示 Linux 系統上的設備和驅動程序, 可以顯示連接到 PCI 總線的所有設備。該命令由 pciutils 包提供,可用于各種基于 Linux 和 BSD 的操作系統。常見的選項如下
lspci -h//查看幫助lspci直接運行命令會列出 PCI 總線及其連接的設備。-v選項會顯示每個設備的詳細信息,你可以使用-vv或-vvv來獲取更多的設備細節-nn顯示設備上所有pcie設備的vendor id 和device id 以及文字描述。設備名稱后的方括號內有用冒號分隔的數字,即供應商(10de)和設備ID(2208)。輸出表明 Nvidia Corporation 制造的設備的供應商 ID 為 10de-
lspci -nn |grep -i nvidia 3b:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] [10de:2208] (rev a1) 3b:00.1 Audio device [0403]: NVIDIA Corporation GA102 High Definition Audio Controller [10de:1aef] (rev a1)
-
-D顯示domain編號(domain numbers),一般情況下都是0000。- Selection of devices: 選擇PCI設備
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]根據指定信息查找PCI設備。- 一個PCI設備的完整形式如:
0000:3b:00.0。-s后面跟的篩選條件是完整形式的一部分,如:3b:、3b:00等, 但注意也不是任意一部分。一些示例如下(base) [root@master33 ~]$lspci|grep -i nvidia 3b:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] (rev a1) 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -s 3b #報錯了 lspci: -s: Invalid slot number (base) [root@master33 ~]$lspci -s 3b: 3b:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] (rev a1) 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -s 3b:00 3b:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] (rev a1) 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -s 3b:00.1 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -s :00.1 18:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe 19:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -s 00.1 18:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe 19:00.1 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 2-port Gigabit Ethernet PCIe 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$
- 一個PCI設備的完整形式如:
-d [<vendor>]:[<device>][:<class>]根據供應商ID和設備ID查找PCI設備。-
(base) [root@master33 ~]$lspci -d 10de: #注意必須加冒號 3b:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] (rev a1) 3b:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1) (base) [root@master33 ~]$lspci -d 10de: -nn 3b:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] [10de:2208] (rev a1) 3b:00.1 Audio device [0403]: NVIDIA Corporation GA102 High Definition Audio Controller [10de:1aef] (rev a1) # 除了顯卡之外,還有一個 Nvidia 音頻設備。實際上它們都屬于同一張 GeForce RTX 3080 Ti 卡
-
-k選項顯示內核加載了哪些驅動程序模塊。如下例:可以看到額外顯示了兩行:正在使用的內核驅動程序 和 內核模塊,其中后者列出了可用于支持該設備的模塊(base) [root@master33 ~]$lspci -nn -k -d 10de: 3b:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080 Ti] [10de:2208] (rev a1) Subsystem: LeadTek Research Inc. Device [107d:2208] Kernel driver in use: nvidia Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia 3b:00.1 Audio device [0403]: NVIDIA Corporation GA102 High Definition Audio Controller [10de:1aef] (rev a1) Subsystem: LeadTek Research Inc. Device [107d:2208] Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel- 同步PCI設備的最新狀態。新設備和供應商總是在不斷迭代。如果看到顯示為
unknown的設備,說明你的 PCI 設備 ID 數據庫可能已過時。有兩種方法可以檢查更新-Q選項會使用 DNS 查詢中央數據庫,當然,這需要聯網。- 也可以通過運行命令
update-pciids來更新本地 PCI ID 數據庫。數據庫更新需要一些時間,也需要聯網。
與其他命令的比較:除了lspci命令以外,還有一些其他的工具也可以用于檢測PCI設備信息,lspci命令只能列出PCI設備信息;而lshw和hwinfo命令可以列出更多的硬件。實踐中可以互相補充使用!
- lspcmcia:用于檢測PCMCIA設備信息
- lshw:可以列出系統中所有硬件設備的詳細信息
- hwinfo:也可以列出系統中所有硬件設備的詳細信息
※,lshw命令詳解:lshw(List Hardware)是一個強大的命令,可以讓用戶獲取底層硬件信息。該命令在管理員需要了解和診斷系統硬件配置時非常實用。
- man lshw //查看用法
- lahw -class <class-name> // lshw -short,可以查看有哪些class類別
- 與其他命令的比較:Linux系統中有很多命令可以提供關于系統硬件的信息,如lspci、lsusb和lsblk等,但這些命令都只能提供特定類型的硬件信息。相比之下,lshw能提供更全面的硬件信息,因此在需要獲取大量硬件信息時,lshw是一個非常好的選擇
※,Linux性能分析:http://www.rzrgm.cn/bakari/p/10515977.html
CPU篇
cpu個數、核數、線程數是cpu的三個重要概念。一般個人PC上只有一個物理cpu,服務器上可以有多個物理cpu。一個物理cpu可以有多個核(比如4核,8核等等);一個物理核可以使用超線程技術超出多個虛擬核(即線程),一般是一個物理核對應2個線程,比如4核8線程等等,但也有1個核對應更多線程的,比如IBM的power7處理器是8核32線程。
服務器67.27cpu情況: Intel(R) Xeon(R) Silver 4210R CPU @ 2.40GHz; 2顆物理cpu,每顆cpu是10核20線程,總共是2*20個線程。
- ·lscpu· // 在 Linux 下,類似 lsxxx 這樣的命令都是用來查看基本信息的,如 ls 查看當前目錄文件信息,lscpu 就用來查看 CPU 信息,類似還有 lspci 查看 PCI 信息,lsmem查看內存信息。
- ·cat /proc/cpuinfo· // /proc 目錄是內核透傳出來給用戶態使用的,里面記錄著很多信息文件,比如還有內存文件 meminfo 等。可以使用 cat /proc/cpuinfo 查看 CPU 信息。
- 獲取cpu型號,以及總線程數
- `cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`
- 查看 CPU 物理個數: ·grep 'physical id' /proc/cpuinfo | sort -u | wc -l·
- 查看 CPU 核心數量: ·grep 'core id' /proc/cpuinfo | sort -u | wc -l·(這里查到的是一顆物理cpu的核心數)
- 查看 CPU 線程數: ·grep 'processor' /proc/cpuinfo | sort -u | wc -l·(這里查到的是所有物理cpu總的線程數,單顆cpu的線程數需要除以物理cpu的個數)
- 查看 CPU 型號: ·dmidecode -s processor-version· // 可以通過輸出的行數得出此機器有多少物理cpu個數。
- 查看 CPU 的詳細信息:·cat /proc/cpuinfo·
- 獲取cpu型號,以及總線程數
- ·dmidecode· // 這個命令是用來獲取 DMI(Desktop Management Interface)硬件信息的,包括 BIOS、系統、主板、處理器、內存、緩存等等。
- `dmidecode -t processor` //查看CPU信息
- `top` //參看之前筆記.
- 之后按1可以展開所有核數??
- ·ps· // 參看之前筆記。
- ·vmstat· // 這個命令基本能看出當前機器的運行狀態和問題,非常強大。可以使用 ·vmstat n· 后面跟一個數字,表示每隔 ns 顯示系統的狀態,信息包括 CPU、內存和 IO 等。幾個關鍵的字段:
- r 值:表示在 CPU 運行隊列中等待的進程數,如果這個值很大,表示很多進程在排隊等待執行,CPU 壓力山大。
- in 和 cs 值:表示中斷次數和上下文切換次數,這兩個值越大,表示系統在進行大量的進程(或線程)切換。切換的開銷是非常大的,這時候應該減少系統進程(或線程)數。
- us、sy、id、wa 值:這些值上面也提到過,分別表示用戶空間進程,系統進程,空閑和 IO 等待的 CPU 占比,這里只有 id 很高是好的,表示系統比較閑,其他值飚高都不好。
- `dstat` //這個命令也很強大,能顯示 CPU 使用情況,磁盤 IO 情況,網絡發包情況和換頁情況,而且輸出是彩色的,可讀性比較強,相對于 vmstat 更加詳細和直觀。使用時可以直接輸入命令,也可以帶相關參數。
上面說的是系統級的分析,現在來看單個進程的 CPU 使用情況分析,以便于我們能對占用 CPU 過多的進程進行調試和分析,優化程序性能。
- `pidstat` // 這個命令默認統計系統信息,也包括 CPU、內存和 IO 等,我們常用 pidstat -u -p pid [times] 來顯示 CPU 統計信息。如下統計 pid = 802 的 CPU 信息
- `pidstat -u -p 802 1`
- `strace` // 這個命令用來分析進程的系統調用情況,可以看進程都調用了哪些庫和哪些系統調用,進而可以進一步優化程序。比如我們分析 ls 的系統調用情況,就可以用 strace ls.
- `strace -p 802` // attach(附著)到一個正在運行的進程上進行分析,比如我 attach 到 802 這個進程顯示.
- `perf` // 進階工具
- ·systemtap· //高級工具
- ·kprobe· // 擼碼工具
內存篇
- ·cat /proc/meminfo· // 我們比較關心的是下面幾個字段:
- MemTotal:系統總內存,由于 BIOS、內核等會占用一些內存,所以這里和配置聲稱的內存會有一些出入,比如我這里配置有 2G,但其實只有 1.95G 可用。
- MemFree:系統空閑內存。
- MemAvailable:應用程序可用內存。有人會比較奇怪和 MemFree 的區別,可以從兩個層面來區分,MemFree 是系統層面的,而 MemAvailable 是應用程序層面的。系統中有些內存雖然被使用了但是有一部分是可以回收的,比如 Buffers、Cached 及 Slab 這些內存,這部分可以回收的內存加上 MemFree 才是 MemAvailable 的內存值,這是內核通過特定算法算出來的,是一個估算值。
- Buffers:緩沖區內存
- Cached:緩存
- `free` //幾個字段和上面 /proc/meminfo 的字段是對應的。還有個 shared 字段,這個是多進程的共享內存空間,不常用。
- `free -h` //要看比較直觀的值,可以加 -h 參數
- MemTotal = used + free + buff/cache(單位 K)
- 從應用程序的角度講,Linux實際可用內存=free + buffer/cache。或者直接看available,兩個值稍微有些差別。
- 我們注意到 free 很小,buff/cache 卻很大,這是 Linux 的內存設計決定的,Linux 的想法是內存閑著反正也是閑著,不如拿出來做系統緩存和緩沖區,提高數據讀寫的速率。但是當系統內存不足時,buff/cache 會讓出部分來,非常靈活的操作。
- ·dmidecode· // 同CPU分析
- `dmidecode -t memory` // 查看內存
- `vmstat` // 這個命令也是非常常用了。但對于內存,顯示信息有限。它更多是用于進行系統全局分析和 CPU 分析。
進程內存使用情況分析:
- ·top / htop· // 參見另一篇筆記
- ·ps· //參見另一篇筆記
- ·pmap· // ·pmap -x pid· 這個命令用于查看進程的內存映像信息,可以看到該進程內存被哪些庫、哪些文件所占用,據此我們定位程序對內存的使用。幾個字段介紹一下:
- Address:占用內存的文件的內存起始地址。
- Kbytes:占用內存的字節數。
- RSS:實際占用內存大小。(Resident Set Size)。
- Dirty:臟頁大小。
- Mapping:占用內存的文件,[anon] 為已分配的內存,[stack] 為程序堆棧
- 最后的 total 為統計的總值。我們可以使用 pmap -x pid | tail -1 這樣只顯示最后一行,循環顯示最后一行,達到監控該進程的目的。使用`while true; do pmap -x pid | tail -1; sleep 1; done`
高階工具:
- ·atop·
- `memstat`
- `Valgrind` // 對于內存泄漏有一個比較常用的檢測工具
IO篇
IO 和 存儲密切相關,存儲可以概括為磁盤,內存,緩存,三者讀寫的性能差距非常大,磁盤讀寫是毫秒級的(一般 0.1-10ms),內存讀寫是微妙級的(一般 0.1-10us),cache 是納秒級的(一般 1-10ns)。但這也是犧牲其他特性為代價的,速度快的,價格越貴,容量也越小。IO 性能這塊,我們更多關注的是讀寫磁盤的性能。
磁盤基本信息:
- ·fdisk -l· // 小寫L。查看所有已掛載和未掛載的磁盤信息,包括磁盤容量,扇區大小,IO 大小等信息,但不顯示文件系統類型。
- Linux系統的分區格式使用的是xyzN的格式,xy表示的是硬盤類型,比如sd表示是SCSI硬盤,z表示的是硬盤序號,第一塊硬盤是a,第二塊硬盤是b, 要查詢Linux系統上有幾塊硬盤,只要注意這一點即可;N表示的是分區號。
- 類似 /dev/mapper/centos-root 這樣的磁盤其實是邏輯卷,不是物理磁盤。
- fdisk命令會顯示磁盤的字節大小(精確大小),顯示的GB單位是按照1GB=1000MB計算的。
- ·df -h· // 只可以查看已經掛載的磁盤使用情況。查看磁盤使用情況,通常看磁盤使用率。這里顯示的G是以1024為進制的!!!
- ·df -T· // -T查看磁盤分區文件系統類型。
-
[root@BJ01-KY-TOOL01 iflyer]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 79G 0 part └─centos-root 253:0 0 79G 0 lvm / sdb 8:16 0 700G 0 disk /data1 sr0 11:0 1 1024M 0 rom [root@BJ01-KY-TOOL01 iflyer]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 79G 3.5G 76G 5% / devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 3.3G 29G 11% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/sdb 689G 358G 297G 55% /data1 /dev/sda1 1014M 143M 872M 15% /boot tmpfs 6.3G 0 6.3G 0% /run/user/1000 172.22.145.122:/data1/SongBank 27T 21T 6.4T 77% /data1/SongBank tmpfs 6.3G 0 6.3G 0% /run/user/0 ############關于devtmpfs和tmpfs########### tmpfs是建立在內存的虛擬文件系統,默認情況下最大占用內存一半大小的空間 devtmpfs:http://www.mybatis.cn/archives/1639.html
- ·lsblk· // 可以清晰的查看出主機上有幾塊磁盤(包括掛載的和未掛載的)。這里顯示的單位都是計算機標準單位,即按照1GB=1024MB計算的。
- ·lsblk -f· // 顯示文件系統類型.
- ·blkid· // blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢
- ·parted -l· // 可以查看未掛載的文件系統類型,以及哪些分區尚未格式化.
- ·file [OPTION...] [FILE...]· // Determine type of FILEs. file命令可以查看文件的類型。
- ·file -s /dev/sda3· // file命令的-s參數可以treat special (block/char devices) files as ordinary ones。可以查看磁盤的分區文件系統類型。
- 判斷磁盤是機械硬盤還是固態硬盤
- ·cat /sys/block/sdb/queue/rotational· // 0代表固態盤,1代表機械盤
- ·lsblk -d -o name,rota· // 參數 -d 表示顯示設備名稱,參數 -o 表示僅顯示特定的列。 rota值為1代表機械盤,0代表固態盤。
磁盤性能分析:主要分析磁盤的讀寫效率(IOPS:每秒讀寫的次數;吞吐量:每秒讀寫的數據量),IO 繁忙程度,及 IO 訪問對 CPU 的消耗等性能指標。
vmstat// 對于 IO,我們常關注三個部分:一般這幾個值偏大,都意味著系統 IO 的消耗較大,對于讀請求較大的服務器,b、bo、wa 的值偏大,而寫請求較大的服務器,b、bi、wa 的值偏大。- b 值:表示因為 IO 阻塞排隊的任務數
- bi 和 bo 值:表示每秒讀寫磁盤的塊數,bi(block in)是寫磁盤,bo(block out)是讀磁盤。
- wa 值:表示因為 IO 等待(wait)而消耗的 CPU 比例。
iostat// vmstat 雖然萬能,但是它分析的東西有限,iostat 是專業分析 IO 性能的工具,可以方便查看 CPU、網卡、tty 設備、磁盤、CD-ROM 等等設備的信息,非常強大,總結下來,共有以下幾種用法:iostat -c查看部分 CPU 使用情況,這里顯示的是多個 CPU 的平均值,一般會重點關注 %iowait 和 %idle,分別表示 CPU 等待 IO 完成時間的百分比和 CPU 空閑時間百分比。 如果 %iowait 較高,則表明磁盤存在 IO 瓶頸,如果 %idle 較高,則 CPU 比較空閑,如果兩個值都比較高,則有可能 CPU 在等待分配內存,瓶頸在內存,此時應該加大內存, 如果 %idle 較低,則此時瓶頸在 CPU,應該增加 CPU 資源。iostat -d查看磁盤使用情況,主要是顯示 IOPS 和吞吐量信息(-k : 以 KB 為單位顯示,-m:以 M 為單位顯示), 其中,幾個參數分別解釋如下:- tps:設備每秒的傳輸次數(transfers per second),也就是讀寫次數。
- kB_read/s 和 kB_wrtn/s:每秒讀寫磁盤的數據量。
- kB_read 和 kB_wrtn:讀取磁盤的數據總量。
iostat -x查看磁盤詳細信息。其中,幾個參數解釋如下:- rrqm/s 和 wrqm/s:分別每秒進行合并的讀操作數和寫操作數,這是什么意思呢,合并就是說把多次 IO 請求合并成少量的幾次,這樣可以減小 IO 開銷, buffer 存在的意義就是為了解決這個問題的。
- r/s 和 w/s:每秒磁盤讀寫的次數。這兩個值相加就是 tps。
- rkB/s 和 wkB/s:每秒磁盤讀寫的數據量,這兩個值和上面的 kB_read/s、kB_wrnt/s 是一樣的。
- avgrq-sz:平均每次讀寫磁盤扇區的大小。
- avgqu-sze:平均 IO 隊列長度。隊列長度越短越好。
- await:平均每次磁盤讀寫的等待時間(ms)。
- svctm:平均每次磁盤讀寫的服務時間(ms)。
- %util:一秒鐘有百分之多少的時間用于磁盤讀寫操作。 以上這些參數太多了,我們并不需要每個都關注,可以重點關注兩個:
- %util:衡量 IO 的繁忙程度 這個值越大,說明產生的 IO 請求較多,IO 壓力較大,我們可以結合 %idle 參數來看,如果 %idle < 70% 就說明 IO 比較繁忙了。 也可以結合 vmstat 的 b 參數(等待 IO 的進程數)和 wa 參數(IO 等待所占 CPU 時間百分比)來看,如果 wa > 30% 也說明 IO 較為繁忙。
- await:衡量 IO 的響應速度 通俗理解,await 就像我們去醫院看病排隊等待的時間,這個值和醫生的服務速度(svctm)和你前面排隊的人數(avgqu-size)有關。 如果 svctm 和 await 接近,說明磁盤 IO 響應時間較快,排隊較少,如果 await 遠大于 svctm,說明此時隊列太長,響應較慢,這時可以考慮換性能更好的磁盤或升級 CPU。
iostat m n默認顯示 cpu 和 吞吐量信息,m 表示每隔 m 秒輸出一次。n表示總共輸出n次(輸出n次之后退出程序)。
進程IO性能分析:有了以上兩個命令,基本上能對磁盤 IO 的信息有個全方位的了解了。但如果要確定具體哪個進程的 IO 開銷較大,這就得借助另外的工具了。
iotop
網絡篇
`yum provides $(which ping)` //查看ping命令屬于哪個包。
- ping:測試網絡連通性
- ifconfig:接口配置
- ip:網絡接口統計信息
- netsat:多種網絡棧和接口統計信息
- ifstat:接口網絡流量監控工具
- netcat:快速構建網絡連接
- tcpdump:抓包工具
- sar:統計信息歷史
- traceroute:測試網絡路由
- pathchar:確定網絡路徑特征
- dtrace:TCP/IP 棧跟蹤
- iperf / netperf / netserver:網絡性能測試工具
- perf 性能分析神器
顯卡篇
- lspci | grep -i vga //Linux查看顯卡信息
- lspci | grep -i nvidia //英偉達顯卡
(base) [root@master25 ~]$lspci |grep -i nvi 3b:00.0 VGA compatible controller: NVIDIA Corporation Device 2208 (rev a1) //這個是nvidia 3080TI顯卡 3b:00.1 Audio device: NVIDIA Corporation Device 1aef (rev a1)由于沒有驅動信息,無法查詢顯卡的具體型號,不過可以通過nvidia官方網站查詢。將上面輸出中的代號(2208 或 1aef)輸入文本框即可。
- lspci -v -s 3b:00.0 //查看指定顯卡的詳細信息。3b:00.0是顯卡代號,lspci的輸出最前面即是此信息。
- sudo lshw -c display// 查看顯卡信息
- -c后的值可以通過 lshw -short獲取
- nvidia-smi // Nvidia自帶一個命令行工具可以查看顯存的使用情況。`nvidia-smi --help`
[root@167 ~]$nvidia-smi Fri Feb 10 16:11:31 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.86.01 Driver Version: 515.86.01 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:3B:00.0 Off | N/A | | 30% 32C P8 25W / 350W | 234MiB / 12288MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1302 G /usr/lib/xorg/Xorg 217MiB | | 0 N/A N/A 1594 G /usr/bin/gnome-shell 15MiB | +-----------------------------------------------------------------------------+ 表頭釋義: Fan:顯示風扇轉速,數值在0到100%之間,是計算機的期望轉速,如果計算機不是通過風扇冷卻或者風扇壞了,顯示出來就是N/A; Temp:顯卡內部的溫度,單位是攝氏度; Perf:表征性能狀態,從P0到P12,P0表示最大性能,P12表示狀態最小性能; Pwr:能耗表示; Bus-Id:涉及GPU總線的相關信息; Disp.A:是Display Active的意思,表示GPU的顯示是否初始化; Memory Usage:顯存的使用率; Volatile GPU-Util:浮動的GPU利用率; Compute M:計算模式; 下邊的Processes顯示每塊GPU上每個進程所使用的顯存情況。- ·nvidia-smi -L· // 列出所有可用的Nvidia設備。可以輸出顯卡型號,如RTX3080Ti
[root@167 ~]$nvidia-smi -L GPU 0: NVIDIA GeForce RTX 3080 Ti (UUID: GPU-96bfb1d3-986f-e92a-4f68-a600bd8a144c)
- ·nvidia-smi -L· // 列出所有可用的Nvidia設備。可以輸出顯卡型號,如RTX3080Ti
-
在Linux上,您可以將GPU設置為持久模式:
nvidia-smi -pm 1。持久模式每個閑置的GPU使用更多的功率,但是可以防止每次啟動GPU應用程序時出現相當長的延遲。在Windows上,nvidia-smi無法設置持久性模式。 相反,您需要將計算GPU設置為TCC模式。 這應該通過NVIDIA的圖形GPU設備管理面板來完成。執行 nvidia-smi 命令,可查看Persistence Mode當前狀態。Persistence-M的值為On時,持續模式為打開狀態,如下圖所示:

※,
浙公網安備 33010602011771號