1. 程式人生 > >(3)lscpu詳解 (每周一個linux命令系列)

(3)lscpu詳解 (每周一個linux命令系列)

小端 sock 問題 數據 env 最大 命令執行 dia 方式

(3)lscpu詳解 (每周一個linux命令系列)

linux命令 lscpu詳解


引言:今天的命令是用來看cpu信息的lscpu

lscpu

我們先看man lscpu


display information about the CPU architecture

翻譯:顯示cpu架構信息

具體的描述如下:


lscpu  gathers CPU architecture information from sysfs, /proc/cpuinfo
       and any applicable architecture-specific libraries (e.g.  librtas  on
       Powerpc).   The  command  output  can be optimized for parsing or for
       easy readability by humans.  The information includes,  for  example,
       the  number  of CPUs, threads, cores, sockets, and Non-Uniform Memory
       Access (NUMA) nodes.  There is also information about the CPU  caches
       and cache sharing, family, model, bogoMIPS, byte order, and stepping.

       In  virtualized  environments,  the CPU architecture information dis‐
       played reflects the configuration of the guest operating system which
       is typically different from the physical (host) system.  On architec‐
       tures that support retrieving physical  topology  information,  lscpu
       also  displays  the  number  of physical sockets, chips, cores in the
       host system.

       Options that result in an output table have  a  list  argument.   Use
       this argument to customize the command output.  Specify a comma-sepa‐
       rated list of column labels to limit the output  table  to  only  the
       specified  columns, arranged in the specified order.  See COLUMNS for
       a list of valid column labels.  The column labels are not case sensi‐
       tive.

       Not  all  columns  are  supported on all architectures.  If an unsup‐
       ported column is specified, lscpu prints the column but does not pro‐
       vide any data for it.
       

翻譯如下:
lscpu命令從sysfs、/proc/cpuinfo、或者某些適用於特定架構的庫中收集數據。命令的輸出會以人類易讀的方式展示如下信息:cpu、線程、核心、插槽和Non-Uniform MemoryAccess (NUMA)節點的數量,也有cpu共享緩存,cpu的族號,運行模式,處理指令的速度,大小端,步進等信息

在虛擬環境下,系統架構信息展示映射著客戶操作系統的設置,這和物理主機是有明顯差異的。在架構上支持檢索物理拓撲信息,lscpu命令也顯示主機系統中的物理插槽數量,芯片,內核數。

Options可以提供一些參數,用這些參數可以自定義命令輸出。指定一個列表分隔符,指定一個逗號分隔的列標簽列表,以將輸出表限制為按指定的順序排列的指定的列。按指定順序排列。 有效列標簽請參考COLUMNS的列表。列標簽不區分大小寫。(man的輸出中有各種參數太多這裏就不放出來了。可以自己去查看)

我們再來看一下命令執行結果

Architecture:          x86_64 //架構--這裏的64指的位處理器
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian //小端法
CPU(s):                4    //cpu數量
On-line CPU(s) list:   0-3  //在線的cpu數量 有些時候為了省電或者過熱的時候,某些CPU會停止運行
Thread(s) per core:    1    //每個核心的線程數
Core(s) per socket:    4    //每個插槽上有幾個核心
座:                 1      
NUMA 節點:         1       //NUMA 這個太復雜,所以他的解釋在下面
廠商 ID:           GenuineIntel
CPU 系列:          6
型號:              94
型號名稱:        Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz
步進:              3 //這個可以簡單理解為版本號  也有A0這樣的標識方式
CPU MHz:             900.023
CPU max MHz:           3700.0000
CPU min MHz:           800.0000
BogoMIPS:            6624.00 // MIPS是每秒百萬條指令,Bogo是Bogus(偽)的意思,這裏是估算MIPS值
虛擬化:           VT-x //虛擬化技術,這個我不太懂,不敢亂說
L1d 緩存:          32K //一級高速緩存 dcache 用來存儲數據
L1i 緩存:          32K //一級高速緩存 icache 用來存儲指令  
L2 緩存:           256K
L3 緩存:           8192K //緩存速度上 L1 > L2 > L3 > DDR(內存) 內存的理論速度在幾十g一秒
NUMA 節點0 CPU:    0-3 //四個cpu在一個numa節點上
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp

//Flags是標識了一些cpu的特征  具體可以查看https://blog.csdn.net/nemo2011/article/details/7531212

man中還有更多的描述,對大家來說意義也不大,接下來我們直接看選項了

    選項:
 -a, --all               同時打印在線和離線 CPU (-e 選項默認值)  此選項只能與選項-e 或-p 一起指定
 -b, --online            只打印在線 CPU (-p 選項默認值) 此選項只能與選項-e 或-p 一起指定
 -c, --offline           只打印離線 CPU   此選項只能與選項-e 或-p 一起指定。
 -e, --extended[=<列表>] 打印擴展的可讀格式  (類似表格的形式)
                如果省略該列表參數, 則在命令輸出中包括所有可用數據的列
                指定列表參數時, 選項字符串、等號 (=) 和列表不能包含任何空格或其他空白。 
                結果如下:
                CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ    MINMHZ
                0   0    0      0    0:0:0:0       是     3700.0000 800.0000
                1   0    0      1    1:1:1:0       是     3700.0000 800.0000
                2   0    0      2    2:2:2:0       是     3700.0000 800.0000
                3   0    0      3    3:3:3:0       是     3700.0000 800.0000
                帶list示例: lscpu -e=cpu,node
 -p, --parse[=<列表>]    打印可解析格式
                如果省略該列表參數, 則命令輸出與早期版本的 lscpu 兼容。 
                在此兼容格式中, 兩個逗號用於分隔 CPU 緩存列。 
                如果未標識任何 CPU 緩存, 則忽略緩存列。
                如果使用列表參數, 則緩存列將用冒號 (:) 分隔
                示例: lscpu -p=cpu,node,,L1d:L1i
                我在使用上面命令的時候,不帶緩存列正常顯示,帶緩存列不能輸出數據也沒報錯,迷茫
 -s, --sysroot <目錄>    以指定目錄作為系統根目錄
                收集 lscpu 命令所發出的實例以外的 Linux 實例的 CPU 數據。
                指定的目錄是要檢查的 Linux 實例的系統根。
 -x, --hex               打印十六進制掩碼而非 CPU 列表
 -y, --physical          print physical instead of logical IDs 
                顯示所有列的物理 id。 除了由 lscpu 分配的邏輯 id 之外
                物理 id 是由內核提供的特定於平臺的值。無法檢索元素的物理 ID 用破折號 (-) 字符顯示
                此選項不影響 CPU 邏輯編號。

 -h, --help     顯示此幫助並退出
 -V, --version  輸出版本信息並退出


可用的列:
           CPU  邏輯 CPU 數量
          CORE  邏輯核心數量
        SOCKET  邏輯(CPU)座數量
          NODE  邏輯 NUMA 節點數量
          BOOK  邏輯 book 數
        DRAWER  logical drawer number   //邏輯抽屜數(不太明白,好像和book有關系)
         CACHE  shows how caches are shared between CPUs    //cpu之間如何共享緩存
  POLARIZATION  CPU dispatching mode on virtual hardware    //虛擬硬件上的CPU調度模式
       ADDRESS  physical address of a CPU //cpu物理地址
    CONFIGURED  shows if the hypervisor has allocated the CPU //管理程序是否分配了cpu
        ONLINE  shows if Linux currently makes use of the CPU //在使用的cpu
        MAXMHZ  shows the maximum MHz of the CPU    //最大頻率
        MINMHZ  shows the minimum MHz of the CPU    //最小頻率

NUMA(Non-Uniform MemoryAccess)

中文名:分布式體系結構 (非統一內存體系結構)
區別於 UMA,統一內存體系結構

由於展開來講設計到很多問題,也需要單獨寫一篇長文章才能說完,這裏可以精簡的說一下:
UMA中,多個CPU訪問內存是沒有區別的,成本和速度相同。而在NUMA中,可以看成每個CPU有自己的內存,被稱為本地內存,CPU之間通過一種方式聯結,使得CPU可以訪問非管轄範圍內的內存(非本地內存),但是。由於不屬於自己的一畝三分地,需要通過另一個通道獲取,速度回比訪問本地內存要慢。但是好處是這種方式增加了擴展性。缺點是速度會受影響,尤其是對mysql這類的數據庫軟件有較大影響。一般應該是接觸不到,接觸到了再去詳細了解吧

(3)lscpu詳解 (每周一個linux命令系列)