cpu时间

Docker——Cgroup资源限制

[亡魂溺海] 提交于 2020-01-21 01:18:33
一、Cgroup (1)Docker通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 (2)Cgroup 是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。 Cgroup 子系统: 1、blkio:设置限制每个块设备的输入输出控制; 2、cpu:使用调度程序为 cgroup 任务提供 cpu 的访问; 3、cpuacct:产生 cgroup 任务的 cpu 资源报告; 4、cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存; 5、devices:允许或拒绝 cgroup 任务对设备的访问; 6、freezer:暂停和恢复 cgroup 任务; 7、memory:设置每个 cgroup 的内存限制以及产生内存资源报告; 8、net_cls:标记每个网络包以供 cgroup 方便使用; 9、ns:命名空间子系统; 10、perf_event:增加了对每个 cgroup 的监测跟踪能力,可以监测属于某个特定的 cgroup 的所有线程及运行在特定 CPU 上的线程。 二、使用 stress 工具测试 CPU 和内存 首先使用 Dockerfile 来创建一个基于 Centos 的 stress 的工具镜像: [root@localhost ~

并行,串行,流水线,线程和进程傻傻分不清楚

那年仲夏 提交于 2020-01-20 03:35:56
漫谈并行,串行,流水线,线程和进程 在说并行串行流水线时,我们先要说一个概念双核四程,四核八程代表什么。 双核四程 指处理器中有两个核心, 但是利用了超线程技术,一个核心就有2个线程,所以两个核心就有4个线程。一般来说,两个核心就只有2线程。 超线程技术 就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。因此支持Intel超线程技术的cpu,打开超线程设置,允许超线程运行后,在操作系统中看到的cpu数量是实际物理cpu数量的两倍,就是1个cpu可以看到两个,两个可以看到四个。有超线程技术的CPU需要芯片组、软件支持,才能比较理想的发挥该项技术的优势。 上述是一种减少命令执行时间的一种方式,Linux自从2.6内核开始,就会把不同的线程交给不同的核心去处理。Windows也从NT.4.0开始支持这一特性。 然后说下:并行,串行,流水线 并行: 时间片机制( 也有其他的机制,自己百度 ),让每个进程占用相同的cpu时间,在宏观上,可以实现多个进程同时完成。 串行: 一个进程完成,在执行下一个进程 流水线: 在A命令在执行时,B命令在解析,C命令在读取。这样子循环。 再说下线程和进程关系 我们开发应用程序,基本上分为2种进程:io消耗(文件读写);cpu消耗

大厂面试中三次握手延伸出来n连发你受得了?

别说谁变了你拦得住时间么 提交于 2020-01-20 03:13:34
秋招面试也不记得多少家公司会有这个面试题。所以将其总结一下并分享给大家。 文章目录 一、这是一次有故事的对话 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 2 tcp协议内容解析 3 通过工具wireshark来验证我们所述 三、说下Linux网络编程常用API 1 Linux网络编程常用API 2 粘包现象 四、再说说为啥不是两次握手或者四次握手? 五、最后聊一聊分析网络程序的工具 1 网络程序调试工具的思维导图 2 详解各个小工具 六 结尾 嘀嘀嘀。。。。一看广东,难道是腾讯的面试,哦原来是电话面试。那就开始吧! 一、这是一次有故事的对话 先说说三次握手的各个状态 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 嗯?这些ack seq是干啥的呢,不急不急,我们先把tcp协议格式内容给整明白了。 2 tcp协议内容解析 小贱先把tcp的头部搬过来 然后我们来解析一下各个字段是什么意思 字段名 字段描述 16位端口号 告知主机该报文是来自哪里以及传给哪个上层协议或应用程序(目的端口)的。 32位序列号 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号 32位确认号 用作对另一方发送来的TCP报文段的响应 4位头部长度 标识该TCP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以TCP头部最长是60字节。

压测中遇到的服务器端性能问题及解决办法

☆樱花仙子☆ 提交于 2020-01-19 23:49:06
1 应用cpu过高   1、用vmstat实时监控cpu使用情况。很小的压力AP cpu却到了80%多,指标是不能超过80%,有可能CPU在进行大量计算;   2、分析是user cpu过高还是sys cpu过高,常见的是user cpu使用过高;   3、如果是user cpu使用过高,先把消耗cpu最多的进程找出来(top命令),再找到该线程下消耗cpu过高的是哪几个线程,再把该线程转换成16进制,再用jstack命令来dump线程栈,看这个线程栈在调用什么东西导致user cpu过高; 2 内存溢出(堆溢出、栈溢出、持久代溢出) 1、堆内存溢出   产生的现象:稳定性压测一段时间后,LR报错,日志报java.lang.OutOfMemoryError.Java heap space。   排查手段: 1)用jmap -histo pid命令dump堆内存使用情况,查看堆内存排名前20个对象,看是否有自己应用程序的方法,从最高的查起,如果有则检查该方法是什么原因造成堆内存溢出。   2)如果前20里没有自己的方法,则用jmap -dump来dump堆内存,在用MAT分析dump下来的堆内存,分析导出内存溢出的方法。   解决方式:如果应用程序的方法没有问题,则需要修改JVM参数,修改xms,xmx,调整堆内存参数,一般是增加堆内存。 2、栈内存溢出   产生的原因

大厂面试中三次握手延伸出来n连发你受得了?

柔情痞子 提交于 2020-01-19 22:58:41
目录 一、这是一次有故事的对话 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 2 tcp协议内容解析 3 通过工具wireshark来验证我们所述 三、说下Linux网络编程常用API 1 Linux网络编程常用API 2 粘包现象 四、再说说为啥不是两次握手或者四次握手? 五、最后聊一聊分析网络程序的工具 1 网络程序调试工具的思维导图 2 详解各个小工具 六 结尾 秋招面试也不记得多少家公司会有这个面试题。所以将其总结一下并分享给大家。 @ 嘀嘀嘀。。。。一看广东,难道是腾讯的面试,哦原来是电话面试。那就开始吧! 一、这是一次有故事的对话 先说说三次握手的各个状态 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 嗯?这些ack seq是干啥的呢,不急不急,我们先把tcp协议格式内容给整明白了。 2 tcp协议内容解析 小贱先把tcp的头部搬过来 然后我们来解析一下各个字段是什么意思 字段名 字段描述 16位端口号 告知主机该报文是来自哪里以及传给哪个上层协议或应用程序(目的端口)的。 32位序列号 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号 32位确认号 用作对另一方发送来的TCP报文段的响应 4位头部长度 标识该TCP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以TCP头部最长是60字节。

性能分析报告

泄露秘密 提交于 2020-01-19 22:20:31
性能测试工具CPU profiler(gperftools) 编译安装gperftools gperftools是一个工具包,CPU profiler是其中的工具之一,用于程序性能分析。要使用CPU profiler就要先编译安装gperftools,下面是简单的编译安装过程. 从github下载gperftools源码并解压wgethttps://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gztarxvf gperftools-2.7.tar.gz# 解压文件夹改名mvgperftools-gperftools-2.7 gperftools-2.7cdgperftools-2.7./autogen.sh./configuremake-j8# 安装到系统文件夹sudomakeinstall 注意:在64位操作系统下需要libunwind支持,如果没有安装libunwind,还要先编译安装libunwind。 使用cpu profiler 根据CPU profiler的官方说明(https://gperftools.github.io/gperftools/cpuprofile.html),对一个程序进行测试是很简单的。 只要加上-lprofiler对程序重新编译一次,再执行程序就可以了

「Python网络编程」如何让蔡徐坤同时唱跳rap篮球/初识多线程(二)

痴心易碎 提交于 2020-01-19 21:14:47
博主前言: 通过第一篇文章的学习,读者已经认识了网络编程中的套接字编程,已经具备了实现基于TCP协议和基于UDP协议网络编程中 客户端 的实现。第二篇文章打算让读者感受一下多线程的魅力,通过仔细阅读本篇文章完全可达到一文入门多线程的目的。 1. 几个基本概念 1.1 单核CPU与多核CPU CPU(central processing unit),即中央处理器,是 作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。 所谓单核CPU就是指 同一时刻计算机只能执行一件事情 。即电脑在同一时刻只运行一种程序。 那么多核CPU就是指 同一时刻计算机可以执行多件事情 。即电脑在同一时刻可执行多种程序。 1.2 并行与并发 我相信读到这儿读者肯定是有疑问的, 为什么在配置单核CPU的计算机上既可以听音乐,同时又可以打开QQ聊天,同时还可以挂着游戏呢? 这一切的原因都是因为CPU运行的速度实在是太快了,一秒钟可以执行上百万次。在单核CPU的计算机上,我们先把音乐播放的软件拿来执行,让它执行0.0001s,然后再把QQ的程序拿来执行0.0001s,最后再把游戏的程序拿来执行0.0001s,循环往复。虽然我们执行的时间只有0.0001s,但是在CPU眼里,这个时间已经足够长了,所以达到了我们视觉上的效果,好像音乐、QQ、游戏同时在运行的样子。类似于现实生活中的翻书动画一般

Java多线程(5)

风格不统一 提交于 2020-01-19 18:35:07
Java多线程(5) CPU缓存一致性问题 因为缓存的出现,极大提高了CPU的吞吐能力,但同时也引入了缓存不一致的问题,比如i++操作 在程序运行过程,首先将主存中的数据复制一份存放到CPU Cache中,那么CPU寄存器进行数值计算的时候就直接到Cache中读取和写入,当整个运算过程完毕之后再讲Cache中的数据刷新到主存当中 具体如下: 读取主内存的i到cpu cache 对i进行+1操作 将结果写回到cpu cache中 将数据刷新到主内存 i++在单线程环境不会有什么问题,但在多线程下就会出现问题了 每个线程都有自己的工作内存,变量i会在多个线程的本地内存中都保存一个副本,如果同时两个线程执行i++操作,假设i的初始值为0,每一个线程都从主内存中获取i的值存入cpu cache,然后经过计算再写入主内存,很有可能i在经过了两次自增之后结果还是1,这就是典型的缓存不一致的问题 Java内存模型决定了一个线程对共享变量的写入何时对其他线程可见,Java内存模型定义了线程和主内存之间的抽象关系: 共享变量存储在主内存,每个线程都可以访问 每个线程都有私有的工作内存或者称为本地内存 工作内存只存储该线程对共享变量的副本 线程不能直接操作主内存,只有先操作了工作内存之后才能写入主内存 并发编程的三个重要特性 原子性 指在一次的操作或者多次操作中

java整个理解

浪尽此生 提交于 2020-01-19 18:19:31
jvm内存模型 堆内存 方法区 程序计数器 Java虚拟机栈 本地方法栈 运行时常量池 直接内存 **** 堆内存 这是jvm中最大的一块区域,基本上所有的变量和对象实例都在这一块区域存放,所有线程共享的。但是随着jdk1.6的发布,JIT即时编译技术的优化、逃逸分析技术的成熟,所有对象在堆上分配也不是那么绝对的,只要逃逸分析出对象不会逃逸出线程或者栈,那么原来在堆上分配的变量可以直接在栈上分配,这样在方法调用结束、或者线程结束的时候,栈上内存自动释放,可以大大减少堆内存上的GC收集,提高jvm整体运行效率。会抛出OutOfMemeryError错误,堆的生命周期和jvm的生命周期相同,随着JVM的启动而产生,JVM的终止而释放 **** 方法区 这一部分也是所有线程共享的。方法区存放的是类信息、常量、静态变量和即时编译器编译后的代码,方法区也叫永久代,这里存放的都是类相关的信息,还有字符变量和引用变量。会抛出OutOfMemeryError错误,生命周期和JVM相同 **** Java虚拟机栈 这一部分是线程私有的,每一个线程都会有一个虚拟机栈,虚拟机栈是Java方法执行的内存模型,每一个方法都在虚拟机栈中都对应一个栈帧,该栈帧存放的是,方法调用需要使用到的局部变量表(8大基本数据类型和reference对象引用)、方法参数、动态链接、操作数栈、方法出口的信息。Java没有c、c

IIS的应用程序池优化方法

北慕城南 提交于 2020-01-19 12:35:13
IIS的应用程序池优化方法 IIS应用程序池优化方案 服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '3504'。”的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题。解决方法如下 (红色字为标记) : Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->右击属性 一、回收 1、回收工作进程(分钟):选中,值为1740 (800) 2、回收工作进程(请求数目): (不选) (原先设置为35000) 3、在下列时间回收工作进程:不填 (03:00) 4、消耗太多内存时回收工作进程:全不选。(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,导致iis假死不响应) (最大虚拟内存350,最大使用的内存200) 二、性能 (都不选) 只选中空闲超时20分钟。其他都不选。WEB园最大工作进程数为1(默认)。注意web园这里一定要保持默认,如果填写其他超过1的数字就会导致一些网站程序的后台程序打不开或者刷新不停。 原来的请求队列限制为4000,现在无限制。 (要选就是10000) 三、运行状况 (启用PING,默认) (启动快速失败保护的钩去掉!) 为了避免真的遇到很多错误时没有提示,可以不关闭,只是把快速保护的保护范围加大些,例如失败数50次