精华内容
下载资源
问答
  • cpu核数

    2017-07-18 10:51:46
    1. 开机重启,按下F2,进入BIOS,选择Processor Configuration   2. 找到Hyper Threading Tech,选择Enable ...3. 调整CPU 核数,找到Active Processor Cores,选择要设置的个数 或者使用命
    

    1.      开机重启,按下F2,进入BIOS,选择Processor Configuration

     

    2.      找到Hyper Threading Tech,选择Enable


     

     

    3.      调整CPU核数,找到Active Processor Cores,选择要设置的个数

    或者使用命令修改,需要几个core,把其他core都禁掉

    echo 0> /sys/devices/system/cpu/cpu0/online禁掉cpu0

    echo 1 > /sys/devices/system/cpu/cpu0/online开启cpu0

     

    HT打开的作用,比如一个cpu有一个core,有两个cpu,那么HT关闭的时候,就有两个coreHT打开的时候就有四个core

     

     

     cat /proc/cpuinfo |grep "cpucores"|sort|uniq

    cat /proc/cpuinfo |grep "physicalid"|sort|uniq

     

     

    
    展开全文
  • CPU核数

    2019-10-12 17:36:21
    CPU 核心数 最近在项目上使用并发方式去读取文件并且计算分析以提升效率。使用的是python 语言。在查看日志日志之后下了一跳。我预想着测试环境depoly文件是配置双核CPU。应该也是2才对,结果和不一样。 python ...

    CPU 核心数

    最近在项目上使用并发方式去读取文件并且计算分析以提升效率。使用的是python 语言。在查看日志之后下了一跳。我预想着测试环境depoly文件是配置双核CPU。应该也是2才对,结果和不一样。

    python 获取CPU核心

    import psutil
    psutil.cpu_count() # CPU逻辑数量
    psutil.cpu_count(logical=False) # CPU物理核心
    

    结果为

    >>> import psutil
    >>> psutil.cpu_count()
    48
    >>> psutil.cpu_count(logical=False)
    12
    >>>
    

    也就是说CPU 逻辑核心数为48,而核心数为12。那么到底取的是哪个?这两者之间有什么关系?

    基础概念

    CPU 其实是一个大概念,是我们看到的一个物理实体,一个小盒子称之为CPU,可以插入主机的卡槽,对应就是Socket。

    • CPU( CentralProcessingUnit): 中央处理单元,CPU不等于物理核,更不等于逻辑核。
      物理核(physical core/processor): 可以看的到的,真实的cpu核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。
    • 逻辑核( logical core/processor,LCPU): 在同一个物理核内,逻辑层面的核。(比喻,像动画片一样,我们看到的“动画”,其实是一帧一帧静态的画面,24帧/s连起来就骗过了人类的眼睛,看起来像动起来一样。逻辑核也一样,物理核通过高速运算,让应用程序以为有两个cpu在运算)。
    • 超线程( Hyper-threading, HT):超线程可以在一个逻辑核等待指令执行的间隔(等待从cache或内存中获取下一条指令),把时间片分配到另一个逻辑核。高速在这两个逻辑核之间切换,让应用程序感知不到这个间隔,误认为自己是独占了一个核。
      关系: 一个CPU可以有多个物理核。如果开启了超线程,一个物理核可以分成n个逻辑核,n为超线程的数量。

    逻辑核和其他的逻辑地址等等一个套路。至于超线程也就是原来单个核只能跑单个线程,但是现在通过切换(这里类似于线程的上下文切换,时间换空间)达到看起来跑了多个线程的假象。这里是CPU级,和操作系统的原理类似。

    如图表示了一个CPU 芯片可能 内部的构造。
    在这里插入图片描述

    下图表示的是一个CPU 内部构造。这个CPU构造更为复杂。一个CPU芯片包含了4个核(core) 每个核使用了超线程技术。那么我们就称之为单个4核8线程处理器。
    在这里插入图片描述

    查看CPU参数

    使用linux 命令lscpu 可以查看到。

    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit #运行方式
    Byte Order:            Little Endian#字节顺序 
    CPU(s):                48 #逻辑cpu颗数
    On-line CPU(s) list:   0-47 #在线CPU
    Thread(s) per core:    2 #每个核心线程
    Core(s) per socket:    12 #每个cpu插槽核数/每颗物理cpu核数
    Socket(s):             2 #cpu插槽数 
    NUMA node(s):          2  #非统一内存访问节点
    Vendor ID:             GenuineIntel #cpu厂商ID 
    CPU family:            6
    Model:                 85
    Model name:            Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz
    Stepping:              4
    CPU MHz:               2177.406
    CPU max MHz:           2101.0000
    CPU min MHz:           800.0000
    BogoMIPS:              4200.00
    Virtualization:        VT-x
    Hypervisor vendor:     vertical #虚拟化架构
    Virtualization type:   full #cpu支持的虚拟化技术
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              1024K
    L3 cache:              16896K
    NUMA node0 CPU(s):     0-11,24-35
    NUMA node1 CPU(s):     12-23,36-47
    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 cpuid aperfmperf pni pclmulqdq dtes64 ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single pti intel_ppin ssbd mba ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb intel_pt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts pku ospke flush_l1d
    

    通过以上参数可以看到当前的系统有两个CPU卡槽,每一个卡槽有12个core,而每一个core则有2个和核心线程。

    所以对应的cpu 数量为:
    cpu_count = socket * core per socket * thread per core = 2 * 12 * 2 = 48

    性能基础之CPU、物理核、逻辑核概念与关系

    psutil

    展开全文
  • linux 性能篇 -- 查看cpu核数linux 性能篇查看物理 CPU 的个数#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l查询系统 CPU 的物理核数(查看 CPU 是几核):cat /proc/cpuinfo | grep "cpu cores" | uniq...

    linux 性能篇 -- 查看cpu核数

    linux 性能篇

    查看物理 CPU 的个数

    #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

    查询系统 CPU 的物理核数(查看 CPU 是几核):

    cat /proc/cpuinfo | grep "cpu cores" | uniq

    查询系统具有多少个逻辑核

    (逻辑 cpu 的个数   逻辑 CPU 数量 = 物理 cpu 数量 x cpu cores 这个规格值 x 2(如果支持并开启 ht)):

    cat /proc/cpuinfo | grep "processor" | wc -l

    查询系统 CPU 是否启用超线程:

    cat /proc/cpuinfo | grep -e "cpu cores"  -e "siblings" | sort | uniq

    输出举例:

    cpu cores    : 6

    siblings    : 6

    如果 cpu cores 数量和 siblings 数量一致,

    则没有启用超线程,否则超线程被启用。

    举例:#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

    2

    #cat /proc/cpuinfo |grep "cores"|uniq

    6

    #cat /proc/cpuinfo |grep "processor"|wc -l

    24

    我这里应该是2个CPU,每个CPU有6个core,应该是Intel的CPU,支持超线程,所以显示24

    来源: http://www.bubuko.com/infodetail-1957130.html

    展开全文
  • CPU核数和load average的关系

    万次阅读 多人点赞 2018-04-27 18:12:59
    在前面的文章《Linux系统监控——top命令》中我简单提到了,判断load average的数值到底大不大的判断依据,就是数值除以CPU核数,大于5,就说明超负荷运转了。——这里其实不太严谨 今天这篇文章来仔细分析分析,...

    作者新建了QQ群:460430320,供大家交流测试心得(培训机构勿进)。另外,还会不定期上传测试资料,也欢迎您共享测试资料。

    在前面的文章《Linux系统监控——top命令》中我简单提到了,判断load average的数值到底大不大的判断依据,就是数值除以CPU核数,大于5,就说明超负荷运转了。——这里其实不太严谨

    今天这篇文章来仔细分析分析,CPU和load average的关系。

    转载文章一

    我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟、五分钟、以及十五分钟的系统平均负载

    例如我的某台服务器:
    这里写图片描述

    你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:

    load average: 1.84, 1.34, 0.68

    很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越大,这也可能是服务器出现某种问题的信号。

    而事实不完全如此,是什么因素构成了负载均值的大小,以及如何区分它们目前的状况是 “好”还是“糟糕”?什么时候应该注意哪些不正常的数值?

    回答这些问题之前,首先需要了解下这些数值背后的些知识。我们先用最简单的例子说明, 一台只配备一块单核处理器的服务器。

    行车过桥
    一只单核的处理器可以形象得比喻成一条单车道。设想下,你现在需要收取这条道路的过桥费 — 忙于处理那些将要过桥的车辆。你首先当然需要了解些信息,例如车辆的载重、以及 还有多少车辆正在等待过桥。如果前面没有车辆在等待,那么你可以告诉后面的司机通过。 如果车辆众多,那么需要告知他们可能需要稍等一会。

    因此,需要些特定的代号表示目前的车流情况,例如:

    0.00 表示目前桥面上没有任何的车流。 实际上这种情况与 0.00 和 1.00 之间是相同的,总而言之很通畅,过往的车辆可以丝毫不用等待的通过。

    1.00 表示刚好是在这座桥的承受范围内。 这种情况不算糟糕,只是车流会有些堵,不过这种情况可能会造成交通越来越慢。

    超过 1.00,那么说明这座桥已经超出负荷,交通严重的拥堵。 那么情况有多糟糕? 例如 2.00 的情况说明车流已经超出了桥所能承受的一倍,那么将有多余过桥一倍的车辆正在焦急的等待。3.00 的话情况就更不妙了,说明这座桥基本上已经快承受不了,还有超出桥负载两倍多的车辆正在等待。

    上面的情况和处理器的负载情况非常相似。一辆汽车的过桥时间就好比是处理器处理某线程 的实际时间。Unix 系统定义的进程运行时长为所有处理器内核的处理时间加上线程 在队列中等待的时间。

    和收过桥费的管理员一样,你当然希望你的汽车(操作)不会被焦急的等待。所以,理想状态 下,都希望负载平均值小于 1.00 。当然不排除部分峰值会超过 1.00,但长此以往保持这 个状态,就说明会有问题,这时候你应该会很焦急。

    假设当前服务器只有一个CPU,那么上面的"load average"就告诉我们在最近一分钟内,平均有0.14个进程在等待CPU;最近五分钟内,CPU有30%的idle时间;而最近15分钟,平均有3.06个进程在等待CPU。而当服务器有4个CPU的时候,则是另外一番景象。

    “所以你说的理想负荷为 1.00 ?”

    嗯,这种情况其实并不完全正确。负荷 1.00 说明系统已经没有剩余的资源了。在实际情况中 ,有经验的系统管理员都会将这条线划在 0.70:

    “需要进行调查法则”: 如果长期你的系统负载在 0.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。

    “现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。

    “凌晨三点半锻炼身体法则”:5.00。 如果你的服务器负载超过了 5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。

    PS:接下来是非常关键的一点,当前的CPU负载高还是不高,只看上面的数据是不行的,还要看服务器有多少个CPU 。

    转载文章二:

    CPU利用率与Load Average的区别?

    CPU利用率,是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果CPU被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。

    Load Average是 CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

    那么CPU利用率与Load Average对于性能测试的意义有什么区别呢?实际上,CPU利用率反映的是CPU被使用的情况,当CPU长期处于被使用而没有得到足够的时间休息间歇,那么对于CPU硬件来说是一种超负荷的运作,需要调整使用频度。而Load Average却从另一个角度来展现对于CPU使用状态的描述,Load Average越高说明对于CPU资源的竞争越激烈,CPU资源比较短缺。对于资源的申请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下CPU资源的长期“热竞争”也是对于硬件的一种损害。

    如何评估性能需求中合理的Load Average?

    一般来说,Load Average是与机器内核数有关的。以一个单核的机器为例,load=0.5表示CPU还有一半的资源可以处理其他的线程请求,load=1表示CPU所有的资源都在处理请求,没有剩余的资源可以利用了,而load=2则表示CPU已经超负荷运作,另外还有一倍的线程正在等待处理。所以,对于单核机器来说,理想状态下,Load Average要小于1。同理,对于双核处理器来说,Load Average要小于2。结论是:多核处理器中,你的Load Average不应该高于处理器核心的总数量。

    不同核处理器之间的load值怎样换算?
    性能测试中可能遇到这样的问题,你的线上机器是8核的,但是线下性能测试机只有4核的,那么我用4核机器测试得到的load值是4,换算到8核机器上应该是多少呢?————这里原作者计算感觉晕了,我写自己的逻辑
    应该是4*4/8=2,即核多了,load值会变小。

    转载文章三

    平均负载是指上一分钟同时处于就绪状态的平均进程数。在CPU中可以理解为CPU可以并行处理的任务数量,就是CPU个数X核数。如果CPU Load等于CPU个数乘以核数,那么就说CPU正好满负载,再多一点,可能就要出问题了,有些任务不能被及时分配处理器,那要保证性能的话,最好要小于CPU个数X核数X0.7。

    Load Average是指CPU的Load。它所包含的信息是在一段时间内CPU正在处理及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

    Load Average的值应该小于CPU个数X核数X0.7,Load Average会有3个状态平均值,分别是1分钟、5分钟和15分钟平均Load。如果1分钟平均出现大于CPU个数X核数的情况,还不需要担心;如果5分钟的平均也是这样,那就要警惕了;15分钟的平均也是这样,就要分析哪里出现问题,防范未然。

    转载文章四

    在平时的运维工作中,当一台服务器的性能出现问题时,通常会去看当前的CPU使用情况,尤其是看下CPU的负载情况(load average)。对一般的系统来说,根据cpu数量去判断。比如有2颗cup的机器。如果平均负载始终在1.2以下,那么基本不会出现cpu不够用的情况。也就是Load平均要小于Cpu的数量。

    对于cpu负载的理解,首先需要搞清楚下面几个问题:

    1)系统load高不一定是性能有问题。
    因为Load高也许是因为在进行cpu密集型的计算

    2)系统Load高不一定是CPU能力问题或数量不够。
    因为Load高只是代表需要运行的队列累计过多了。但队列中的任务实际可能是耗Cpu的,也可能是耗i/0奶子其他因素的。

    3)系统长期Load高,解决办法不是一味地首先增加CPU
    因为Load只是表象,不是实质。增加CPU个别情况下会临时看到Load下降,但治标不治本。

    4)在Load average 高的情况下需要鉴别系统瓶颈到底是CPU不足,还是io不够快造成或是内存不足造成的。

    ===============================================================================================================
    要想获得服务器的CPU负载情况,有下面几种命令:
    1)w命令
    [root@localhost ~]# w
    12:12:41 up 167 days, 20:46, 2 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root pts/0 192.168.1.5 10:01 1.00s 0.11s 0.00s w
    root pts/2 192.168.1.5 10:19 1:47m 0.04s 0.04s -bash

    2)uptime命令(一般首先会根据最后那个15分钟的load负载为准)
    [root@localhost ~]# uptime
    12:12:55 up 167 days, 20:46, 2 users, load average: 0.00, 0.01, 0.05

    3)top命令
    [root@localhost ~]# top
    top - 12:13:22 up 167 days, 20:47, 2 users, load average: 0.00, 0.01, 0.05
    Tasks: 272 total, 1 running, 271 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 65759080 total, 58842616 free, 547908 used, 6368556 buff/cache
    KiB Swap: 2097148 total, 2097148 free, 0 used. 64264884 avail Mem

    对上面第三行的解释:
    us(user cpu time):用户态使用的cpu时间比。该值较高时,说明用户进程消耗的 CPU 时间比较多,比如,如果该值长期超过 50%,则需要对程序算法或代码等进行优化。
    sy(system cpu time):系统态使用的cpu时间比。
    ni(user nice cpu time):用做nice加权的进程分配的用户态cpu时间比
    id(idle cpu time):空闲的cpu时间比。如果该值持续为0,同时sy是us的两倍,则通常说明系统则面临着 CPU 资源的短缺。
    wa(wait):等待使用CPU的时间。
    hi(hardware irq):硬中断消耗时间
    si(software irq):软中断消耗时间
    st(steal time):虚拟机偷取时间

    以上解释的这些参数的值加起来是100%。

    4)vmstat
    [root@localhost ~]# vmstat
    procs -----------memory---------------------swap-------io---------system--------cpu-----
    r b swpd free buff cache si so bi bo in cs us sy id wa st
    3 0 0 1639792 724280 4854236 0 0 4 34 4 0 19 45 35 0 0

    解释说明:

    procs部分的解释

    • r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
    • b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

    cpu部分的解释

    • us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
    • sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
    • wa 列显示了等待CPU时间的百分比。这里wa的参考值为5%,如果wa超过5%,说明CPU等待严重
    • id 列显示了cpu处在空闲状态的时间百分比

    system部分的解释
    in 列表示在某一时间间隔中观测到的每秒设备中断数。
    cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。


    memory部分的解释
    swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
    free 当前的空闲页面列表中内存数量(k表示)
    buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
    cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。


    swap部分的解释
    si 由内存进入内存交换区数量。
    so由内存交换区进入内存数量。


    IO部分的解释
    bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
    bo 块设备写入数据的总量(写磁盘)(每秒kb)

    5)也可以使用dstat命令查看cpu信息
    [root@localhost ~]# dstat
    ----total-cpu-usage---- -dsk/total- -net/total- —paging-- —system–
    usr sys idl wai hiq siq| read writ| recv send| in out | int csw
    19 45 35 0 0 0| 30k 265k| 0 0 | 0 0 |9025 12k
    9 18 73 0 0 0| 0 144k|2578k 65k| 0 0 |3956 4343

    6)可以使用iostat查看IO负载
    [root@localhost ~]# iostat 1 1
    Linux 2.6.32-696.16.1.el6.x86_64 (nc-ftp01.kevin.cn) 2017年12月29日 x86_64 (4 CPU)

    avg-cpu: %user %nice %system %iowait %steal %idle
    19.32 0.00 45.44 0.06 0.26 34.93

    Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    xvda 14.17 29.94 265.17 63120486 558975100

    解释说明:
    avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
    %user: 在用户级别运行所使用的CPU的百分比.
    %nice: nice操作所使用的CPU的百分比.
    %sys: 在系统级别(kernel)运行所使用CPU的百分比.
    %iowait: CPU等待硬件I/O时,所占用CPU百分比.
    %idle: CPU空闲时间的百分比.

    Device段:各磁盘设备的IO统计信息
    tps: 每秒钟发送到的I/O请求数.
    Blk_read /s: 每秒读取的block数.
    Blk_wrtn/s: 每秒写入的block数.
    Blk_read: 读入的block总数.
    Blk_wrtn: 写入的block总数.

    [root@localhost ~]# iostat -x -k -d 1
    Linux 2.6.32-696.el6.x86_64 (centos6-vm02) 01/04/2018 x86_64 (4 CPU)

    Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
    scd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 0.36 0.36 0.00 0.36 0.00
    vda 0.01 0.13 0.04 0.13 0.60 0.89 18.12 0.00 2.78 0.19 3.53 2.55 0.04
    dm-0 0.00 0.00 0.04 0.22 0.58 0.88 11.25 0.00 3.27 0.25 3.82 1.61 0.04
    dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 0.13 0.13 0.00 0.04 0.00
    dm-2 0.00 0.00 0.00 0.00 0.00 0.00 7.91 0.00 0.19 0.10 5.00 0.16 0.00

    解释说明:
    rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
    wrqm/s: 每秒对该设备的写请求被合并次数
    r/s: 每秒完成的读次数
    w/s: 每秒完成的写次数
    rkB/s: 每秒读数据量(kB为单位)
    wkB/s: 每秒写数据量(kB为单位)
    avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
    avgqu-sz: 平均等待处理的IO请求队列长度
    await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
    svctm: 平均每次IO请求的处理时间(毫秒为单位)
    %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    idle小于70% IO压力就较大了,一般读取速度有较多的wait。
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

    (2)简单说下CPU负载和CPU利用率的区别
    1)CPU利用率:显示的是程序在运行期间实时占用的CPU百分比
    2)CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。

    CPU利用率高,并不意味着负载就一定大。
    举例来说:
    如果有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于"1",因为CPU仅负责一个工作!
    如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间
    进行频繁的工作切换。

    ------------------------下面通过一个电话亭打电话的比喻来说明这两者之间的区别------------------------
    某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。
    电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。

    在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。
    为了统计平均负载情况,我们5分钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

    有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看
    作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程
    序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队
    没有必然关系。

    (3)load average相关梳理(一分钟,五分钟,十五分钟的平均CPU负载,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。所谓CPU负载指的是一段时间内任务队列的长度,通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU。(当前的"负载值除以cpu核数"就是cpu的利用率))
    load average表示的是系统的平均负荷,即CPU的Load。
    它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
    它包括3个数字,分别表示系统在1、5、15分钟内进程队列中的平均进程数量(即处理的进程情况),
    原则上来说这3个数字越小越好,数字越小表示服务器的工作量越小,系统负荷比较轻

    当CPU完全空闲的时候,平均负荷为0(即load average的值为0);当CPU工作量饱和的时候,平均负荷为1。

    这里需要注意的是:
    load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数
    比如一台服务器有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能;
    但是偶尔大于4时,倒不用担心,一般不会影响系统性能。
    相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲,比如本例中的输出,CPU是比较空闲的。

    -------------load average举例理解---------------
    判断系统负荷是否过重,必须理解load average的真正含义。假设当前我的一台服务器只有一个CPU,所有的运算都必须由这个CPU来完成。
    不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过(很显然,这座桥只能单向通行)。
    1)系统负荷为0,意味着大桥上一辆车也没有。
    2)系统负荷为0.5,意味着大桥一半的路段有车。
    3)系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。
    4)系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。
    以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;
    系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。
    总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。

    CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。
    如果CPU每分钟最多处理100个进程,那么:
    系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;
    系统负荷1.0,意味着CPU在这1分钟 里正好处理100个进程;
    系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

    为了服务器顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。
    很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,就需要动手干预了。

    --------1.0是系统负荷的理想值吗?-----------
    不一定,系统管理员往往会留一点余地,当这个值达到0.7,就应当引起注意了。
    以往经验是这样的:
    当系统负荷持续大于0.7,必须开始调查了,问题出在哪里,防止情况恶化。
    当系统负荷持续大于1.0,必须动手寻找解决办法,把这个值降下来。
    当系统负荷达到5.0,就表明系统有很严重的问题,长时间没有响应,或者接近死机了。觉不能让系统达到这个值。

    上面,假设我的这台服务器只有1个CPU。如果它装了2个CPU,就意味着服务器的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。
    还是用大桥来类比,两个CPU就意味着大桥有两根车道了,通车能力翻倍了。
    所以,2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的服务器,可接受的系统负荷最大为n.0。

    ---------至于load average是多少才算理想,这个有争议,各有各的说法---------
    个人比较赞同CPU负载小于等于"内核数乘以0.5-0.7"算是一种理想状态。
    比如4核CPU的服务器,理想负载是小于等于2,最好不要超过2.8,否则性能多少会受影响。

    不管某个CPU的性能有多好,1秒钟能处理多少任务,可以认为它无关紧要,虽然事实并非如此。
    在评估CPU负载时,只以5分钟为单位做统计任务队列长度。如果每隔5分钟统计的时候,发现任务队列长度都是1,那么CPU负载就为1。

    假如现在某台服务器只有一个单核的CPU,负载一直为1,意味着没有任务在排队,还不错。
    但是这台服务器是双核CPU,等于是有4个内核,每个内核的负载为1的话,总负载为4。这就是说,如果这台服务器的CPU负载长期保持在4左右,还可以接受。
    但是每个内核的负载为1,并不能算是一种理想状态!这意味着服务器的CPU一直很忙,不得清闲。

    -----------load average返回三个平均值应该参考哪个值?------------
    如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。
    如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。
    所以应该主要观察"15分钟系统负荷",将它作为服务器正常运行的指标。

    ----------如何来降低服务器的CPU负载?--------------
    最简单办法的是更换性能更好的服务器,不要想着仅仅提高CPU的性能,那没有用,CPU要发挥出它最好的性能还需要其它软硬件的配合。
    在服务器其它方面配置合理的情况下,CPU数量和CPU核心数(即内核数)都会影响到CPU负载,因为任务最终是要分配到CPU核心去处理的。两块CPU要比一块
    CPU好,双核要比单核好。因此,需要记住的是:除去CPU性能上的差异,CPU负载是基于内核数来计算的。有一个说法是"有多少内核,即有多少负载"。

    展开全文
  • 物理CPU,CPU核数,逻辑CPU

    千次阅读 2019-01-25 11:46:09
    CPU概念 物理CPU 在Info中由physical id识别 物理CPU指的是实际主板上插槽上的CPU个数。...CPU核数是指单块CPU上面能处理数据的芯片组的数量,如双核、四核等。通常每个CPU下的核数都是固...
  • 获取CPU核数

    2021-05-26 20:27:34
    获取CPU核数 System.out.println(Runtime.getRuntime().availableProcessors()); 获取CPU核数代码
  • linux shell 查看 cpu核数.pdf
  • linux cenots 查看cpu核数.pdf
  • 高性能服务器CPU核数调整研究.pdf
  • linux下怎么查看cpu核数.pdf
  • 查看电脑CPU型号和CPU核数,以便在购买新电脑时能够作为判断电脑性能的参考依据.下面是学习啦小编收集整理的怎么查看CPU型号和CPU核数,希望对大家有帮助~~查看CPU型号和CPU核数方法/步骤右击我的电脑,选择属性在...
  • OS如何获取CPU核数

    2018-01-05 23:15:26
    本文不是讨论你在Windows或在Linux下如何查看CPU核数(Linux下查看/proc/cpuinfo或/sys/drivers/system/cpu/)。 重点是操作系统怎么知道CPU有几个核呢?有人说是CPUID,不过并不是所有的CPU都能通过CPUID来识别,...
  • 物理CPU 逻辑CPU 核数

    2016-06-20 14:21:00
    一、概念 ...③ CPU核数 一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU 二、查看CPU信息 ① 查看物理CPU的个数 #cat /proc/...
  • 物理cpu数和cpu核数和逻辑cpu数和vcpu区别 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu ...
  • Linux下查看物理CPU、逻辑CPU和CPU核数 1.概念 物理CPU:实际Server中插槽上的CPU个数。 物理cpu数量:可以数不重复的 physical id 有几个。 2.逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是...
  • Linux下区分物理CPU、逻辑CPU和CPU核数㈠ 概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /p...
  • Linux下区分物理CPU、逻辑CPU和CPU核数㈠ 概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /p...
  • 现在可以确定的是用system.hw.cpu[,]这个Key,但是,zabbix 文档介绍的这个Key的说有可能的Key都用的还是没能拿到 Cpu核数。 4.这个Key只支持Linux,不支持Windows, 5.请问:要Windows,Linux都支持的获取CPU核数...
  • 二、CPU核数 单块CPU上面集成一个或者多个处理器芯片(称为Core,核心)。 CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,但是仅仅提高单核芯片的速度会产生过多热量且无法带来...
  • linux服务器的物理CPU,CPU核数,逻辑CPU及Hadoop的Vcore 1、Linux服务器的核数的概念 物理CPU: 服务器上真实存在的CPU,可以看到 CPU的核 (core): 一个CPU上包含多少核(core),真实存在但不能直接看到 总...
  • Python获取计算机CPU核数

    千次阅读 2020-09-14 16:43:28
    Python获取计算机CPU核数。一个代码换了台电脑运行,发现报错。经检查发现是因为源代码中有并行部分,且默认了CPU数量为6。这样兼容性就不好了。所以进行修改,以运行代码的计算机配置为准设置参数。
  • 主要介绍了Android获取设备CPU核数、时钟频率以及内存大小的方法,涉及Android针对系统硬件相关操作技巧,需要的朋友可以参考下
  • C/C++获取CPU核数

    千次阅读 2019-09-27 15:44:36
    最近开始做服务器,要求获取当前的CPU核数,就做了个Demo,获取CPU核数。 系统环境:ubuntu16.04 CPU信息:Intel® Core™ i5-7200U CPU @ 2.50GHz × 4 代码如下(跨平台): #include <stdio.h> #if ...
  • 文章目录一、名词解释二、查看CPU信息参考文献未看完的参考文献 一、名词解释 CPU(Central Processing Unit): 中央处理单元, ...cpu核数: 每颗物理CPU可以有1个或者多个物理内核,通常每颗物理CPU
  • 不少网友听说开启电脑cpu核数可以让电脑性能变高,不知道是不是真的。也有网友担心电脑cpu核数全开会怎样,会不会对电脑有影响。今天小编就跟大家聊下电脑cpu核数全开对电脑影响。首先,想要开启cpu核数,是可以在...
  • 当程序的执行效率要求较高时,可以考虑多线程技术,在使用多线程之前,需要我们了解自己的电脑或者服务器的CPU线程数量,线程数量与CPU核数有关系,因此如何查看电脑和服务器的CPU核数与线程数将是我们运用多线程...
  • 物理cpu数、cpu核数、逻辑cpu数笔记

    千次阅读 2018-12-14 14:38:21
    二、CPU核数 单块CPU上面集成一个或者多个处理器芯片(称为Core,核心)。 CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,但是仅仅提高单核芯片的速度会产生过多热量且无法带来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,310
精华内容 20,124
关键字:

cpu核数