cpu参数

Python说文解字_Python之多任务_01

匿名 (未验证) 提交于 2019-12-02 22:51:08
Python 之 多任务:   Python之多任务是现在多任务编程运用Python语言为载体的一种体现。其中涵盖:进程、线程、并发等方面的内容,以及包括近些年在大数据运算、人工智能领域运用强大的GPU运算能力实现的各种算法。属于Python语言中比较高级的应用形式。文章采取问答的形式对知识点和相关应用的模式进行详解,看似像意识流形态的文章,其内容也是遵循循序渐进,力求全面和精细。 问:什么是多任务? 答:百度定义:“当多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务。”也就是说操作系统可以同时运行多个任务。这个概念是基于操作系统来说的。比如电脑同时开启多个软件或者应用程序,这就是一种多任务的体现;于此相对如果我们电脑只能每次开启一个软件或者一个应用程序,关闭前者才能开启后者这就叫做单任务,在早期的电脑基本都属于单任务,对于现在的计算机应用基本上都属于多任务的形式存在,因此我们也只讨论多任务。 问:CPU是整个运算的核心,CPU、操作系统、多任务之间的关系什么? 答:1. 现在的CPU基本上都是2核以上的CPU,如果我们现在手里有一台单核的CPU和一台多核CPU,我们的多任务在上面又是怎么实现的呢?     1.1. 单核CPU实现多任务原理?       操作系统轮流让各个任务交替执行,CPU对每个任务进行“时间切片”的动作,这个切片时间非常短暂

python之多线程与多进程

匿名 (未验证) 提交于 2019-12-02 22:11:45
1. 多进程与多线程 (1) 背景: 为何需要多进程或者多线程: 在同一时间里,同一个计算机系统中如果允许两个或者两个以上的进程处于运行状态,这便是多任务。多任务会带来的好处例如用户边听歌、边上网、边打印,而这些任务之间丝毫不会互相干扰。使用多进程技术,可大大提高计算机的运算速率。 (2) 多进程与多线程的区别: 进程 :程序在计算机上的一次执行活动。进程分为:系统进程和用户进程。 当运行一个程序时,实际就是启动了一个进程。程序是死的(静态的),进程是活的(动态的)。 线程 :是程序中的一个单一的顺序控制流程。 CPU的基本单元(指运行中程序的调度单位)。 CPU调度的最小单位。 CPU运行程序代码并操作程序的数据所形成的。因此,线程被认为是以CPU为主体的行为。 多线程程序设计的含义就是可以将程序任务分成几个并行的子任务。 Windows系统中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这种情况更加复杂,有如下关系: <=CPU数量,并行运行 >CPU数量,并发运行。 并行运行的效率明显高于并发运行。 2. 多进程编程 进程的概念 第一,进程是一个实体,每一个进程都有它自己的地址空间,一般情况下,包括文本区域、数据区域和堆栈区域。 文本区域:存储处理器执行的代码; . 堆栈区域:存储着活动过程中调用的指令和本地变量。 第二,“执行中的程序”

Nginx教程

匿名 (未验证) 提交于 2019-12-02 22:10:10
Nginx 是一个高性能的HTTP和反向代理服务器。 特点是占用内存少,并发能力强,理论上能支持高达50000个并发连接数。 Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,如perl,php等。但是不支持java, java需要通过tomcat配合。 Nginx可以作为正向代理来进行上网功能。 正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet, 则需要通过代理服务器来访问,这种代理服务器就称为正向代理。 正向代理需要客户端配置代理服务器进行指定网站访问。 Nginx可以作为反向代理服务器。 反向代理中,客户端对代理是无感知的。因为客户端不需要任何配置就可以访问。请求发送到反向代理服务器后,由反向代理服务器去选择目标服务器,获取数据后返回给客户端。 反向代理服务器和真实服务器对外就是一台服务器,暴露的是代理服务器的地址,隐藏了真实服务器的地址。 增加服务器的数量,将请求分发到各个服务器上,将原来请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器上,也就是我们所说的负载均衡。 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。 本次安装在虚拟机CentOS 7.6 64位系统中进行。 先安装gcc环境

MySQL 如何优化cpu消耗

匿名 (未验证) 提交于 2019-12-02 22:02:20
Ŀ¼ 用户+系统+IO等待+软硬中断+空闲 用户空间CPU消耗,各种逻辑运算 正在进行大量tps 函数/排序/类型转化/逻辑IO访问... 用户空间消耗大量cpu,产生的系统调用是什么?那些函数使用了cpu周期? 参考 Linux 性能优化解析 MySQL 几种调式分析利器 等待IO请求的完成 此时CPU实际上空闲 如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进程从核上移开了) 用户和IO等待消耗了大部分cpu 吞吐量下降(tps) 查询响应时间增加 慢查询数增加 对mysql的并发陡增,也会产生上诉影响 减少IO量 SQL/index,使用合适的索引减少扫描的行数(需平衡索引的正收益和维护开销,空间换时间) 提升IO处理能力 加cache/加磁盘/SSD 避免使用函数 ,将运算转移至易扩展的应用服务器中 如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数 减少排序 ,利用索引取得有序数据或避免不必要排序 如union all代替 union,order by 索引字段等 禁止类型转换 ,使用合适类型并保证传入参数类型与数据库字段类型绝对一致 如数字用tiny/int/bigint等,必需转换的在传入数据库之前在应用中转好 简单类型 ,尽量避免复杂类型,降低由于复杂类型带来的附加运算

【转载】Linux中的buffer和cache

匿名 (未验证) 提交于 2019-12-02 21:59:42
看到一篇讲解Linux中有关buffer和cache的文章,内容很不错,顺手粘过来了原文地址: https://www.cnblogs.com/M18-BlankBox/p/5326484.html 对于一个即将踏上“系统运维”或者更加高大尚的工作“系统调优”,如果这不跟这两哥们搞好关系了,坑的不只有内存,更坑的是你拿着调优的钱却干着随时被调的活。因为作为一个系统运维人员来说监控和优化IO性能这是最有可能你生存下来的技能,为啥呢?因为你不仅给老板省了钱,还提高了机器的工作效率。。虽然钱都进了老板兜里,但你渐渐地植入了他深深地脑海里,总有一天你比钱重要!好了闲话少扯,接下来说说这两个哥们到底是什么?   之前我自己也对到底buffer和cache是什么,有什么不同,什么时候用buffer,什么时候用cache存在疑惑,不能说不知道,只是别人问起来说起来,我知道,但是讲讲他们的区别,还真是说不出来。无奈查了好多资料,要么太底层要么含糊不清,学术再权威再有见地,让读者理解不了也白搭,这就跟一个牛逼的程序,你再怎么运行在内核空间,但如果你不提供一个用户空间的接口,用的人不能通过一种调用接口认识你,那说明你确实牛,牛到使用的人不知道你是什么。服务的最终是面向用户的,你天天说些机器语言,你真的快乐吗?所以我谈谈我自己对buffer和cache的理解 ,希望能帮到一部分人

Linux 字符设备驱动―― ioremap() 函数解析

匿名 (未验证) 提交于 2019-12-02 21:59:42
一、 ioremap() 函数基础概念 几乎每一种外设都是通过读写设备上的相关寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: a -- I/O 映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。 b -- 内存映射方式(Memory-mapped) RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址空间,外设I/O端口成为内存的一部分。此时,CPU可以象访问一个内存单元那样访问外设I/O端口,而不需要设立专门的外设I/O指令。 但是,这两者在硬件实现上的差异对于软件来说是完全透明的,驱动程序开发人员可以将内存映射方式的I/O端口和外设内存统一看作是"I/O内存"资源。 一般来说,在系统运行时,外设的I/O内存资源的物理地址是已知的,由硬件的设计决定。但是CPU通常并没有为这些已知的外设I/O内存资源的物理地址预定义虚拟地址范围,驱动程序并不能直接通过物理地址访问I/O内存资源, 而必须将它们映射到核心虚地址空间内(通过页表),然后才能根据映射所得到的核心虚地址范围

第17章Linux音频设备驱动之Linux ASoC音频设备驱动

匿名 (未验证) 提交于 2019-12-02 21:59:42
17.5 Linux ASoC音频设备驱动 17.5.1 ASoC(ALSA System on Chip) 驱动的组成 ASoC(ALSA System on Chip) 是 ALSA 在 SoC 方面的发展和演变,ASoC在本质上仍然属于ALSA,但是在 ALSA 架构基础上对 CPU 相关的代码和 Codec 相关的代码进行分离。其原因是,采用传统 ALSA 架构的情况下,同一型号的 Codec 工作于不同的 CPU 时,需要不同的驱动,这不符合代码重用的要求。 对于目前嵌入式系统上的 声卡驱动 开发,建议读者尽量采用 ASoC 框架 ,ASoC 主要由 3 部分组成。 (1) Codec 驱动 。这一部分只关心 Codec 本身,与 CPU 平台相关的特性不由此部分操作。 (2) 平台驱动 。这一部分只关心 CPU 本身,不关心 Codec。主要处理两个问题:DMA 引擎和 SoC 集成的 PCM、I 2 S 或 AC 97 数字接口控制。 (3) 板驱动(称为 machine 驱动) 。这一部分将平台驱动和 Codec 驱动绑定在一起,描述板一级的硬件特征。 在以上 3 部分中,1 和 2 基本都可以仍然是通用的驱动,Codec 驱动认为自己可以连接任意 CPU,而 CPU 的 I 2 S、PCM 或 AC 97 接口对应的平台驱动则认为自己可以连接任意符合其接口类型的

(转载)Android/Linux下CGroup框架分析及其使用

匿名 (未验证) 提交于 2019-12-02 21:59:42
CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制、记录、隔离进程组(process groups)所使用的资源(cpu、memory、I/O等)。CGroup也是LXC为实现虚拟化所使用的资源管理手段。CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为CGroup子系统。 CGroup子系统包含如下: 子系统 主要功能 blkio 设置限制每个块设备的输入输出控制。 cpu 使用调度程序为CGroup任务提供CPU的访问。 cpuacct 产生CGroup任务的CPU资源报告,CPU Accounting Controller。 cpuset 如果是多核CPU,这个子系统就会为CGroup任务分配单独的CPU和内存。 devices 允许或拒绝CGroup任务对设备的访问。 freezer 暂停或恢复CGroup任务。 hugetlb 允许限制CGroup 的HubeTLB使用 memory 设置每个CGroup的内存限制以及产生内存资源报告。 net_cls 标记每个网络包以供CGroup方便使用。 net_prio 提供接口以供动态调节程序的网络传输优先级。 perf_event

常用的Linux命令

匿名 (未验证) 提交于 2019-12-02 21:56:30
linux命令学习1 linux命令学习2 history history命令就是历史记录. 它显示了在终端中所执行过的所有命令的历史. 参考链接: 1. 对Linux新手非常有用的 20个命令 grep 管道, 过滤, 作为linux中最为常用的三大文本(awk, sed, grep)处理工具之一, grep命令的常用格式为: grep [选项] "模式" [文件] , grep家族总共有三个: grep , egrep , fgrep , 一般常用grep. 扩展选项如下:  -E : 开启扩展Extend的正则表达式. -i : 忽略大小写ignore case. -n : 显示行号 -w : 被匹配的文本只能是单词, 而不能是单词中的某一部分, 如文本中有liker, 而我搜寻的只是like, 就可以使用-w选项来避免匹配liker --color :将匹配到的内容以颜色高亮显示. 参考链接: 1. linux中grep命令的用法 awk 1. awkѧϰ sed 1. sedѧϰ xxx --help(man xxx) xxx --help, 是对xxx命令的常用选项和用法格式的一个介绍, man xxx也是介绍, man的内容比较复杂是详细介绍, xxx --help比较简洁, 简单介绍 pwd 当前路径(dirs) l(ls) 显示给出路径之中的文档列表 Usage:

Linux vmstat命令实战详解

匿名 (未验证) 提交于 2019-12-02 21:56:30
2019独角兽企业重金招聘Python工程师标准>>> vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如: 2表示每个两秒采集一次服务器状态,1表示只采集一次。 实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如: 这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。 好了,命令介绍完毕,现在开始实战讲解每个参数的意思。 r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙