zoukankan      html  css  js  c++  java
  • Linux下相关性能指标数据采集

    1)如何查看某个服务进程所占本机物理内存及百分比情况?可以使用Linux命令行查看,也可以使用脚本实现。如下以查看本机kube-nginx服务进程为例:

    [root@kevin ~]# pidof kube-nginx                 
    4763 4762
     
    查看上面两个pid的物理内存使用情况
    [root@kevin ~]# cat /proc/4763/status | grep VmRSS    
    VmRSS:      4596 kB
    [root@kevin ~]# cat /proc/4762/status|grep VmRSS 
    VmRSS:       224 kB
    
    由上面可知,kube-nginx服务进程的两个pid所占物理内存为"4596+224=4820k"
     
    编写python脚本
    [root@kevin ~]# cat mem_percent.py
    #!/usr/bin/python
    #coding=utf8
    import subprocess
    pidcheck = subprocess.Popen('pidof kube-nginx',shell=True,stdout=subprocess.PIPE)
    pid = pidcheck.stdout.read().rstrip().split()
    memsize = 0
    for i in pid:
       filename = "/proc/"+i+"/status"
       #os.path.join("/proc","i","status")     #等同于上条语句
       with open(filename,"r") as statusfile:
           for line in statusfile:
               if line.startswith("VmRSS"):
                   memsize+=int(line.split()[1])
    print "kube-nginx进程占用内存:%sk" % memsize
     
    with open("/proc/meminfo","r") as memfile:
       for line in memfile:
           if line.startswith("MemTotal"):
               memtotal = int(line.split()[1])
    print "kube-nginx进程内存占用率为:%.2f%%" % (memsize/float(memtotal)*100)
     
    执行脚本:
    [root@kevin ~]# chmod 755 mem_percent.py
     
    [root@kevin ~]# ./mem_percent.py
    kube-nginx进程占用内存:4820k
    kube-nginx进程内存占用率为:0.06%
     
    [root@kevin ~]# python ./mem_percent.py
    kube-nginx进程占用内存:4820k
    kube-nginx进程内存占用率为:0.06%
     
     
    ================================================================================================================
    再看一例: 查看docked服务进程所占物理内存情况
    [root@kevin ~]# pidof dockerd        
    29496
    [root@kevin ~]# cat /proc/29496/status|grep VmRSS
    VmRSS:     78288 kB
     
    [root@kevin ~]# cat mem1_percent.py
    #!/usr/bin/python
    #coding=utf8
    import subprocess
    pidcheck = subprocess.Popen('pidof dockerd',shell=True,stdout=subprocess.PIPE)
    pid = pidcheck.stdout.read().rstrip().split()
    memsize = 0
    for i in pid:
       filename = "/proc/"+i+"/status"
       #os.path.join("/proc","i","status")     #等同于上条语句
       with open(filename,"r") as statusfile:
           for line in statusfile:
               if line.startswith("VmRSS"):
                   memsize+=int(line.split()[1])
    print "dockerd进程占用内存:%sk" % memsize
     
    with open("/proc/meminfo","r") as memfile:
       for line in memfile:
           if line.startswith("MemTotal"):
               memtotal = int(line.split()[1])
    print "dockerd进程内存占用率为:%.2f%%" % (memsize/float(memtotal)*100)
     
    [root@kevin ~]# python mem1_percent.py
    dockerd进程占用内存:78288k
    dockerd进程内存占用率为:0.96%
    

    2)使用Linux命令行直接某个进程的CPU百分比和内存百分比

    使用"ps auxw" 可以查看到本机的进程所占cpu和mem的百分比情况
    [root@m7-autocv-gpu02 ~]# ps auxw|head -1
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    
    %CPU 进程的cpu占用率
    %MEM 进程的内存占用率
    
    查看java进程所占本机的cpu百分比, 如下为0.3%
    [root@m7-autocv-gpu02 ~]# ps auxw |grep -v grep|grep -w java|awk '{print $3}'           
    0.3
    
    查看java进程所占本机的内存百分比, 如下为18.0%  (这个值跟上面python脚本查出来的18.05%稍微有点误差,这里百分比的数只精确到小数点后一位)
    [root@m7-autocv-gpu02 ~]# ps auxw |grep -v grep|grep -w java|awk '{print $4}'
    18.0

    Linux下查看哪些进程占用的CPU和内存资源最多的方法

    1)获取占用CPU资源最多的10个进程
    [root@kevin ~]# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -10
    
    2)获取占用内存资源最多的10个进程
    [root@kevin ~]# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -10
    
    3)查看占用cpu最高的进程
    [root@kevin ~]# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -1
    
    4)获取占用内存资源最高的进程
    [root@kevin ~]# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -1

    3)Linux下查看某些进程的启动时间和运行时长

    比如查看java进程的启动时间和运行时长
    [root@m7-autocv-gpu02 ~]# ps -ef|grep -v grep|grep -w java|awk '{print $2}'
    18661
    
    [root@m7-autocv-gpu02 ~]# ps -eo pid,lstart,etime | grep 18661             
    18661 Tue May 14 19:22:51 2019  5-19:42:51
    
    其中:
    Tue May 14 19:22:51 2019   为java进程的启动时间
    5-19:42:51                 为java进程的运行时长,即5天19小时42分51秒
    
    
    可以查看所有进程的启动事件、运行时长
    [root@m7-autocv-gpu02 ~]# ps -eo user,pid,lstart,etime,cmd
    
    查看nginx进程启动的精确时间和启动后运行的时长
    [root@m7-autocv-gpu02 ~]# ps -eo pid,lstart,etime,cmd|grep nginx

    4)Linux下查看某个进程的TIME_WAIT、ESTABLISHED、FIN_WAIT2 连接数

    查看总的TIME_WAIT、ESTABLISHED、FIN_WAIT2 连接数 (下面两个命令都可以)
    [root@kevin ~]# netstat -ae|grep "TIME_WAIT" |wc -l
    [root@kevin ~]# ss -a|grep "TIME_WAIT" |wc -l
    
    [root@kevin ~]# netstat -ae|grep "ESTABLISHED" |wc -l
    [root@kevin ~]# netstat -ae|grep "FIN_WAIT2" |wc -l
    
     
    比如查看kube-apiserve进程的TIME_WAIT、ESTABLISHED、FIN_WAIT2 连接数 
    [root@kevin ~]# netstat -antp | grep kube-apiserve | grep ESTABLISHED  -c4
    85
    [root@kevin ~]# netstat -antp | grep kube-apiserve | grep TIME_WAIT -c4   
    0
    [root@kevin ~]# netstat -antp | grep kube-apiserve | grep ESTABLISHED -c4 
    85
    [root@kevin ~]# netstat -antp | grep kube-apiserve | grep FIN_WAIT2 -c4  
    0
    
    
    还可以根据某一个进程的端口号来查看
    [root@kevin ~]# netstat -antp | grep 6443 | grep TIME_WAIT -c4           
    0
    [root@kevin ~]# netstat -antp | grep 6443 | grep ESTABLISHED -c4               #即ESTABLISHED连接数为8
    8
    [root@kevin ~]# netstat -antp | grep 6443 | grep FIN_WAIT2 -c4           
    0
    
    ====================================================================================
    Linux下查看并发连接数
    
    [root@kevin ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    ESTABLISHED 218
    
    或者可以简单的直接用:
    [root@kevin ~]# netstat -n|grep "ESTABLISHED"|wc -l
    218
    
    解释:
    /^tcp/    :表示搜索以tcp开头的行
    S[$NF]    :表示以$NF为数组下标,建立数组S
    ++S[$NF]  :表示给数组S赋值,相当于有一个tcp那么这个S数组里的元素就+1
    /^tcp/ {++S[$NF]}   :表示整个意思应该是 匹配出一个tcp协议的连接 数组S就+一个元素值
    END是前面的/^tcp/ {++S[$NF]}  :表示执行结束后在执行
    {for(a in S) print a, S[a]}   :表示将S值代入a 打印a 和这个S[a]数组的值。比如S是10,那么a就是10,S[a] 就是s这个数组的第10个元素的值
    
    
    返回结果示例:
    LAST_ACK 5
    SYN_RECV 30
    ESTABLISHED 1597
    FIN_WAIT1 51
    FIN_WAIT2 504
    TIME_WAIT 1057
    其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
    
    状态:描述
    CLOSED:无连接是活动的或正在进行
    LISTEN:服务器在等待进入呼叫
    SYN_RECV:一个连接请求已经到达,等待确认
    SYN_SENT:应用已经开始,打开一个连接
    ESTABLISHED:正常数据传输状态
    FIN_WAIT1:应用说它已经完成
    FIN_WAIT2:另一边已同意释放
    ITMED_WAIT:等待所有分组死掉
    CLOSING:两边同时尝试关闭
    TIME_WAIT:另一边已初始化一个释放
    LAST_ACK:等待所有分组死掉
    
    例子
    查看Nginx运行进程数
    [root@kevin ~]# ps -ef | grep nginx | wc -l      #返回的数字就是nginx的运行进程数
    
    查看Web服务器进程连接数:
    [root@kevin ~]# netstat -antp | grep 80 | grep ESTABLISHED -c4
    
    查看MySQL和java进程连接数:
    [root@kevin ~]# ps -axef | grep mysqld -c
    1
    [root@kevin ~]# ps -axef | grep java -c
    3
    
    注意:
    grep -c 的作用类似grep | wc -l,不同的是,如果是查找多个文件,grep -c会统计每个文件匹配的行数,每行一个文件的列出来,
    而wc -l 则列出总的统计数字。
    另外grep -c 要比 grep | wc -l快一点。
    
    
    ====================================================================================
    针对TIME_WAIT现象的优化措施:
     
    比如某一天下午,登陆IDC机房的一台服务器,输入命令"netstat -an|grep mysql",
    发现mysql服务进程存在大量TIME_WAIT状态的连接
    [root@kevin ~]# netstat -an|grep mysql
    ...........
    tcp        0      0 127.0.0.1:3306              127.0.0.1:41378             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:41379             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:39352             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:39350             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:35763             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:39372             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:39373             TIME_WAIT
    tcp        0      0 127.0.0.1:3306              127.0.0.1:41176             TIME_WAIT
    ...........
     
    通过调整内核参数解决, 编辑文件,加入以下内容:
    [root@kevin ~]# vim /etc/sysctl.conf
    ...........
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
      
    然后让添加的参数生效。
    [root@kevin ~]# /sbin/sysctl -p
     
    其中:
    net.ipv4.tcp_syncookies = 1  表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse = 1    表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_tw_recycle = 1  表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    net.ipv4.tcp_fin_timeout=30  表示修改系統默认的TIMEOUT时间为30秒
     
    修改之后,再用命令查看TIME_WAIT连接数
    [root@kevin ~]# netstat -ae|grep "TIME_WAIT" |wc –l
     
    此时发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,网站访问正常。
    不过很多时候,出现大量的TIME_WAIT状态的连接,往往是因为网站程序代码中没有使用mysql.colse(),才导致大量的mysql  TIME_WAIT.
    

    5) 查看本机所有进程的CPU和内存使用率之和

    查看本机所有进程的CPU占比之和
    [root@kevin ~]# cat cpu_per.sh 
    #!/bin/bash
    
    ps auxw|awk '{if (NR>1){print $3}}' > /opt/cpu_list
    
    awk '{CPU_PER+=$1}END{print CPU_PER}'  /opt/cpu_list
    
    执行脚本,获取所有进程的cpu占比之和,即14.1%
    [root@kevin ~]# sh cpu_per.sh
    14.1
    
    ==========================================================
    查看本机所有进程的内存占比之和
    [root@kevin ~]# cat mem_per.sh 
    #!/bin/bash
    
    ps auxw|awk '{if (NR>1){print $4}}' > /opt/mem_list
    
    awk '{MEM_PER+=$1}END{print MEM_PER}'  /opt/mem_list
    
    执行脚本,获取所有进程的内存占比之和,即22.2%
    [root@kevin ~]# sh mem_per.sh 
    22.2
    
    
    脚本配置解释:
    ps -auxw|awk '{print $3}'   表示列出本机所有进程的cpu利用率情况,结果中第一行带"%CPU"字符
    ps -auxw|awk '{print $4}'   表示列出本机所有进程的内存利用率情况,结果中第一行带"%MEM"字符
    ps auxw|awk '{if (NR>1){print $4}}  表示将"ps auxw"结果中的第一行过滤(NR>1)掉,然后打印第4行
    

    6)其他系统性能指标采集

    1)通过free命令查看内存剩余可用情况
    ==================================================================================
    -b:以Byte为单位显示内存使用情况。 
    -k:以KB为单位显示内存使用情况。 
    -m:以MB为单位显示内存使用情况。
    -g   以GB为单位显示内存使用情况。 
    -o:不显示缓冲区调节列。 
    -s<间隔秒数>:持续观察内存使用状况。 
    -t:显示内存总和列。 
    -V:显示版本信息。
    -h:centos7系统下,可以使用该参数进行查看
    
    [root@kevin ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3774        1155         591         291        2027        1962
    Swap:          2048         901        1147
    
    页面显示参数解释:
    total: 总计物理内存的大小。
    used: 已使用多大。
    free: 可用有多少。
    Shared: 多个进程共享的内存总额。
    Buffers/cached: 磁盘缓存的大小
    Swap:交换分区(虚拟内存)情况;
    Mem:实际内存的使用情况
    
    2)查看和设置服务器最大进程数
    ==================================================================================
    查看系统允许的当前最大进程数
    查看本服务器进程数
    [root@kevin ~]# ps -eLf | wc -l
    263
    
    主要是看pid_max指标的值,pid_max是Linux内核用来限制进程数的一个最大指标。
    换言之,即最大允许进程就这么多,超过了这个设定值,服务器就挂了("ps -eLf | wc -l"查看本机器的进程数)
    [root@kevin ~]# sysctl kernel.pid_max    # centos7系统执行"systemctl kernel.pid_max"命令
    kernel.pid_max = 32768
    或者
    [root@kevin ~]# cat /proc/sys/kernel/pid_max
    32768
    
    一般出现 -bash: fork: Cannot allocate memory 本机的进程数应该接近或等于pid_max指标值的。
    [root@kevin ~]# echo 65536 > /proc/sys/kernel/pid_max                   # 临时修改
    [root@kevin ~]# echo "kernel.pid_max=65536" >> /etc/sysctl.conf         # 永久修改
    [root@kevin ~]# sysctl -p 
    kernel.pid_max = 65536
    
    如上设置就可以了,保险起见,最好找到占用空间最大的进程,然后把它干掉就解决了!如下使用top命令分析:
    
    3)top:展示进程视图,监控服务器进程数值默认进入top时,各进程是按照CPU的占用量来排序的
    ==================================================================================
    [root@kevin ~]# top
    top - 15:46:45 up 581 days, 22:30,  5 users,  load average: 0.00, 0.02, 0.05
    Tasks: 133 total,   2 running, 130 sleeping,   1 stopped,   0 zombie
    %Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  7994044 total,  1227680 free,  3499004 used,  3267360 buff/cache
    KiB Swap:  2097148 total,  1708072 free,   389076 used.  3954372 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                     
     48085 root      20   0 4172780 814536   6236 S   0.7 21.1   8353:58 mongod                                                                      
     12670 root      20   0  703816  41532    924 S   0.3  1.1 331:29.13 glusterfs                                                                   
     55185 root      20   0  157724   2240   1548 R   0.3  0.1   0:00.03 top                                                                         
         1 root      20   0   51656   2496   1352 S   0.0  0.1  94:14.96 systemd                                                                     
         2 root      20   0       0      0      0 S   0.0  0.0   0:01.87 kthreadd                                                                    
         3 root      20   0       0      0      0 S   0.0  0.0   2:32.08 ksoftirqd/0                                                                 
         5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                
         7 root      rt   0       0      0      0 S   0.0  0.0   1:16.86 migration/0                                                                 
         8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                      
         9 root      20   0       0      0      0 R   0.0  0.0 358:31.04 rcu_sched                                                                   
        10 root      rt   0       0      0      0 S   0.0  0.0   5:39.75 watchdog/0                                                                  
        11 root      rt   0       0      0      0 S   0.0  0.0   4:54.62 watchdog/1                                                                  
        12 root      rt   0       0      0      0 S   0.0  0.0   1:17.38 migration/1                                                                 
        13 root      20   0       0      0      0 S   0.0  0.0   2:26.26 ksoftirqd/1                                                                 
        15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                
        17 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs                                                                   
        18 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns                                                                       
        19 root      20   0       0      0      0 S   0.0  0.0   0:26.52 khungtaskd                                                                  
        20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback     
    
    针对以上的top命令显示的结果,逐行说明:
    
    第一行:
    15:46:45 — 当前系统时间
    581 days, 22:30 — 系统已经运行了581天22小时30分钟(在这期间没有重启过)
    5 users — 当前有5个用户登录系统
    lload average: 0.00, 0.02, 0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况
    
    这里需要注意:
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。
    如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
    
    第二行:
    Tasks — 任务(进程),系统现在共有133个进程,其中处于运行中的有2个,130个在休眠(sleep),stoped状态的有1个,zombie状态(僵尸)的有0个。
    
    第三行:cpu状态
    0.3% us — 用户空间占用CPU的百分比。
    0.3% sy — 内核空间占用CPU的百分比。
    0.0% ni — 改变过优先级的进程占用CPU的百分比
    99.3% id — 空闲CPU百分比
    0.0% wa — IO等待占用CPU的百分比
    0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
    0.0% si — 软中断(Software Interrupts)占用CPU的百分比
    0.0% st — 虚拟机偷取占用CPU的百分比
    
    第四行:内存状态(k)
    7994044 total — 物理内存总量(8GB)
    1227680 free — 使用中的内存总量(12.2GB)
    3499004 used — 空闲内存总量(350M)
    3267360 buff/cache — 缓存的内存量 (326M)
    
    第五行:swap交换分区(k)
    2097148 tota — 交换区总量(2GB)
    1708072 free — 空闲交换区总量(1.7G)
    389076 used — 使用的交换区总量(390M)
    3954372 avail Mem — 目前可用的内存总量(4GB)。剩余内存+剩余的swap内存
    
    第六行以下:各进程(任务)的状态监控
    PID — 进程id
    USER — 进程所有者
    PR — 进程优先级
    NI — nice值。负值表示高优先级,正值表示低优先级
    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR — 共享内存大小,单位kb
    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU — 上次更新到现在的CPU时间占用百分比
    %MEM — 进程使用的物理内存百分比
    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    COMMAND — 进程名称(命令名/命令行)
    
    -------------------------------------
    扩展:top命令的多U多核CPU监控
    1. 在top基本视图中,按键盘数字"1",可监控每个逻辑CPU的状况:
    top - 18:04:41 up 85 days,  3:25,  3 users,  load average: 0.11, 0.13, 0.13
    Tasks: 128 total,   2 running, 126 sleeping,   0 stopped,   0 zombie
    %Cpu0  :  2.0 us,  0.7 sy,  0.0 ni, 97.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu1  :  2.7 us,  0.7 sy,  0.0 ni, 96.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu2  :  3.7 us,  0.0 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
    %Cpu3  :  2.3 us,  0.3 sy,  0.0 ni, 97.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  7994044 total,  1179668 free,  3552276 used,  3262100 buff/cache
    KiB Swap:  2097148 total,  1708072 free,   389076 used.  3900944 avail Mem 
    .......
    .......
    
    2. 敲击键盘"b", 可以"打开/关闭"top视图的加亮效果。
    3. 敲击键盘"x", 可以"打开/关闭"top视图的排序列的加亮效果。
    4. 如果要在基本视图中显示"CODE"和"DATA"两个字段,可以通过敲击"r"和"s"键。
    
    4)Linux查看进程、CPU、内存、IO相关信息
    ==================================================================================
    1. 监控java线程数:
    # ps -eLf | grep java | wc -l
    
    2. 监控网络客户连接数:
    # netstat -n | grep tcp | grep 侦听端口 | wc -l
    
    3. 进程相关
    # cat /proc/your_PID/status  
    通过"top"或"ps -ef |grep '进程名'" 得到进程的PID。然后执行上面命令可以提供进程状态、文件句柄数、内存使用情况等信息。
    
    4. 内存相关
    # vmstat -s -S M  
    该可以查看包含内存每个项目的报告,通过-S M或-S k可以指定查看的单位,默认为kb。结合watch命令就可以看到动态变化的报告了。
    也可用  cat /proc/meminfo  
    
    5. 查看cpu的配置信息
    # cat /proc/cpuinfo  
    它能显示诸如CPU核心数,时钟频率、CPU型号等信息。
    
    6. 要查看cpu波动情况的,尤其是多核机器上,可以使用下面命令:
    # mpstat -P ALL 10 
    该命令可间隔10秒钟采样一次CPU的使用情况,每个核的情况都会显示出来,例如,每个核的idle情况等。
    
    如果只是需查查看看均值的CPU,可以使用下面命令:
    # iostat -c 
    
    7. IO相关
    # iostat -P ALL  
    该命令可查看所有设备使用率、读写字节数等信息。
    
    5)Linux查看物理CPU个数、核数、逻辑CPU个数
    ==================================================================================
    总核数 = 物理CPU个数 * 每颗物理CPU的核数
    总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数
    
    1. 查看物理CPU个数
    # cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
    
    2. 查看每个物理CPU中core的个数(即核数)
    # cat /proc/cpuinfo| grep "cpu cores"| uniq
    
    3. 查看逻辑CPU的个数
    # cat /proc/cpuinfo| grep "processor"| wc -l
    
    4. 查看CPU信息(型号)
    # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
  • 相关阅读:
    解决content-type为"application/json"的post过来的数据在php端接受不到的问题
    webshell导致项目崩溃
    mysql启动报错 mysql InnoDB: Error: could not open single-table tablespace file
    php性能优化
    post表单翻页保存搜索条件
    PHP7 MongDB 安装与使用
    Mac下编译Thrift的时候Python2.7会报错 site-packages': Operation not permitted
    苹果系统通过brew安装sshpass
    volatile关键字深入理解
    java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理
  • 原文地址:https://www.cnblogs.com/kevingrace/p/6867820.html
Copyright © 2011-2022 走看看