1. 程式人生 > 實用技巧 >linux下檢視記憶體頻率,核心函式,cpu頻率【轉】

linux下檢視記憶體頻率,核心函式,cpu頻率【轉】

轉自:https://www.cnblogs.com/lovesKey/p/10900501.html

檢視CPU:

cat /proc/cpuinfo

# 總核數 = 物理CPU個數 X 每顆物理CPU的核數 
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超執行緒數

# 檢視物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 檢視每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 檢視邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l

# 檢視CPU資訊(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
processor :系統中邏輯處理核的編號。對於單核處理器,則課認為是其CPU編號,對於多核處理器則可以是物理核、或者使用超執行緒技術虛擬的邏輯核
vendor_id :CPU製造商      
cpu family :CPU產品系列代號
model   :CPU屬於其系列中的哪一代的代號
model name:CPU屬於的名字及其編號、標稱主頻
stepping   :CPU屬於製作更新版本
cpu MHz   :CPU的實際使用主頻
cache size   :CPU二級快取大小
physical id   :單個CPU的標號
siblings       :單個CPU邏輯物理核數
core id        :當前物理核在其所處CPU中的編號,這個編號不一定連續
cpu cores    :該邏輯核所處CPU的物理核數
apicid          :用來區分不同邏輯核的編號,系統中每個邏輯核的此編號必然不同,此編號不一定連續
fpu             :是否具有浮點運算單元(Floating Point Unit)
fpu_exception  :是否支援浮點計算異常
cpuid level   :執行cpuid指令前,eax暫存器中的值,根據不同的值cpuid指令會返回不同的內容
wp             :表明當前CPU是否在核心態支援對使用者空間的防寫(Write Protection)
flags          :當前CPU支援的功能
bogomips   :在系統核心啟動時粗略測算的CPU速度(Million Instructions Per Second)
clflush size  :每次重新整理快取的大小單位
cache_alignment :快取地址對齊單位
address sizes     :可訪問地址空間位數
power management :對能源管理的支援,有以下幾個可選支援功能:

  ts:  temperature sensor
  fid:   frequency id control
  vid:  voltage id control
  ttp:  thermal trip
  tm:
  stc:
  100mhzsteps:
  hwpstate:

詳細參考:https://blog.csdn.net/cuker919/article/details/7635488/

檢視記憶體:

sudo cat /proc/meminfo
這個命令只能看當前記憶體大小,已用空間等等。

要檢視記憶體型號、頻率,使用命令(使用root才行):

sudo dmidecode -t memory
輸出:

Memory Device
	Array Handle: 0x0024
	Error Information Handle: Not Provided
	Total Width: 72 bits
	Data Width: 64 bits
	Size: 16384 MB
	Form Factor: DIMM
	Set: None
	Locator: CPU0_A0
	Bank Locator: CPU0_Bank0
	Type: DDR3
	Type Detail: Registered (Buffered)
	Speed: 1600 MT/s
	Manufacturer: Hynix Semiconducto
	Serial Number: 40FE6773    
	Asset Tag: Dimm0_AssetTag
	Part Number: HMT42GR7AFR4C-RD  
	Rank: 2
	Configured Clock Speed: 1600 MT/s


檢視系統執行時間:

cat /proc/uptime

406988.68 15804134.45
#第一個引數是系統從啟動到現在經歷的秒數
#406988.68/60/60/24=4.7天的樣子.
#第二個引數 說的代表cpu空閒的時間. (所有的cpu空閒的時間,如你cpu1空閒1秒cpu2很忙沒空閒.)所以我們要除去cpu所有的核心數
#15804134.45/40=395103.36124999996
#395103.36124999996/406988.68=0.9707969303961966 
#大概97%時間是空閒的.

檢視核心IO地址對映:(實體記憶體地址分配情況)

cat /proc/iomem

root@ubsv:/home/makeit# cat /proc/iomem
00000000-00000fff : Reserved
00001000-000917ff : System RAM
00091800-0009ffff : Reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000dffff : PCI Bus 0000:00
  000c0000-000ce9ff : Video ROM
  000cf000-000d89ff : Adapter ROM
000e0000-000fffff : Reserved
  000f0000-000fffff : System ROM
00100000-7daf6fff : System RAM
7daf7000-7db36fff : Reserved
7db37000-7dd36fff : ACPI Tables
7dd37000-7e036fff : ACPI Non-volatile Storage
7e037000-7f316fff : Reserved
7f317000-7f317fff : System RAM
7f318000-7f39dfff : ACPI Non-volatile Storage
7f39e000-7f7fffff : System RAM
7f800000-7fffffff : RAM buffer
80000000-dfffffff : PCI Bus 0000:00
  80000000-8fffffff : PCI MMCONFIG 0000 [bus 00-ff]
    80000000-8fffffff : Reserved
  c0000000-d1ffffff : PCI Bus 0000:03
    c0000000-cfffffff : 0000:03:00.0
    d0000000-d1ffffff : 0000:03:00.0
  d2800000-d2ffffff : PCI Bus 0000:08
    d2800000-d2ffffff : PCI Bus 0000:09
      d2800000-d2ffffff : 0000:09:00.0
  d3000000-d34fffff : PCI Bus 0000:07
    d3000000-d33fffff : 0000:07:00.0
      d3000000-d33fffff : isci
    d3400000-d347bfff : 0000:07:00.0
    d347c000-d347ffff : 0000:07:00.0
      d347c000-d347ffff : isci
  de000000-df0fffff : PCI Bus 0000:03
    de000000-deffffff : 0000:03:00.0
    df080000-df083fff : 0000:03:00.1
      df080000-df083fff : ICH HD audio
  df100000-df1fffff : PCI Bus 0000:08
    df100000-df1fffff : PCI Bus 0000:09
      df100000-df11ffff : 0000:09:00.0
  df200000-df2fffff : PCI Bus 0000:07
  df300000-df3000ff : 0000:00:1f.3
  df301000-df3017ff : 0000:00:1f.2
    df301000-df3017ff : ahci
  df302000-df3023ff : 0000:00:1d.0
    df302000-df3023ff : ehci_hcd
  df303000-df3033ff : 0000:00:1a.0
    df303000-df3033ff : ehci_hcd
  df305000-df30500f : 0000:00:16.1
  df306000-df30600f : 0000:00:16.0
  df307000-df307fff : 0000:00:05.4
  dfffc000-dfffcfff : dmar1
e0000000-fbffffff : PCI Bus 0000:80
  fbf00000-fbf00fff : 0000:80:05.4
  fbffe000-fbffefff : dmar0
fc000000-fcffffff : pnp 00:00
fd000000-fdffffff : pnp 00:00
fe000000-feafffff : pnp 00:00
feb00000-febfffff : pnp 00:00
fec00000-fec003ff : IOAPIC 0
fec01000-fec013ff : IOAPIC 1
fec40000-fec403ff : IOAPIC 2
fed00000-fed003ff : HPET 0
  fed00000-fed003ff : PNP0103:00
fed1c000-fed1ffff : Reserved
  fed1c000-fed1ffff : pnp 00:07
    fed1f410-fed1f414 : iTCO_wdt.0.auto
fed45000-fedfffff : pnp 00:00
fee00000-fee00fff : Local APIC
ff000000-ffffffff : Reserved
  ff000000-ffffffff : pnp 00:07
100000000-87fffffff : System RAM
  480c00000-4818031d0 : Kernel code
  4818031d1-48226a6bf : Kernel data
  4824e2000-48273dfff : Kernel bss

檢視上一次登陸:

last /var/log/wtmp
/var/log/wtmp #是一個二進位制檔案, 記錄了每個使用者的登入次數和登入時間
它是二進位制檔案,vim無法正常讀取的,應該使用last命令讀取.
(如不存在,直接touch生成。可用rm刪除)

reboot   system boot  4.15.0-48-generi Fri May  3 10:04 - 10:22  (00:17)
makeit   pts/0        10.1.1.2         Fri May  3 07:06 - 10:04  (02:58)
makeit   pts/1        10.1.1.2         Fri May  3 06:37 - 06:59  (00:21)
makeit   pts/1        10.1.1.2         Fri May  3 04:11 - 06:29  (02:17)
makeit   pts/0        10.1.1.2         Fri May  3 04:10 - 04:11  (00:01)
reboot   system boot  4.15.0-48-generi Fri May  3 03:49 - 10:04  (06:14)
makeit   tty1                          Thu May  2 18:29 - down   (00:03)
reboot   system boot  4.15.0-48-generi Thu May  2 18:27 - 18:32  (00:05)

檢視核心版本:

cat /proc/version

Linux version 4.15.0-48-generic (buildd@lgw01-amd64-036) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019
或
Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 29 14:49:43 UTC 2018

檢視核心函式:

cat /proc/kallsyms
#非root使用者記憶體地址為0.要注意哦

ffffffffa462e699 b pci_apply_fixup_final_quirks
ffffffffa462e6a0 b asus_rcba_base
ffffffffa462e6a8 b asus_hides_smbus
ffffffffa462e6ac b aspm_policy
ffffffffa462e6b0 b aspm_force
ffffffffa462e6b4 b aspm_disabled
ffffffffa462e6b8 B pciehp_msi_disabled
ffffffffa462e6b9 B pcie_ports_native
ffffffffa462e6ba B pcie_ports_disabled
ffffffffa462e6bc b aer_recover_ring_lock
ffffffffa462e6c0 b nosourceid
ffffffffa462e6c1 b forceload

檢視系統啟動引數:

cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.15.0-48-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro net.ifnames=0 biosdevname=0 maybe-ubiquity
或
BOOT_IMAGE=/boot/vmlinuz-3.10.0-957.1.3.el7.x86_64 root=UUID=f41e390f-835b-4223-a9bb-9b45984ddf8d ro console=tty0 console=ttyS0,115200n8 crashkernel=auto console=ttyS0,115200 LANG=en_US.UTF-8

磁碟資訊(這個檔案一般人看不懂,有工具就是分析這個檔案得到磁碟效能資訊的):

cat /proc/diskstats

  1 sda1 1754 0 173182 2636 0 0 0 0 0 2288 2636
   8       2 sda2 1410618 20823 314212148 7331640 17342234 176017 1018277592 4184991736 0 37218756 4202110004
   8       3 sda3 297216 13604 15966929 5201952 2752169 7362710 295973221 115004336 1 9669588 120302544
   8      16 sdb 901534 17836 117321096 1284332 10651545 6198248 717171056 163072144 0 9813644 164350192
   8      17 sdb1 2625 0 24206 444 0 0 0 0 0 444 444
   8      18 sdb2 726 10 40808 604 437 120 2047640 39208 0 1800 39808
   8      19 sdb3 897879 17826 117246389 1283092 8801571 6198128 715123416 162152184 0 8947140 163434420

第1個域:讀磁碟的次數,成功完成讀的總次數;

第2個域:合併讀次數;

第3個域:讀扇區的次數,成功讀過的扇區總次數;

第4個域:讀花費的毫秒數,這是所有讀操作所花費的毫秒數;//基準

第5個域:寫完成的次數,成功寫完成的總次數;

第6個域:合併寫次數,為了效率可能會合並相鄰的讀和寫。從而兩次4K的讀在它最終被處理到磁碟上之前可能會變成一次8K的讀,才被計數(和排隊),因此只有一次I/O操作,這個域使你知道這樣的操作有多頻繁;

第7個域:寫扇區的次數,成功寫扇區總次數;

第8個域:寫花費的毫秒數,這是所有寫操作所花費的毫秒數;//基準

第9個域:I/O的當前進度,只有這個域應該是0。當請求被交給適當的request_queue_t時增加和請求完成時減小;

第10個域:花在I/O操作上的毫秒數,這個域會增長只要field 9不為0;

第11個域:加權,花在I/O操作上的毫秒數,在每次I/O開始,I/O結束,I/O合併時這個域都會增加。這可以給I/O完成時間和儲存那些可以累積的提供一個便利的測量標準。

檢視中斷:
cat /proc/interrupts

檔案中列出當前系統使用的中斷的情況,所以某個中斷處理沒有安裝,是不會顯示的。哪怕之前安裝過,被解除安裝了。
從左到右分別是,
irq的序號, 在各自cpu上發生中斷的次數,可程式設計中斷控制器,裝置名稱(request_irq的dev_name欄位)
           CPU0       CPU1       CPU2       CPU3       
  0:        205          0          0          0   IO-APIC-edge      timer
  1:         10          0          0          0   IO-APIC-edge      i8042
  4:       1467          0          0        432   IO-APIC-edge      serial
  6:          3          0          0          0   IO-APIC-edge      floppy
  8:          0          0          0          0   IO-APIC-edge      rtc0

/proc/stat #檔案中有一行記錄的機器從啟動依賴,各個中斷序號發生中斷的次數。

這一行以intr開頭,接下來的第一個數字是總的中斷數目,之後就是分別的中斷數目,從0開始。
intr 598618187 205 10 0 0 1899 0 3 0 0 0 31258 0 66 0 0 0 0 0 0 0 0 0 0 0 0 2561943 0 1972608 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

調整記憶體分配策略:

echo 2 > /proc/sys/vm/overcommit_memory
echo 60 > /proc/sys/vm/overcommit_ratio

 0, 表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
 1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
 2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體

關於記憶體分配策略更詳細請參考:
紅帽大佬的文件

5.4.容量調節

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-captun