• 服务器硬件资源_CPU


    CPU:中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据

    二、首先要明确物理cpu个数、核数、逻辑cpu数的概念

    1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)

    2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)

    3.逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)

    # 查看物理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的运行原理就是:

      1、取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般是这个样子滴:

      cpu的基本结构及其工作原理

      操作码就是汇编语言里的mov,add,jmp等符号码;操作数地址说明该指令需要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。

      2、指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。

      3、 执行指令,分两个阶段“取操作数”和“进行运算”。

      4、 修改指令计数器,决定下一条指令的地址。

      cpu的基本结构及其工作原理

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    获取cpu数据:vmstat 2

    字段含义说明:(参考文档:https://www.cnblogs.com/tommyli/p/3746187.html)

    类别

    项目

    含义

    说明

    Procs(进程)

    r

    等待执行的任务数

    展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

    B

    等待IO的进程数量

    Memory(内存)

    swpd

    正在使用虚拟的内存大小,单位k

    free

    空闲内存大小

    buff

    已用的buff大小,对块设备的读写进行缓冲

    cache

    已用的cache大小,文件系统的cache

    inact

    非活跃内存大小,即被标明可回收的内存,区别于free和active

    具体含义见:概念补充(当使用-a选项时显示)

    active

    活跃的内存大小

    具体含义见:概念补充(当使用-a选项时显示)

    Swap

    si

    每秒从交换区写入内存的大小(单位:kb/s)

    so

    每秒从内存写到交换区的大小

    IO

    bi

    每秒读取的块数(读磁盘)

    现在的Linux版本块的大小为1024bytes

    bo

    每秒写入的块数(写磁盘)

    system

    in

    每秒中断数,包括时钟中断

    这两个值越大,会看到由内核消耗的cpu时间会越多

    cs

    每秒上下文切换数

    CPU(以百分比表示)

    Us

    用户进程执行消耗cpu时间(user time)

    us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了

    Sy

    系统进程消耗cpu时间(system time)

    sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。

    Id

    空闲时间(包括IO等待时间)

    wa

    等待IO时间

    Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

    常见问题处理

    如果r经常大于4,且id经常少于40,表示cpu的负荷很重。

    如果pi,po长期不等于0,表示内存不足。

    如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。

    1.)如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU。

    2.)如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢。

    3.)如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺。

    解决办法:

    当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的 CPU.  关于CPU的使用情况还可以结合mpstat,  ps aux top  prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些 sql语句不合理等等都会造成这样的现象.

    内存问题现象:

    内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的始终算法来进行页扫描的.如果scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.同样的如果page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数. 如果该值经常为非零值,也有可能存在内存的瓶颈,当然,如果个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理.

    解决办法: 
    1.调节applications & servers使得对内存和cache的使用更加有效.

    2.增加系统的内存.

    3. Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.

    关于内存的使用情况还可以结ps aux top  prstat –a等等一些相应的命令来综合考虑关于具体的内存的使用情况,和那些进程在占用大量的内存.一般情况下,如果内存的占用率比较高,但是,CPU的占用很低 的时候,可以考虑是有很多的应用程序占用了内存没有释放,但是,并没有占用CPU时间,可以考虑应用程序,对于未占用CPU时间和一些后台的程序,释放内 存的占用。

     -------------------------------------------------

    随着用户的增多,如果cpu使用率没有变化,肯定是x线程有问题,要么死锁,要么等待。

  • 相关阅读:
    前言
    实用逆袭课【时间管理、记忆训练、工作效率、人际社交】
    读书确实是一辈子的事
    求职宝典(笔记不详细,但你自己看完消化了真的受用)
    重新认识【时间、金钱、自我、人际关系】
    即兴演讲不是即兴
    大数据和AI的未来畅想
    女性30的思考1
    第四课 人际关系
    第三课 干好工作
  • 原文地址:https://www.cnblogs.com/danyuzhu11/p/10248847.html
Copyright © 2020-2023  润新知