cpu时间

网络编程进阶

二次信任 提交于 2020-02-18 03:54:00
一、操作系统介绍 1.1操作系统的功能 什么是操作系统——操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序 封装了复杂的操作硬件的接口,提供给应用程序使用 管理CPU上运行的多个应用程序进程,使多个进程对硬件的竞争变得有序 1.2操作系统发展史 第一代计算机(1940~1955):真空管和穿孔卡片 程序员预约排队,每人固定时间独享计算机 第二代计算机(1955~1965):晶体管和批处理系统 程序员的程序批量进行输入、计算、输出,依旧是串行进程 1401机负责输入输出,7094机负责计算 第三代计算机(1965~1980):集成电路芯片和多道程序设计 多道技术: 多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用 通过在A程序进行I/O时的间隙去解决B程序的计算,最大化CPU效率, 核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行 空间上的复用 将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序(需要物理层面的对内存进行分区) 时间上的复用(复用一个cpu的时间片) 当一个程序在等待I/O时(或者执行时间过长),CPU切换出去,另一个程序可以使用cpu

性能优化-CPU上下文

泄露秘密 提交于 2020-02-17 19:10:27
CPU上下文:CPU中的寄存器和程序计数器。切换出的CPU上下文,会保存到linux系统内核中。 分为3种:1、进程上下文,2、线程上下文,3、中断上下文(硬件通过触发信号,导致中断处理程序运行)。 进程的运行空间:内核空间、用户空间。 内核空间:具有最高权限,可以直接访问所以资源,包括硬件。 用户空间:只有有限资源,不能访问包括内存在内的硬件只有,必须通过系统调用嵌入到内核中,才可以调用这些资源。 从用户态到内核态,是通过系统调用实现的。比如我们要查看一个文件的内容,需要 1、调用系统调用open打开一个磁盘文件, 2、read读取一个文件内容, 3、write输入到标准输入, 4、close关闭文件。 一、 执行系统调用,也是需要切换CPU上下文的。需要先保存CPU上下文的当前状态,然后加载系统调用的上下文,再然后跳转到内核态,执行内核任务。 系统调用完成,需要保存CPU现在的上下文状态,加载上次新的上下文状态,进入用户态,执行。 一次系统调用,发生了2次CPU上下文切换。 系统调用,一直是在同一个进程中运行的。 二、 进程上下文切换 进程切换只能在内核态中运行。进程切换不只切换虚拟内存、栈、全局变量等用户空间资源,也包括内核堆栈、等内核态资源。 保存上下文和恢复上下文,也不是免费操作,需要内核占用CPU运行,进行切换。 如果进程切换太频繁

线程的前世今生

一世执手 提交于 2020-02-17 01:02:58
进程 早期的计算机只有一个单核CPU,操作系统把进程作为CPU调度单元。进程拥有独立的内存地址空间,那时候还没有线程的概念。 进程有3个状态,分别是阻塞、就绪、运行。当进程所需资源未到位时是 阻塞状态 ,当进程拥有资源但未被CPU调度是 就绪状态 ,当进程用有资源并且被CPU调度了就是 运行状态 。 用户态线程 随着程序越来越复杂,调度产生的上下文切换也越发昂贵,于是程序员寻思能不能在同一地址空间(Address Space)下,执行多个进程。但操作系统内核出于保护目的,禁止一个进程直接访问另一个进程的地址空间。 既然操作系统不支持,程序员决定在用户空间下维护一张线程表,实现可以自行调度的“进程”,这就是 用户态线程 ,现在一般叫做 纤程 或 协程 。 用户态线程的优势有: 在用户空间下进行线程切换的速度远快于在操作系统内核中的实现 程序员可以自行实现垃圾回收器来回收线程 当线程数量过多时,由于在用户空间维护线程表,不会占用大量的操作系统空间 用户态线程的劣势有: 由于操作系统不知道线程的存在,因此当一个进程中的某一个线程进行系统调用时,比如缺页中断而导致线程阻塞,此时操作系统会阻塞整个进程,即使这个进程中其它线程还在工作 假如进程中一个线程长时间不释放CPU,因为用户空间并没有时钟中断机制,会导致此进程中的其它线程得不到CPU而持续等待 内核态线程 伴随多核CPU的出现

ubuntu查看系统资源占用(内存,cpu和进程)

社会主义新天地 提交于 2020-02-16 19:00:31
ubuntu查看系统资源占用(内存,cpu和进程) https://www.cnblogs.com/hanlong/p/5757075.html 1 top 查看ubuntu的资源占用的命令为 $: top 说明:top命令就可以查看内存,cpu和进程了,很方便 top: 主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 c:显示进程完整的路径与名称。 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数,完成后将会退出to 显示参数: PID(Process ID):进程标示号。 USER:进程所有者的用户名。 PR:进程的优先级别。 NI:进程的优先级别数值。 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值。 S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。 top命令 《空格》:立刻刷新。

什么是真正的实时操作系统(转)

余生颓废 提交于 2020-02-16 17:41:20
转载链接: https://blog.csdn.net/zhourui1982/article/details/5282361 做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platform team封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手入门,欢迎大家拍砖,争取写个连载,本文先总结一下实时的概念,什么是真正的实时操作系统? 1. 首先说一下实时的定义及要求: 参见 Donal Gillies 在 Realtime Computing FAQ 中提出定义:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。 http://www.faqs.org/faqs/realtime-computing/faq/ 一个实时操作系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的CPU,Windows在CPU空闲时可以提供非常短的典型中断响应,但是

Linux命令之top

痞子三分冷 提交于 2020-02-16 13:28:27
  由于公司的产品基于Linux开发,不可避免的使用Linux命令,除了一些常用的最基本的外,偶尔也会用到一些较为生疏的,近几日在测试某MR的功能,由于公司产品也是基于大数据的,所以,对性能方面也需要关注,虽然家里环境完全比不上现场环境,家里也不做性能测试,但还是要看下的,今天拿出时间来专门看了下top这个命令。top命令在Linux中的作用是实时显示系统各个进程的资源占用情况,与windows的任务管理器类似。作为主要查看的监控,swap的变化值得注意,如果swap交换区的used不断的变化,说明物理内存不断在和swap交换区的数据进行交换处理,这就说明内存真的不够用了 前五行为统计信息区: 第一行:任务队列信息,同uptime命令的执行结果,具体参数 说明情况如下: 17:16:10 当前系统时间 up 4 days 7:18 系统已经运行了4天7小时18分钟 8 users 当前有8个用户登录系统 load average 2.18,2.37,2.20 分别是1分钟、5分钟、15分钟的 负载情况,该处的数值是系统每隔5秒检查一次活跃的进程数,然后按照特定的算法计算出的。如果这个数值除以逻辑CPU的数量,结果高于5则表示已经超负载了 第二行:task任务进程 系统现在有205个进程,处于运行状态的有1个,204个在休眠,停止状态的0个,僵尸状态的0个 第三行:cpu状态信息,

Linux下top命令

蓝咒 提交于 2020-02-16 13:25:12
简介 top 命令是最流行的性能监视工具之一。top命令经常用来监控linux的系统状况,比如cpu、内存的使用。top命令交互界面如下图所示: top的界面分为两个部分,光标上面部分显示关于系统整体性能,光标下面部分显示各进程信息。 Linux top命令界面 第一行 第一行显示的内容和uptime命令一样,[l]可以显示和隐藏这个区域: 16:48:03 : 系统当前时间 up 7:36 :系统开机到现在经过了多长时间 9 users :当前9个用户在线(who命令查看当前的在线用户数) load average:0.85, 1.02, 1.00 :系统1分钟、5分钟、15分钟的CPU负载信息 第二行 Tasks:英文意思是工作、任务、差事 249 total:当前有249个任务,也就是有249个进程 1 runing:一个进程正在运行 247 sleeping:247个进程睡眠 0 stopped:停止的进程数 1 zombie:僵死的进程数 第三行 Cpu(s):表示这一行显示CPU的总体信息 8.2%us:用户进程占用cpu的百分比 10.0%sy:内核占用cpu的百分比 0.0%ni:改变过优先级的进程占用cpu的百分比 81.1%id:空闲cpu的百分比 0.0%wa:IO等待占用cpu的百分比 0.0%hi:硬中断占用cpu的百分比 0.0%si

Linux top命令的用法详细详解

我只是一个虾纸丫 提交于 2020-02-16 13:17:07
top命令经常用来监控 Linux 的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序。 top进入视图 top视图 01 【top视图 01】是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。 第一行: 10:01:23 — 当前系统时间 126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过) 2 users — 当前有2个用户登录系统 load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。 第二行: Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。 第三行:cpu状态 6.7% us — 用户空间占用CPU的百分比。 0.4% sy —

jvm 命令使用调优 通过jstat、jmap对java程序进行性能调优

不问归期 提交于 2020-02-16 11:39:58
转载: http://blog.csdn.net/jerry024/article/details/8507589 转载: https://blog.csdn.net/zhaozheng7758/article/details/8623530 通过jstat、jmap对java程序进行性能调优 2013年01月16日 12:54:12 jerry在魔都 阅读数 1207 第一次写技术博客,本文记录了我对服务器cpu占用率100%问题的排查过程和最终结果,算是一篇学习日志。 本人属于学习中的菜鸟码农,如有什么理解上的偏差的,还请各路大神指正。 关键词: jstat , jmap, heap, GC, smartupload, 内存泄漏 1. 背景 硬件供应商多次反映,在tomcat启动一段时间后,经常出现cpu占用率100%,且重启前一直保持在100%的情况。在重启后cpu占用率回落,但是一段时间后再次出现问题。 下图为cpu占用率100%时使用top命令的截图,可以看到java进程的cpu占用率几经几乎达到了400%(服务器为4核cpu) <1> 2.问题定位 2.1问题猜测 对于cpu占用率100%的情况,产生以下两种猜测: a. 程序长时间占用系统IO,导致CPU占用率100% b.程序存在严重内存泄露,导致jvm频繁执行full GC,从而使cpu占用率提高,造成服务器假死

linux每日命令(37):top命令

情到浓时终转凉″ 提交于 2020-02-16 10:57:26
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 一.命令格式 top [参数] 二.命令功能 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 三.命令参数 参数 描述 -b 批处理 -c 显示完整的治命令 -I 忽略失效过程 -s 保密模式 -S 累积模式 -i 设置间隔时间 -u 指定用户名 -p 指定进程 -n 循环显示的次数 四. 使用实例 1.显示进程信息 命令: top 输出: [hc@localhost ~]$ top top - 09:22:56 up 6 days, 1:40, 3 users, load average: 0.22, 0.31, 0.71 Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie %Cpu