cpu时间

JVM—GC垃圾回收器总结

本小妞迷上赌 提交于 2020-03-08 23:11:12
收集算法(标记-清理、复制、标记-整理、分代收集)是内存回收的方法论,垃圾收集器就是内存回收的具体实现。 主要有7个gc器,如下图。 1 Serial收集器 1.1 介绍 Serial收集器是单线程的收集器。 单线程 :1.不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,2.且在垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。 Stop the world :是VM在后台自动发起和自动完成的,在用户不可见情况下把用户正常工作的线程全部停掉。 1.2 缺点: 由于Stop The World,给用户带来不良体验,比如,计算机每运行一段时间就会暂停响应几分钟来处理垃圾收集。 1.3 优点 1)简单而高效(与其他收集器的单线程比); 2)对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。 1.4 应用场景 1)VM运行在 Client 模式下的默认新生代收集器; 2)在用户的桌面应用场景中,停顿时间完全可以控制在几十毫秒最多一百多毫秒以内,不频繁发生,是可接受的 1.5 Serial/Serial Old收集器运行示意图 2 ParNew收集器 2.1 介绍 ParNew收集器是Serial收集器多线程版本(是GC线程的多线程,并行)。 • 并行 :Parallel指多条垃圾收集线程并行工作

KVM之CPU虚拟化

做~自己de王妃 提交于 2020-03-08 22:21:27
1.1 为什么要虚拟化CPU 虚拟化技术是指在x86的系统中,一个或以上的客操作系统(Guest Operating System,简称:Guest OS)在一个主操作系统(Host Operating System,简称:Host OS)下运行的一种技术。这种技术只要求对客操作系统有很少的修改或甚至根本没有修改。x86处理器架构起先并不满足波佩克与戈德堡虚拟化需求(Popek and Goldberg virtualization requirements),这使得在x86处理器下对普通虚拟机的操作变得十分复杂。在2005年与2006年,英特尔与AMD分别在它们的x86架构上解决了这个问题以及其他的虚拟化困难。 1.2 关于CPU的Ring0、Ring1··· ring0是指CPU的运行级别,ring0是最高级别,ring1次之,ring2更次之…… 拿Linux+x86来说, 操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。 应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问

计算机基础二

和自甴很熟 提交于 2020-03-08 20:22:32
一、cpu 详解 CPU 按照指令集可以分为精简指令集 CPU 和复杂指令集 CPU 两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。 1、x86-64的含义 x86: 是针对 CPU 的型号或者说架构的一种统称 。 64 位: CPU 的位数指的是 CPU 一次性能从内存中取出多少位二进制指令 ,64bit 指的是一次性能从内存中取出 64 位二进制指令 。 CPU具有向下兼容性:64位的CPU 既能运行 32 位的程序也能运行 64 位的程序 2 、 内核态与用户态( 代表 cpu 的两种工作状态 ) (1)内核态:运行的程序是操作系统,可以操作计算机硬件 (2)用户态:运行的程序是应用程序,不能操作计算机硬件 内核态与用户态的转换: 应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换。 3 、多线程与多核芯片 (1)2 核 4 线程 ( 假 4 核 ) : 2 核代表有两个 cpu , 4 线程指的是每个 cpu 都有两个线程

ELK结合Beats工具的搭建使用(Metricbeat、Filebeat、Topbeat)

穿精又带淫゛_ 提交于 2020-03-08 18:36:30
ELK之间的合作机制: L (Logstash)作为信息收集者,主要是用来对日志的搜集、分析、过滤,支持大量的数据获取方式,一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 E (Elasticsearch)作为数据的保存者,保存来自L(Logstash)收集的系统日志数据。 K (Kibana )作为展示者,主要是将ES上的数据通过页面可视化的形式展现出来。包括可以通过语句查询、安装插件对指标进行可视化等。 ELK架构图 ELK的工具 ELK新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。 Filebeat隶属于Beats。目前Beats包含四种工具: 1 、Packetbeat(搜集网络流量数据) 2 、Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据) 3 、Filebeat(搜集文件数据) 4 、Winlogbeat(搜集 Windows 事件日志数据) Metricbeat 系统级监控。 用于从系统和服务收集指标。从 CPU 到内存,从 Redis 到 Nginx,Metricbeat

并发编程和并行编程有什么区别?

风流意气都作罢 提交于 2020-03-08 18:16:49
并行编程和并行编程有什么区别? 我问谷歌,但没有找到任何可以帮助我理解这种差异的东西。 你能给我两个例子吗? 现在,我找到了以下解释: http : //www.linux-mag.com/id/7411- 但是“并发是程序的属性”与“并行执行是机器的属性”对我来说还不够-我还是不能说什么。 #1楼 我在一些博客中找到了此内容。 认为它是有用和相关的。 并发和并行性不是一回事。 如果未预先确定两个任务的执行顺序,则两个任务T1和T2是并发的, T1可以在T2之前执行并完成,T2可以在相同时间(并行)同时执行T1,T1和T2之前执行并完成,T1和T2可以交替执行,...如果有两个并发线程如果操作系统将其调度为在一个单核非SMT非CMP处理器上运行,则可能会并发但不会并行。 并行可能在多核,多处理器或分布式系统上进行。 并发通常被称为程序的属性,并且是比并行性更笼统的概念。 资料来源: https : //blogs.oracle.com/yuanlin/entry/concurrency_vs_parallelism_concurrent_programming #2楼 我相信并发编程是指多线程编程,它是让您的程序运行从硬件详细信息中抽象出来的多个线程。 并行编程是指专门设计程序算法以利用可用的并行执行。 例如,您可以并行执行某些算法的两个分支

并发编程下的三大问题根源(原子性,可见性,有序性)和各种并发问题

℡╲_俬逩灬. 提交于 2020-03-08 17:09:43
本篇不讲解决方式,只是提出并发编程的问题,下面看一下并发问题的结构 问题根源:可见性,原子性,有序性。 缓存导致的可见性问题 结合上图来看一下可见性问题 int count = 0 Thread th1 = new Thread ( ( ) - > { count += 1000 ; } ) ; Thread th1 = new Thread ( ( ) - > { count += 1000 ; } ) ; count = ? 直觉告诉我们应该是2000,但是不对,可能是2000,也有可能是1000. 下面我们来结合下图解释一下,其实他是cpu缓存导致的问题,当线程A从内存中读取count值到自己cpu的缓存中,对缓存中的count+1000,但是还没写回内存,此时如果线程B进行+1000操作,从内存中读到自己所在cpu的缓存中,因为内存没有变,还是1000,然后+1000,然后两个线程在进行写回内存的操作,就变成覆盖(count=2000执行两遍)了 线程切换导致的原子性问题 因为计算机cpu速度是非常快的,为了平衡计算机其他资源的速度,比如io.会进行线程切换, 线程切换:就是cpu在执行一个线程时,cpu给它一个时间片,时间片结束,可能该线程还没有执行完,就会保存该线程的当前状态,把cpu的资源给其他线程。 执行一条计算机指令是原子操作的

面试之线程相关

不想你离开。 提交于 2020-03-08 16:45:25
面试之线程相关 1.什么是进程? 1.进程是系统中正在运行的一个程序,程序一旦运行就是进程。 2.进程可以看做程序执行的一个实例,进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间的通信,比如管道,文件,套接字 3.一个进程可以拥有多个线程,每个线程使用所属进程的栈空间。同一进程内多个线程会共享部分状态,多个线程可以读写一块内存。同时每一个线程还拥有自己的寄存器和栈,其他线程可以读写这些栈内存。 2.什么是线程? 1.线程是操作系统能够进行运算调度的最小单位。 2.线程是进程的一个实体,是进程的一条执行路径,当一个线程修改了资源,他的兄弟线程可以立即看到这种变化。 3.并发和并行和串行 1.并行指在同一时刻,有多条指令在多个处理器上同时执行;而并发是指两个或多个事件在同一时间间隔(宏观上)发生。 2.并行是在不同实体的多个事件,并发是在同一实体的多个事件 3.并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 4 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行 5.串行

操作系统CPU调度知识点

橙三吉。 提交于 2020-03-08 16:06:14
1、 进程基本概念 :进程是程序的一次运行。 是系统进程资源分配和调度的基本单位。 2、进程三态:运行状态、就绪状态、堵塞状态。三态转换规则, 就绪状态 的进程因为调度进程 运行状态 , 运行状态 因为时间片用完而进入 就绪状态 ,因为I/O请求而进入 堵塞状态 。I/O完毕后进入 就绪状态。 创建完毕直接进入 就绪状态 。等待处理机调度。 3、 挂起状态引入原因 :1)终端用户请求。2)父进程请求,3)负荷调节须要,4)操作系统须要。 原三态进一步能够分为:运行状态、活动就绪状态、精巧就绪状态、活动堵塞状态、精巧堵塞状态;处于活动态的进程因为挂起请求而进行精巧状态。 进程创建完毕可直接进入活动就绪状态和精巧就绪状态。程序运行结束就可以进入终止状态。 4、 进程控制块(PCB) :进程标识符、处理机状态、进程调度信息、进程控制信息(程序、数据、资源清单等)。PCB是进程存在的唯一标志。 5、创建进程 创建进程的可能原因:用户登录、作业调度、提供服务、应用请求等。 创建进程过程:1)申请空白PCB,2)为进程分配资源,3)初始化PCB。4)将新进程插入到就绪队列。 6、终止进程 终止进程原因:正常结束、异常结束、外界干预等。 终止进程过程:1)依据进程标识符。在PCB集合中找到目标进程,2)终止该进程的运行,3)撤销其子进程,4)归还系统资源。5)撤销PCB。 7、进程同步概念

CPU缓存和内存屏障

好久不见. 提交于 2020-03-08 02:41:17
目录 CPU性能优化手段 - 缓存 多级缓存 缓存同步协议 CPU性能优化手段 - 运行时指令重排 两个问题 解决方法 - 内存屏障 CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化 例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 多级缓存 L1 Cache (一级缓存)是CPU第一层高速缓存, 分为数据缓存和指令缓存, 一般服务器CPU的L1缓存的容量通常在32-4096kb L2 Cache (二级缓存) 由于L1高速缓存的容量限制, 为了再次提高CPU的运算速度, 在CPU外部放置一高速缓存存储器, 即二级缓存 L3 Cache (三级缓存)现在都是内置的, 而它的实际作用既是, L3缓存的应用可以进一步降低内存延迟, 同时提升大数据量计算时处理器的性能. 具有较大L3缓存的处理器更有效的文件系统缓存行为及较短消息和处理器队列长度. 一般是多核共享一个L3缓存 CPU在读取数据时, 先在L1中寻找, 再从L2中寻找, 再从L3中寻找, 然后是内存, 最后是外存储器 缓存同步协议 多CPU读取同样的数据进行缓存, 进行不同运算之后, 最终写入主内存以那个CPU为准? 在这种高速缓存回写的场景下, 有一个缓存一致性协议, 多数CPU厂商对它进行了实现. 即MESI协议,

day1_计算机基础

好久不见. 提交于 2020-03-07 20:48:09
一、计算器5大组成:计算机硬件:(计算机是奴隶) 1、五大组成 控制器 运算器 存储器I/O:内存+外存 输入设备input 输出设备output 2、CPU 控制器+运算器=CPU 功能:控制+运算 工作方式:取指--->分析--->执行 软件的执行都是由CPU执行,强调所有的软件最终都要转换成CPU的指令集去执行 一个二进制位成为一个bit:111 十进制转2:除二取余法 cpu具有向下兼容性 总结重点: cpu的功能 cpu从内存取数据 x86-64 二进制 之后会牺牲存储空间用于运行速度 8bit=1Bytes 1024Bytes=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 1024TB=1PB 1GB=1000*1000*1000*8 磁盘: 对于磁盘来说,寻找到数据的总时间=平均寻道(5ms)+平均延迟时间(7200转的磁盘该值等于4ms) 平均寻道时间:5ms 平均延迟时间:60/7200=0.008=8ms 4ms 500MIPS millon instruction per second 400 0000 来源: https://www.cnblogs.com/suyuanyuan/p/12436779.html