cpu时间

性能量化之cpu

a 夏天 提交于 2020-02-29 21:54:33
系统现在很慢”似乎是对系统的性能最常用的抱怨了,但究竟慢到什么程度,如何来界定慢,可能需要对性能进行量化,对于OS来说,大致主要分为cpu,内存,磁盘,网络等组件,对这些维度的性能量化,不但可以更准确的定位到系统的瓶颈,更是做容量评估的基础。下面先看看cpu。 Cpu的性能主要跟缓存,主频,指令集,工艺,流水线等相关因素有关。 当前微处理器的设计上主要分为精简指令集(RISC),复杂指令集(CISC),所以对于不同的cpu来说,如果使用的指令集不同,单纯的从时钟频率来判断频率高的就相应的性能就高,通常并不准确。 Cpu的性能上每18个月就会增长一倍,而内存的速度在七年里才增长一倍,鉴于速度上的不匹配,而产生的L1,L2 cache。下表是不同的存储访问的延时。 Cache location and type Access time (in ns) Size "Good" hit rate L1 on-chip                  1-3 8-64 KB >90% L2 on-chip                  6-18 1-8 MB >50% L3 off-chip                30-40 8-32 MB >30% Main memory                 220 Very large - 对于开发或者运维人员来说

[转帖]震惊,用了这么多年的 CPU 利用率,其实是错的

只愿长相守 提交于 2020-02-29 21:53:55
震惊,用了这么多年的 CPU 利用率,其实是错的 2018年12月22日 08:43:09 Linuxer_ 阅读数:50 https://blog.csdn.net/juS3Ve/article/details/85219620 来源:内核月谈 原文链接: http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html 本文中若有任何疏漏错误,责任在于编译者。有任何建议和意见,请回复 内核月谈 微信公众号,或通过 caspar at linux.alibaba.com 反馈。 导读:本文翻译自 Brendan Gregg 去年的一片博客文章 “CPU Utilization is Wrong”,从标题就能想到这篇文章将会引起争议。文章一上来就说,我们“人人皆用、处处使用,每个性能监控工具里都在用”的 top 命令里的 “%CPU” 指标,是不对的,其并非用于衡量 CPU 的繁忙程度的正确指标,作者谴责了一下众人(或许也包括你我)的这一行为是具有很大的误导性(deeply misleading)的,而且这种情况还在连年恶化。对于这么大一顶帽子,让我们暂且按下躁动的心,听听作者是怎么深入阐释他的观点的。 1. 引言 可能你认为的 90% CPU 利用率意味着这样的情形: 而实际却可能是这样的: CPU

内核定时任务timer_list

孤人 提交于 2020-02-29 19:35:54
使用定时器任务,可以让内核在将来的一个指定时刻执行一段指定的代码。内核定时器相关的接口在linux/timer.h文件中。 本文将会先介绍定时任务的使用,然后在此基础上了解其内部的实现逻辑。 一、定时任务结构体表示: struct timer_list { struct list_head entry; //用于链接到内核定时器链表中 unsigned long expires; //定时任务过期时间 void (*function)(unsigned long); //定时任务的工作函数 unsigned long data; //定时任务工作函数参数 struct tvec_base *base; //定时任务关联的内核定时器 #ifdef CONFIG_TIMER_STATS void *start_site; char start_comm[16]; int start_pid; #endif #ifdef CONFIG_LOCKDEP struct lockdep_map lockdep_map; #endif }; 二、定时任务相关的接口: 1. 初始化定时任务 #define TIMER_INITIALIZER(_function, _expires, _data) { \ .entry = { .prev = TIMER_ENTRY_STATIC }, \

Ubantu 查看系统资源占用

一笑奈何 提交于 2020-02-29 19:32:13
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命令 《空格》:立刻刷新。 P:根据CPU使用大小进行排序。 T:根据时间、累计时间排序。 q:退出top命令。 m:切换显示内存信息。 t:切换显示进程和CPU状态信息。

CPU /磁盘I/O /内存

南笙酒味 提交于 2020-02-29 18:19:10
oracle的除了本身的性能外,另外系统的性能对oracle的运行也很关键,主要是CPU,磁盘I/O,内存,网络情况等。 CPU 一、cpu的检查 sar命令的使用: ossdb2: sar sar: 0551-201 Cannot open /var/adm/sa/sa11. sar: 0551-213 Try running /usr/lib/sa/sa1 <increment> <number> 出现如上所述错误信息说明系统没有建立收集sar报告数据的数据收集程序,按照如下所述的步骤 建立sar数据文件: 1.以root用户登陆后输入命令: su - adm ; 2.输入命令: crontab -e 3.移掉下面这些行前面的#(注释符)然后退出保存 : #0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 & #0 * * * 0,6 /usr/lib/sa/sa1 & #0 18-7 * * 1-5 /usr/lib/sa/sa1 & #5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm & 4.编辑/etc/rc文件,移掉下面一行前面的#(注释符): #/bin/su - adm -c /usr/lib/sa/sadc /usr/adm/sa/sa `date +%id`

Java基础 —— 多线程与并发

喜夏-厌秋 提交于 2020-02-29 11:03:38
进程与线程的关系 基本概念 进程 :是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作系统进行资源分配和调度的基本单位。 线程 :是操作系统能够进行运算调度的最小单位,是操作系统独立调度和分派的基本单位。被包含于 进程 中,是 进程 的实际运作单位。 两者关系 一个 进程 可以有多个 线程 ,多个 线程 共享进程的堆和方法区资源。但每个线程有各自的程序计数器和栈区域。 程序计数器:用于记录线程当前要执行的指令地址信息的区域; 栈:用于存储线程私有的局部变量和线程调用栈祯的区域; 堆:进程中最大的一块内存区域,存放各种变量信息,为线程共享; 方法区:用于存放JVM加载的类、常量及静态变量等信息的区域,为线程共享。 两者区别 进程 具有独立的地址空间,一个进程崩溃后不会对其它进程产生影响; 线程 是一个进程中的某个执行路径,由于线程没有独立的地址空间,其死掉可能会影响到整个进程; 线程 的开销相对于 进程 而言,要更“轻量级”; 一个 进程 内的多个 线程 ,由于共享进程资源的原因,通信更快速、有效,极大提高了程序的运行效率; 线程 不能单独执行,必须依赖存在于进程中。 PS:抽象的讲,进程和线程的关系就好比工厂和工人的关系,进程是工厂而线程是工厂里的工人。 并行与并发 基本概念 并行 :当系统有一个以上CPU时,每个CPU单独执行一个线程

移植 uCos-III 3.03 到 STM32F429 上

☆樱花仙子☆ 提交于 2020-02-29 10:32:02
背景 通过STM32 的学习,我们可以往更深层次的地方走,尝试系统上的一些开发。 STM32: F429(StdPeriph) uCos-III : v3.03? 有关说明: 在移植 3.04 版本 UCOSIII 的时候遇到了这样一个问题:一旦调用 OSStatTaskCPUUsageInit()函数就会进入 hardfault,(如果这时选择-O1 或者-O2 优化的话就没有问题),不知是 KEIL 问题还是 UCOSIII 3.04 版本的问题,所以为了保险起见我们使用 3.03 版本的 UCOSIII。 另外,目前 UCOSIII 的资料基本都是基于 UCOSIII 3.03 版本的,所以这也是我们选择 3.03 版本 UCOSIII 的另一个主要原因。 如果一定要使用 UCOSIII 3.04 的话,使用 KEIL 时一定要 选择-O1 或者-O2 优化。 uCos 介绍 什么是 uC/OS-III? uC/OS-III(Micro C OS Three 微型的 C语言编写的操作系统第 3 版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务的个数无限制。uC/OS-III 是一个第 3 代的系统内核,支持现代的实时内核所期待的大部分功能。例如资源管理,同步,任务间的通信等等。然而,uC/OS-III 提供的特色功能在其它的实时内核中是找不到的

java并发编程概念

不问归期 提交于 2020-02-29 08:27:24
并发: 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。 并行: 当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。 区别: 并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在 多道程序 环境下, 并发性 是指在一段时间内宏观上有多个程序在同时运行,但在 单处理机系统 中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在 计算机系统 中有多个 处理机 ,则这些可以并发执行的程序便可被分配到多个处理机上,实现 并行执行 ,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。 高并发:(High Concurrent) 是互联网分布式系统架构设计中必须考虑的因素之一,指通过设计保证系统能够同时并行处理很多请求。 https://www.cnblogs.com/yanlong300/p/8986041.html

32位Intel CPU所含有的寄存器

拈花ヽ惹草 提交于 2020-02-29 06:16:52
4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些 低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄 存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字 节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、 除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作 中,当移多位时,要用CL来指明移位的位数;

02.操作系统概述.md

為{幸葍}努か 提交于 2020-02-28 21:12:58
文章目录 2. 操作系统原理介绍 2.1 操作系统的目标和功能 2.1.1 作为用户/计算机接口的操作系统 2.1.2 作为资源管理器的操作系统 2.2 操作系统发展简史 2.2.1 串行处理 2.2.2 简单批处理系统 2.2.2.1 从监控程序的角度来看 2.2.2.2 从处理器的角度来看 2.2.2.3 硬件层面需要进行的支持 2.2.2.4 运行模式的概念 2.2.3 多道批处理系统 2.2.3.1 多道批处理系统的硬件支持 2.2.3.2 多道批处理系统需要注意的新问题 2.2.4 分时系统 I/O调用的过程 2. 操作系统原理介绍 这篇文章主要想从基础介绍一下操作系统是如何运行的,主要专注于操作系统是如何对应用程序进行调度的。需要有 前一篇 文章作为基础 2.1 操作系统的目标和功能 2.1.1 作为用户/计算机接口的操作系统   一个应用程序可以使用一种语言开发,如果没有操作系统的话,每一个开发者都需要十分了解计算机的硬件指令才行,这是不可想象的。操作系统做了一层抽象,就像开发应用程序的时候会写的各种工具类一样,操作系统对这些部分的操作提供了封装的模块,应用程序只需要调用就好了。   同时还有一些通用的工作,比如创建程序,管理文件,控制io设备等,操作系统对这些操作都做了封装来简化编程。 下面是操作系统面向开发者或者用户的一些功能 程序开发