cpu参数

Top命令你最少要了解到这个程度

筅森魡賤 提交于 2020-03-18 17:59:34
top 命令几乎是每个程序员都会用到的Linux命令。这个命令用来查看Linux系统的综合性能,比如CPU使用情况,内存使用情况。这个命令能帮助我快速定位程序的性能问题。 虽然这个命令很重要,但是之前对于这个命令的使用几乎仅限于查看下哪个进程使用的CPU最高,哪个进程占用的内存最高。对于输出的各个参数的含义也是一知半解,更不用说 top 的一些高级用法了。 本篇博客就来具体分析下 top 的详细使用方法。 top 输出参数的含义 在Linux终端输入 top ,一般会有如下输出。 top - 15:34:12 up 127 days, 10:23, 2 users, load average: 0.04, 0.03, 0.00 Tasks: 291 total, 1 running, 290 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 98.3%id, 1.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1792312k total, 288300k used, 1504012k free, 10384k buffers Swap: 6291452k total, 5380k used, 6286072k free, 14128k cached PID USER PR NI VIRT

Java 多线程

╄→гoц情女王★ 提交于 2020-03-17 17:22:46
一、概述 理解多线程先要理解线程,理解线程先要理解进程。 1. 进程 一个正在执行的程序。 每个进程的执行都有一个执行的顺序,顺序是一个执行路径,也叫一个控制单元。 2. 线程 进程中独立的控制单元称为线程。 线程控制进程的执行。 进程中只要有一个线程在执行,进程就不会结束。 一个进程中至少存在一个线程。 3. 多线程 Java 虚拟机启动时,会有一个 java.exe 的执行程序,也就是一个进程。 这个进程中至少存在一个线程负责 java 程序的执行,这个线程的运行代码存在 main 方法中,这个线程称之为主线程。 JVM 启动时除了执行一个主线程,还会启动负责垃圾回收机制的线程。 在一个进程中有多个线程执行的方式,称为多线程。 4. 多线程的意义 多线程能让程序产生同时运行的效果,可以提高程序执行的效率。 例如: java.exe 进程执行主程序时,如果程序的代码非常多,在堆内存中会产生很多对象,而对象调用完后就会变成垃圾。如果垃圾过多的话,可能会导致堆内存出现内存不足的现象,影响程序的运行。这种情况下,如果只有一个线程在运行处理的话,程序执行的效率非常低;如果有多个线程在帮助处理的话,程序执行的效率将大大的提高。 例如:垃圾回收机制的线程在帮助进行垃圾回收的话,那堆内存空间的释放将快很多。 5. CPU 运行的原理 PC 上有很多程序“同时”进行,看起来好像是 CPU “同时

2019年9月25日星期三(STM32 ucos3)

99封情书 提交于 2020-03-17 17:12:09
一.UCOS 1.概念 uc/OS-III(Micro C OS Thee),微型C语言编写的操作系统第三版。是一个可升级,可固化,多任务基于优先级的可抢占式实时内核。 ucos的任务个数不限制,实现了操作系统所需求的大部分功能,资源管理,同步,任务之间的通信。除了这些基本的功能以外,还提供一些其他的实时性内核找不到的特色功能,比如完备的运行时间测量,也可以直接发送信号/消息到某个任务,任务也可以同时等待多个内核对象 由于ucos体积微小,功能强悍,可移植性强,在微控制器领域应用广泛 ucos要收费,有时候我们会选择免费的系统,比如freeRTOS....,以及一些其他和物联网结合操作系统(华为liteOS 阿里巴巴.. 腾讯..) 2.ucos移植 (1)源代码结构 EvalBoards ------------ 工程文件 uc-CPU -------------- CPU相关代码 uc-LIB -------------- 和硬件/编译器 无关的库函数(字符串 数学 内存) uCOS-III ----------- ucos操作系统相关代码 (2)将源码拷贝到工程,修改源码(详情见手册) (3)特性 3.ucos的任务调度和任务 合作式调度 -------- 多个任务按照指定时间和顺序依次运行,下一个任务等待上一个任务时间用完再开始运行 抢占式调度 --------

[Mark] KVM 虚拟化基本原理

混江龙づ霸主 提交于 2020-03-17 06:06:53
X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指 CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之…… 就 Linux+x86 来说, 操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别 Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。 应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。 那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在 ring0 的,客户操作系统就不能也在 ring0 了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,但是没有执行权限是会出错的。所以这时候虚拟机管理程序(VMM)需要避免这件事情发生。 虚机怎么通过 VMM 实现 Guest CPU 对硬件的访问,根据其原理不同有三种实现技术: 1. 全虚拟化 2. 半虚拟化 3. 硬件辅助的虚拟化 1

并发编程之线程池合理配置

戏子无情 提交于 2020-03-16 11:49:26
某厂面试归来,发现自己落伍了!>>> 如何合理的配置线程池参数: 思考该问题首先明确两个任务类型的概念 CPU密集:该任务需要进行大量的计算,但是并没有阻塞,CPU在全速的运行。值得注意的是CPU密集型的任务只有在真正的多核CPU上才能更好的发挥作用(多线程技术),单核的CPU模拟多线程并不能提高任务的执行速度,因为CPU 的计算能力是有限的。 IO密集:指的是该任务的IO操作,也就是说会存在阻塞的情况。这种任务会导致CPU浪费很多时间在等待上,因此这种类型的任务使用多线程技术能更好的提高计算集的任务执速度,即使是单核的计算机采用模拟多线程技术也能减少CPU等待IO的阻塞时间。 具体配置参考如下: CPU密集型任务=CPU核数+1 IO密集型任务 = 2*CPU核数 来源: oschina 链接: https://my.oschina.net/u/3670669/blog/3195873

Shell脚本case语句

a 夏天 提交于 2020-03-15 07:19:10
case语句格式 case 变量 in PAT1) 执行语句 ;; PAT2) 执行语句 ;; *) 默认执行语句 ;; esac 使用示例: 编写一个shell脚本,通过提示用户输入信息,输出cpu,mem,disk的信息;#!/bin/bash #显示各种信息 #sky-whr cat << EOF 菜单 -------------------------- cpu)显示cpu信息 mem)显示内存信息 disk)显示硬盘信息 quit)退出 --------------------------- EOF while : do read -t 5 -p "请输入需要查看的信息:" a if [ -z $a ];then echo "请输入正确的参数" echo "例如cpu,mem,disk,quit" fi case $a in cpu) cat /proc/cpuinfo ;; mem) free -h ;; disk) fdisk -l ;; quit) break ;; esac done 来源: https://www.cnblogs.com/shy13138/p/11364748.html

《自拍教程43》adb命令_一键读取硬件配置

ε祈祈猫儿з 提交于 2020-03-13 14:55:46
Android系统测试过程中, 比如接口测试,需要用到设备的iccid, 或者uuid, 车载测试需要用到VIN号(车辆唯一标识号), 4G测试等需要设计IMEI号等设备配置字参数等, 我们还可以读取到设备的分辨率,emmc磁盘容量, cpu型号,内存大小等,这些硬件配置信息, 可以辅助我们做测试,如何读取到这些硬件信息呢? 准备阶段 adb shell getprop命令,可以获取到Android设备iccid, imei,emmc磁盘容量等 adb shell wm size 可以读取到分辨率 adb shell cat /proc/cpuinfo 可以读取到cpu相关的信息 adb shell cat /proc/meminfo 或adb shell free 可以读取到内存相关的信息 os.popen()函数可以快速调用以上命令并获取输出字符串。 python的re正则表达式可以轻易地进行数据匹配,查找等强大的字符串处理 getprop命令介绍 getprop命令是android自带的动态获取系统属性参数, 包括了软件,硬件属性参数等,其有好几种执行方式,包括: 用法一: getprop 获取全部系统属性参数, 比如魅族Note5的 getprop我们保存为txt文件(可点击下载) 用法二: getprop 属性名,可获取某个指定属性的具体参数信息,比如: 相对应的

学习笔记1:java多线程机制之线程概念

筅森魡賤 提交于 2020-03-13 00:39:38
由于种种需求,今天开始由浅入深的学习java的多线程机制,而java语言的一大特性点就是内置对多线程的支持。 以下内容出自: http://blog.csdn.net/jiangwei0910410003/article/details/19962627 : 线程的生命周期: 1.新建状态(New):用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 2.就绪状态(Runnable):当一个线程创建了以后,其他的线程调用了它的start()方法,该线程就进入了就绪状态。处于这个状态的 线程位于可运行池中,等待获得CPU的使用权 3.运行状态(Running): 处于这个状态的线程占用CPU,执行程序的代码 4.阻塞状态(Blocked): 当线程处于阻塞状态时,java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才有机会转到 运行状态。 阻塞状态分为三种情况: 1)、 位于对象等待池中的阻塞状态:当线程运行时,如果执行了某个对象的wait()方法,java虚拟机就回把线程放到这个对象的等待池中 2)、 位于对象锁中的阻塞状态,当线程处于运行状态时,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其他的线程占用,JVM就会把这个线程放到这个对象的琐池中。 3)、 其它的阻塞状态:当前线程执行了sleep()方法

Windows Internals 笔记——线程调度

孤街浪徒 提交于 2020-03-12 03:25:22
1.线程内核对象中的CONTEXT反应了线程上一次执行时CPU寄存器的状态。大约每隔20ms,Windows都会查看所有当前存在的线程内核对象。Windows在可调度的线程内核对象中选择一个,并将上次保存在线程上下文中的值载入CPU寄存器。这一操作被称为上下文切换。Windows实际上会记录每个线程的运行次数。 2.调用CreateProcess或者CreateThread时,系统将创建线程内核对象,并把挂起计数初始化为1。这样就不会给这个线程调度CPU了,因为线程初始化需要时间,我们不想再线程准备好之前就开始执行它。在线程初始化之后,CreateProcess或者CreateThread函数将查看是否有CREATE_SUSPENDED标志传入,如果有,函数返回并让新的线程处于挂起状态。如果没有,函数会将线程的挂起计数递减为0,线程就成为可调度的了。 3.通过创建一个处于挂起状态的线程,我们可以在线程执行任何代码之前改变它的环境(比如优先级)。之后可以调用ResumeThread函数使其变为可调度的,如果调用成功会返回线程的前一个挂起计数,否则返回0xFFFFFFFF。 4.还可以调用SuspendThread来挂起线程,任何线程都可以调用这个函数挂起另外一个线程(只要有线程句柄)。显然线程可以将自己挂起,但是它无法自己恢复。SuspendThread返回线程之前的挂起计数

docker概述

我的未来我决定 提交于 2020-03-09 20:02:59
虚拟化: varmvare,virtualbox docker:container技术(以内核为支撑进行虚拟机)。不用安装操作系统直接通过宿主机的os虚拟化出应用 Docker 是一个 开源 的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现 虚拟化 。容器是完全使用 沙箱 机制,相互之间不会有任何接口; 一个完整的Docker有以下几个部分组成: dockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器 起源 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go语言 并遵从Apache2.0协议开源。 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是 Redhat 在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。 一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在 docker 之上,长期维护且有大量的用户