cpu时间

Linux实战监控分析

泄露秘密 提交于 2020-01-02 04:56:52
实时查看tomcat并发连接数 netstat -na | grep ESTAB | grep 8080 | wc -l 实时查看apache并发连接数 netstat -na | grep ESTAB | grep 80 | wc -l 查看物理cpu的个数命令: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 查看核数命令:每个物理cpu中core的个数(即核数) cat /proc/cpuinfo | grep "cpu cores" | uniq 每个物理cpu中逻辑cpu的个数(以下两条命令都可以) cat /proc/cpuinfo | grep "processor" | wc -l cat /proc/cpuinfo | grep "siblings" | uniq(以上命令""或''都可以) windows上看cpu多核命令是systeminfo, 安装sar命令是yum -y install sysstat 监控概述: cpu 在虚机里输入top命令,紧接着输入1,看到变成cpu0了,如图 ,只虚出一个核对于多核cpu来说,cpu0是相当关键的,cpu0相当于cpu中的leader,因为cpu各核间的调度都通过cpu0完成,如果cpu0的负载高,调度cpu就比较困难,就会影响其他核的性能

多线程基本理解

余生颓废 提交于 2020-01-01 22:10:26
    我们提到多线程都会想到一个优点和和一个缺点:优点是CPU使用率提高了换句话说也就是速度正常情况下会变快(为什么说正常情况下?因为因为CPU使用率过高的情况下,你线程再多也没有用,甚至会降低),缺点就是线程不安全(线程不安全指一个变量在多个线程中进行读写,造成读写的内容不一致,无法判断当前读写的变量值是否为准确的)。      那使用多线程一定会提高效率嘛,线程不安全的根本原因是什么呢,我们首先做一个形象的比喻便于后面理解:      假设现在要在AB两点之间修一条路,我们可以从A点开始一直修改到B点,也可以从AB两点一起修。假设我们有甲乙两个团队,并且从一个方向修只需要一个团队(假设人多了也帮不了忙),这种情况下,我们肯定选择让甲乙团队分别从AB两点一起修,这样效率最高了,而每天修路需要各种材料,而要买哪些材料,去哪里买需要去总部C点获取信息,为了提高速度,甲乙两个团队都把购买原材料的信息自己记下来,然后直接去购买原材料,节省了去总部C点获取信息的时间。同时总部需要不断的知道工程总进度,所以甲乙两个团队需要不断地往总进度上累加,比如现在总进度为0,甲团队从总部获取到总进度0,然后累加自己的进度,在告诉总部,同时乙团队也要做同样的事情,从总部获取总进度,然后加上自己进度,在告诉总部,我们可以发现此时就出现了问题,甲乙同时在对总进度进行读写,而且读和写不是一个完整的原子操作

线程的状态详解

若如初见. 提交于 2020-01-01 19:53:58
文章目录 NEW 状态 RUNNABLE 状态 RUNNING 状态 BLOCKED 状态 TERMINATED 状态 守护线程 Thread状态间的转化如下图所示: NEW 状态 当一个 Thread 对象刚刚被创建时,状态为 NEW。此状态仅仅表示 Thread 对象被创建出来了,但此时 Thread 对象和其它 Java 对象没有什么不同,仅仅是存在于内存之中。而当 Thread 对象调用 start 方法后,他的状态改变为 RUNNABLE。此时 Thread 对象进入到 CPU 的竞争队列中。 RUNNABLE 状态 Thread 对象进入 RUNNABLE 状态只有一条路可以走,就是调用 start 方法。在调用 start 方法后,这个线程对象才在 JVM 中挂上号了。Thread 对象还在等待 CPU 的调用中,RUNNABLE 的含义就是 Thread 对象可以执行了,不过还未被执行。此时还在等待 CPU 的调度。 RUNNABLE 状态的线程只可能变迁为 RUNNING 和 TERMINATED 状态。当等到 CPU 调度时,状态变为 RUNNING。而在等待 CPU 调度期间,如果被意外终止,那么则会直接进入 TERMINATED 状态。 RUNNING 状态 RUNNABLE 状态的线程,一旦被 CPU 选中执行,他就会变为 RUNNING 状态

处理机调度

丶灬走出姿态 提交于 2020-01-01 13:45:35
1 处理机的二级调度 宏观上:作业调度 微观上:进程调度 2 作业调度 2.1作业调度的功能 作业调度的主要任务是完成作业从后备状态到执行状态和从执行状态到完成状态的转变。 作业调度功能: 1.记录已进入系统的各作业的情况(JCB,Job Control Block); 2.按一定的调度算法,从后备作业中选择一个或几个作业进入系统内存; 3.为被选中的作业创建进程,并且为其申请系统资源; 4.作业结束后作善后处理工作。 2.2 作业控制块(JCB,Job Control Block) 每个作业进入系统时由系统为其建立一个作业控制块JCB(Job Control Block),它是存放作业控制和管理信息的数据结构,主要信息见下图。 2.3 调度性能的衡量 作业调度算法规定了从后备作业中选择作业进入系统内存的原则,这些原则的性能如何,就是本节所讨论的问题。 一、确定调度算法时应考虑的因素 1.应与系统的整体设计目标一致 2.考虑系统中各种资源的负载均匀 3.保证作业的执行 4.对一些专用资源的使用特性的考虑 二、调度性能的衡量 通常采用平均周转时间和带权平均周转时间 作业的周转时间: ti = tci-tsi ti:作业周转时间 tci:作业完成时间 tsi: 作业提交时间 2.4 先来先服务调度算法和短作业优先调度算法 先来先服务调度算法:

Linux 问题故障定位

。_饼干妹妹 提交于 2020-01-01 12:41:46
1. 背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如果我们有一套好的分析工具,那将是事半功倍,能够帮助大家快速定位问题,节省大家很多时间做更深入的事情。 2. 说明 本篇文章主要介绍各种问题定位的工具以及会结合案例分析问题。 3. 分析问题的方法论 套用5W2H方法,可以提出性能分析的几个问题 What-现象是什么样的 When-什么时候发生 Why-为什么会发生 Where-哪个地方发生的问题 How much-耗费了多少资源 How to do-怎么解决问题 4. cpu 4.1 说明 针对应用程序,我们通常关注的是内核CPU调度器功能和性能。 线程的状态分析主要是分析线程的时间用在什么地方,而线程状态的分类一般分为: a. on-CPU:执行中,执行中的时间通常又分为用户态时间user和系统态时间sys。 b. off-CPU:等待下一轮上CPU,或者等待I/O、锁、换页等等,其状态可以细分为可执行、匿名换页、睡眠、锁、空闲等状态。 如果大量时间花在CPU上,对CPU的剖析能够迅速解释原因;如果系统时间大量处于off-cpu状态,定位问题就会费时很多

利用CPU cache特性优化Go程序

本小妞迷上赌 提交于 2020-01-01 10:19:18
demo 如下Go语言伪代码,开启两个协程,分别对一个结构体变量中的两个相邻的数据成员进行n次原子自增操作,当打开 _ [56]byte 这个看似多余的代码后,程序运行速度加快了一倍!你知道是为什么吗? ... type Foo struct { a uint64 // _ [56]byte b uint64 // _ [56]byte } ... go func() { for i := 0; i < 1000 * 1000; i++ { atomic.AddUint64(&foo.a, 1) } }() go func() { for i := 0; i < 1000 * 1000; i++ { atomic.AddUint64(&foo.b, 1) } }() // 等待两个协程执行完毕,记录总执行时间 ... 完整可运行代码见: https://github.com/q191201771/naza/blob/master/playground/p3/p3.go CPU cache 大家都知道,内存的速度远快于磁盘的速度,但事实上,跟CPU的处理速度相比,内存还是太慢了。CPU不愿意老是等内存,于是就有了 CPU cache 。CPU cache的速度比内存快数十倍。 很多资料上都有关于不同存储硬件速度和容量的对比,但是有的数据随着硬件的发展已经过期了

Linux下面sysstat的安装与简介

我的梦境 提交于 2020-01-01 08:38:20
https://blog.51cto.com/smoke520/2160073 在Linux系统下获取sysstat-10.0.5.tar.gz的两种方式: 方式一: 下载sysstat-10.0.5.tar.gz到本地 通过CRT使用rz命令上传 方式二: #wget http://sebastien.godard.pagesperso-orange.fr/sysstat-12.0.1.tar.gz 一般将sysstat-10.0.5.tar.gz放到/tools, 安装命令: #tar zxvf sysstat-12.0.1.tar.gz #cd sysstat-12.0.1 #./configure #make #make install 这个包一但安装下去,一般包括如下的几个命令可以使用。 sar iostat sa1 sa2 sadf mpstat sadc sysstat sysstat 工具简介 sysstat 是 Linux 系统中的常用工具包。它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。 sysstat 工具包中包含两类工具: 即时查看工具:iostat、mpstat、sar 累计统计工具:sar 也就是说,sar 具有这两种功能。因此,sar 是 sysstat 中的核心工具。 为了实现 sar 的累计统计

浅析线程进程相关的知识点

只谈情不闲聊 提交于 2020-01-01 03:56:39
1.线程、进程 1.1 概念 进程 :引入:为了程序能够并发执行,且为了对并发执行的程序加以描述和控制,引入了进程的概念。   (1)进程是程序的一次执行。   (2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。   (3)进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。   (4)进程是作为能够拥有资源和独立运行的基本单位。 线程 : 引入:在操作系统中引入线程,是为了减少程序并发执行时锁付出的空间开销,使OS具有更好的并发性。1.2 1.2 线程与进程进行比较   线程具有许多传统进程所具有的特征,所以又称为轻量级进程或进程元,相应的把进程称为重量级的进程,传统进程相当于只有一个线程的任务,在引入了新城的操作系统中,通常一个进程都拥有若干个线程,至少也有一个线程。   相同点:   (1)调度:   (2)并发性:在引入了线程的操作系统中,进程之间或一个线程中的多个线程之间都可以并发执行。   (3)拥有资源:不论是传统的操作系统还是引入了线程的操作系统,进程都可以拥有资源,是系统中拥有资源的有个基本单位。   (4)系统开销:在某些操作系统中,线程的切换、同步和通信都无需操作系统内核的干预。   不同点 :   (1)调度:在传统操作系统中,进程是拥有资源的基本和独立调度、分派的基本单位,在引入了线程的操作系统中

Linux相关知识练习02

拥有回忆 提交于 2020-01-01 01:21:08
Linux相关知识练习 每日几题 1.命令 iostat 的各项指标的含义,哪些项体现iops ,哪些体现吞吐量,await 和svctm两项数据差别大(当await 远大于svctm)说明什么问题?当%util接近或大于100%,说明什么? 假如我的机器有很多磁盘分区,要求只监控其中某一个比如sda,每秒采集一次,并打印时间,共采集一分钟。 iostat用于输出 CPU 和磁盘 I / O 相关的统计信息。 用法:iostat [ 选项 ] [ < 时间间隔 > [ < 次数 > ] ] 常用选项说明: - c:只显示系统 CPU 统计信息,即单独输出avg - cpu结果,不包括device结果 - d:单独输出Device结果,不包括cpu结果 - k / - m:输出结果以kB / mB为单位,而不是以扇区数为单位 - x : 输出更详细的io设备统计信息 interval / count:每次输出间隔时间,count表示输出次数,不带count表示循环输出 iostat,结果为从系统开机到当前执行时刻的统计信息 avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。 iostat -c #只显示cpu统计信息,即单独输出avg-cpu结果,不包括device结果 iostat

并发技术、进程、线程和锁拾遗

点点圈 提交于 2020-01-01 00:48:07
并发技术、进程、线程和锁拾遗 Part1. 多任务 计算机发展起初,CPU 资源十分昂贵,如果让 CPU 只能运行一个程序那么当 CPU 空闲下来(例如等待 I/O 时),CPU 资源就会被浪费,为了使 CPU 资源得到更好的利用,先驱编写了一个监控程序,如果发现某个程序暂时无需使用 CPU 时,监控程序就把另外的正在等待 CPU 资源的程序启动起来,以充分利用 CPU资源。这种方法称为 - 多道程序(Multiprogramming) 对于多道程序,最大的弊端是各程序之间不区分轻重缓急,对于用户交互式的程序来说,对 CPU 计算时间的需求并不多,但是对于响应速度却有比较高的要求。而对于计算类程序来说则相反,对响应速度要求低,但需要长时间的 CPU 计算。想象一个场景:我在同时在浏览网页和听音乐,我们希望浏览器能够快速响应,同时也希望音乐不停,这时候 多道程序 就没法达到我们的要求了。 于是人们改进了 多道程序 ,使得每个程序运行一段时间之后,都主动让出 CPU 资源,这样每个程序在一段时间内都有机会运行一小段时间。这样像浏览器这样的交互式程序就能够快速地被处理,同时计算类程序也不会受到很大影响。这种程序协作方式被称为 分时系统(Time-Sharing System) 。 在分时系统的帮助下,我们可以边用浏览器边听歌了。 但是 如果某个程序出现了错误,导致了死循环