cpu参数

Spark常规性能调优

妖精的绣舞 提交于 2019-12-06 03:00:56
1.1.1 常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。 资源的分配在使用脚本提交Spark任务时进行指定,标准的Spark任务提交脚本如代码清单2-1所示:、 /usr/opt/modules/spark/bin/spark-submit \ --class com.atguigu.spark.Analysis \ --num-executors 80 \ --driver-memory 6g \ --executor-memory 6g \ --executor-cores 3 \ /usr/opt/modules/spark/jar/spark.jar \ 可以进行分配的资源如表2-1所示: 表2-1 可分配资源表 名称 说明 --num-executors 配置Executor的数量 --driver-memory 配置Driver内存(影响不大) --executor-memory 配置每个Executor的内存大小 --executor-cores 配置每个Executor的CPU core数量 调节原则:尽量将任务分配的资源调节到可以使用的资源的最大限度。 对于具体资源的分配

python3通过gevent.pool限制协程并发数量

﹥>﹥吖頭↗ 提交于 2019-12-06 02:32:23
协程--gevent模块(单线程高并发) 先恶补一下知识点,上节回顾 上下文切换:当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)       CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程,上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生 进程: 一个程序需要运行所需的资源的集合每个进程数据是独立的每个进程里至少有一个线程每个进程里有可以多有个线程线程数据是共享的进程间共享数据的代价是高昂的,所以要尽量避免进程间的数据共享线程间的数据本来就是共享的线程要修改同一份数据,必须加锁,互斥锁mutex生产者消费者:1.解耦2.提高程序的运行效率,把中间等待的时间省去多线程场景: IO密集型,因为IO操作基本不占用CPU,所以多用在web,爬虫,socket交互多进程场景:CPU密集型,大数据分析,金融分析,这样用的IO就很少,因为这个进程会进行大量的运算, 但是如果切换了进程,就会变慢 协程 协程:微线程, 协程是一种用户态的轻量级线程,CPU不知道它的存在, 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候

程序员需要了解的硬核知识之汇编语言(一)

会有一股神秘感。 提交于 2019-12-05 19:27:07
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语言编写的代码,需要经过编译器编译后,转换为本地代码才能够被 CPU 解释执行。 但是本地代码的可读性非常差,所以需要使用一种能够直接读懂的语言来替换本地代码,那就是在各本地代码中,附带上表示其功能的英文缩写,比如在加法运算的本地代码加上 add(addition) 的缩写、在比较运算符的本地代码中加上 cmp(compare) 的缩写等,这些通过缩写来表示具体本地代码指令的标志称为 助记符 ,使用助记符的语言称为 汇编语言 。这样,通过阅读汇编语言,也能够了解本地代码的含义了。 不过,即使是使用汇编语言编写的源代码,最终也必须要转换为本地代码才能够运行,负责做这项工作的程序称为 编译器 ,转换的这个过程称为 汇编 。在将源代码转换为本地代码这个功能方面,汇编器和编译器是同样的。 用汇编语言编写的源代码和本地代码是一一对应的。因而,本地代码也可以反过来转换成汇编语言编写的代码

STM32F104ZET6之ucosⅢ常用函数

跟風遠走 提交于 2019-12-05 19:23:49
一、OS的初始化与启动 1.OS初始化,初始化各种内核对象和全局变量 函数原型:void OSInit (OS_ERR *p_err) 参数:p_err,用于返回错误码 返回值:无 它是第一个执行的函数。 2.启动OS,创建任务后调用 函数原型:void OSStart (OS_ERR *p_err) 参数:p_err,用于返回错误码 返回值:无 二、任务的管理 1.创建任务 void OSTaskCreate (OS_TCB *p_tcb,//类似于线程id,控制任务 CPU_CHAR *p_name,//任务的名字,可以自定义 OS_TASK_PTR p_task,//任务函数,类似线程函数 void *p_arg,//任务传递参数,类似于给线程函数传递参数 OS_PRIO prio,//任务的优先级 CPU_STK *p_stk_base,//任务栈基址,提供一个数组基址(任务栈数组基地址) CPU_STK_SIZE stk_limit,//空出10%的栈空间给到堆栈检测函数使用,反过来说,当前任务只能使用90%栈空间 CPU_STK_SIZE stk_size,//任务栈的大小,以字(32位)为单位 OS_MSG_QTY q_size,//任务内消息队列的大小,若不使用,写0 OS_TICK time_quanta,//时间片轮转调度算法,若不使用,写0(这是时间片的长度)

为什么说Redis是单线程的以及Redis为什么这么快!(转)

笑着哭i 提交于 2019-12-05 19:12:58
一、前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。 如果你在以前面试的时候还没有遇到过面试官问你《为什么说Redis是单线程的以及Redis为什么这么快!》,那么你看到这篇文章的时候,你应该觉得是一件很幸运的事情!如果你刚好是一位高逼格的面试官,你也可以拿这道题去面试对面“望穿秋水”般的小伙伴,测试一下他的掌握程度。 好啦!步入正题!我们先探讨一下Redis是什么,Redis为什么这么快、然后在探讨一下为什么Redis是单线程的? 二、Redis简介 Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(Strings),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。 Redis 内置了复制

python指定cpu使用率,与内存占用率

不打扰是莪最后的温柔 提交于 2019-12-05 19:06:18
python指定cpu使用率,与内存占用 """ runing 100 runing.py -c 2 -t 0.01 -m 1000 -c cpu核数,不加-c参数为最大核数 -t cpu运算频率时间,间隔,越小占用越高 -m 内存占用,1000MB """ import sys import time from time import clock import argparse from multiprocessing import Process from multiprocessing import cpu_count import math import tempfile # 屏蔽 Traceback信息 sys.stderr=tempfile.TemporaryFile() def exec_func(bt): while True: for i in range(0, 9600000): pass time.sleep(bt) if __name__ == "__main__": parse = argparse.ArgumentParser(description='runing') parse.add_argument( "-c", "--count", default= cpu_count(), help='cpu count' ) parse.add

【第七篇】Prometheus PromQL 简单用法

白昼怎懂夜的黑 提交于 2019-12-05 17:27:27
目录 说明 CPU 内存 磁盘监控 磁盘空间利用率百分比 预计饱和 说明 基于上一篇 文章 的基础,这里做一些关于 CPU、内存、磁盘的一些基础查询语句。 CPU 通过查询 metric值为 node_cpu_seconds_total 来获取当前CPU 的所有信息 直接通过此参数参数,会查到的数据是当前CPU的所有相关的收集到的数据。 此时就需要使用 irate 函数,用于计算距离向量中的实际序列的每秒顺势增长率。 再根据标签筛选来查询如下: irate(node_cpu_seconds_total{job="node"}[5m]) 使用avg聚合查询到的数据后,再使用by 来区分实例,这样就能做到分实例查询各自的数据。 avg(irate(node_cpu_seconds_total{job="node_srv"}[5m])) by (instance) 上面的语句查询到的CPU数据,是包含CPU的所有数据,而我们要查询的是CPU的5分钟负载 思路就可以这样:查询出CPU的空闲值 mode='idle' ,乘以 一百得出空闲百分比后,在用100减去空闲百分比就得出CPU使用的百分比 如下: 100 - ((avg(irate(node_cpu_seconds_total{job="node_srv",mode="idle"}[5m])) by (instance)) * 100

一个前端工程师眼里的NodeJS

你离开我真会死。 提交于 2019-12-05 15:25:56
JavaScript单线程的误解   在我接触JavaScript(无论浏览器还是NodeJS)的时间里,总是遇到有朋友有多线程的需求。而在NodeJS方面,有朋友甚至直接说到,NodeJS是单线程的,无法很好的利用多核CPU。   诚然,在前端的浏览器中,由于前端的JavaScript与UI占据同一线程,执行JavaScript确实为UI响应造成了一定程度上的麻烦。但是,除非用到超大的循环语句执行JavaScript,或是用阻塞式的Ajax,或是太过频繁的定时器执行外,JavaScript并没有给前端应用带来明显的问题,所以也很少有朋友抱怨JavaScript是单线程而不能很好利用多核CPU的问题,因为没有因此出现性能瓶颈。   但是,我们可以用Ajax和Web Worker回应这个误解。当Ajax请求发送之后,除非是同步请求,否则其余的JavaScript代码会很快被执行到。在Ajax发送完成,直到接收到响应的这段时间里,这个网络请求并不会阻塞JavaScript的执行,而网络请求已经发生,这是必然的事。那么,答案就很明显了,JavaScript确实是执行在单线程上的,但是,整个Web应用执行的宿主(浏览器)并非以单线程的方式在执行。而Web Worker的诞生,就是直接为了解决JavaScript与UI占用同一线程造成的UI响应问题的

设备选型

为君一笑 提交于 2019-12-05 15:14:35
1、选择交换机的主要技能指标是什么? (1)机架插槽数:指机架式交换机所能安插的最大模块数。 (2)扩展槽数:指固定配置式带扩展槽交换机所能安插的最大模块数。 (3)最大可堆叠数:指可堆叠交换机的堆叠单元中所能堆叠的最大交换机数目。 显然,此参数也说明了一个堆叠单元中所能提供的最大端口密度与信息点连接能力。 (4)支持的网络类型:一般情况下,固定配置式不带扩展槽交换机仅支持一种类型的网络,机架式交换机和固定配置式带扩展槽交换机可支持一种以上类型的网络,如支持以太网、快速以太网、千兆以太网、ATM、令牌环、FDDI等。一台交换机所支持的网络类型越多,其可用性和可扩展性将越强。 (5)最大SONET端口数:SONET(Synchronous Optical Network,同步传输网络)是一种高速同步传输网络规范,最大速率可达2.5Gbit/s。一台交换机的最大SONET端口数是指这台交换机的最大下传的SONET接口数。 (6)背板吞吐量:背板吞吐量也称背板带宽,单位是每秒通过的数据包个数(pps),表示交换机接口处理器或接口卡和数据总线间所能吞吐的最大数据量。一台交换机的背板带宽越高,所能处理数据的能力就越强,但同时成本也将会越高。 (7)MAC地址表大小:连接到局域网上的每个端口或设备都需要一个MAC地址,其他设备要用到此地址来定位特定的端口及更新路由表和数据结构

zabbix 3.4应用环境监控(7)

一个人想着一个人 提交于 2019-12-05 13:45:33
Zabbix监控Nginx 实验环境 服务器系统 角色 IP CentOS 7.4 x86_64 Zabbix-Server 192.168.90.10 CentOS 7.4 x86_64 Zabbix-Agent 192.168.90.11 2.在 nginx.conf 的 Server 标签下添加如下内容 location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } 3.本地访问 Nginx Status [root@linux-node1 ~]# curl http://127.0.0.1/nginx_status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0 4.编写Nginx的Shell脚本(如果端口不一致,只需要修改脚本端口即可) [root@Agent ~]# mkdir -p /etc/zabbix/scripts [root@linux-node1 scripts]# vim /etc/zabbix/scripts/nginx_status.sh #!/bin/bash ########################