运存

linux性能调优总结

断了今生、忘了曾经 提交于 2019-12-12 14:42:08
系统性能一直是个热门话题。做运维这几年也一直在搞性能调优,写这个文章也算是对工作的总结。 讲调优第一步是,要讲为什么要调优?也就是系统分析,分析还需要有指标,做好性能监控的情况下,看到确实需要调优才能进行。不能为了调优而 “调优“ 那不是调优,那是破坏。 性能分析的目的 找出系统性能瓶颈 为以后的优化提供方案或者参考 达到良好利用资源的目的。硬件资源和软件配置。 影响性能的因素 想确定有哪些因素,首先确定你的应用是什么类型的? 例如: cpu密集型 例如web服务器像nginx node.js需要CPU进行批处理和数学计算都属于此类型 io密集型 例如数据库常见的mysql,大量消耗内存和存储系统,对CPU和网络要求不高,这种应用使用CPU来发起IO请求,然后进入sleep状态。 确定了应用类型就开始分析有哪些情况能影响性能: 大量的网页请求会填满运行队列、大量的上下文切换,中断 大量的磁盘些请求 网卡大量的吞吐 以及内存耗尽等。。 归结起来就是4个方面 cpu memory i/o network 系统检测的工具 我们知道了这四大块影响着我们的性能,那我们有什么工具进行检测呢? 系统调优.png-341.3kB 上图时某国外大神总结的。 我个人在工作中常用到的有: htop vmstat iotop sar strace iftop ss lsof ethtool mtr等

CPU

不问归期 提交于 2019-12-12 10:36:07
CPU 1. CPU是什么? 2.CPU 实际做什么? 3.CPU 的内部结构 4.CPU 是寄存器的集合体 5.计算机语言 6.汇编语言 7.程序计数器 8.条件分支和循环机制 9.标志寄存器 10.函数调用机制 11.通过地址和索引实现数组 12.CPU 指令执行过程 13.总结 1. CPU是什么? CPU 的全称是 Central Processing Unit ,它是你的电脑中最硬核的组件,这种说法一点不为过。CPU 是能够让你的计算机叫计算机的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。 它 是一种小型的计算机芯片 ,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 2.CPU 实际做什么? CPU 的核心是从程序或应用程序获取指令并执行计算。 此过程可以分为三个关键阶段: 提取,解码和执行 。 CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器 (英语:Random Access Memory,缩写:RAM),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以 随时读写 (刷新时除外)

PHP 函数运行的内存

安稳与你 提交于 2019-12-10 10:43:24
函数在运行期间占用的内存,在运行结束后会被回收。但是还有问题不明白,函数内部的echo在函数执行结束后还占用内存吗??? //PHP 函数执行完内存就会被收回 function test() { echo '函数内部开始监测内存:', memory_get_usage(), '<br>'; //为什么这里统计内存和下面统计内存的结果值一样呢???? echo '函数内部二次监测内存:', memory_get_usage(), '<br>'; //这里和上面的统计都是376544,为什么呢???? $tmp = []; for($i=0; $i<20000; $i++){ $tmp[] = $i; } echo '函数内部最后监测内存:', memory_get_usage(), '<br>'; //return $tmp; } echo '开始运行函数...<br>'; echo '此时内存:', memory_get_usage(), '<br>'; //echo 输出内容是占内存的, 但是好像和echo位置无关,无论在前在后,memory_get_usage()统计的时候,都一起统计了的赶脚,就是感觉在程序刚开始运行的时候,把文件里所有的echo所占内存统计了。 test(); echo '函数运行结束...<br>'; echo '此时内存:', memory_get

聊一聊内存管理(2)

末鹿安然 提交于 2019-12-10 04:21:11
在上一讲我们给大家重点介绍了什么是内存管理,让大家对内存管理有了整体的认识。简单来说就是,程序的运行需要内存,你如何管理并给这些程序分配内存。 本节我们来给大家介绍最简单的一种内存管理方案:单一连续区分配。为什么说这种内存分配是最简单的呢?接下来我们就做详细的介绍。 单一连续区内存分配的基本思想是一段时间内只有一个进程在内存。我们将4G的内存分为两部分,一部分存放操作系统内核,另外一部分存放用户程序,且一段时间内只有一个用户程序在内存中。如图1-1所示: 图1- 1 单一连续区内存分配 T1时刻有进程P1,需要512MB的内存,那么将内存分配给P1,如图1-2所示; T2时刻有进程P2,需要1GB的内存,由于单一连续区内存分配的特点,此时用户区已经有了P1在执行,即时剩余内存充足,P2也无法运行,只有在P1运行结束并释放内存之后才能运行P2。 图1- 2 进程 P1的内存分布 从上面的分析大家可以看到这种内存分配方式非常的简单,可以说没有什么方法比这种还要简单的了。但是缺点也非常明显: 一段时间内只能运行一个程序,因此无法实现多道程序; 在运行一个进程后,即使有足够的剩余内存也无法执行新的进程,而只有等待该进程运行结束后才能继续执行,因此内存的利用率相当的低; 如果进程所需的内存大于用户程序的总大小,则该进程将无法得到运行,因此对要运行的进程有很大的限制条件

聊一聊内存管理(1)

孤街醉人 提交于 2019-12-10 04:18:31
“最近的电脑打开程序非常慢,而且运行的时候很卡,有没有什么解决办法呢?” “去京东买个4G 的内存条加到电脑里面吧!” 在我们的生活中,经常会遇到这样的对话。当我们的电脑运行程序变得很慢很卡的时候,就会听到身边的朋友建议我们去增加电脑的内存。这是为什么呢?内存在计算机体系结构中起了什么样的作用?当我们有了4G 的内存,操作系统又是如何管理这些内存的呢? 本系列博客将和大家一起深入的探讨这些问题,主要介绍操作系统原理中的内存管理部分,从而让您更好的理解计算机。力求用最简单易懂的语言介绍相关原理及算法,即使您没有任何的专业基础,也能和我们一起来感受操作系统的魅力。 问题定义 介绍任何技术及理论之前,我们首先都需要搞明白需要解决的问题是什么,也就是问题的定义,这是极其关键的一步。很多学生在学习的时候,往往不知道我为什么要学习这个知识点,这个知识点和前后章节以及其他课程的关系是什么,这个知识点解决了什么问题,只是简单的去学某个知识点,而忽视了问题的定义以及前后关联。 每一个程序的运行都需要占用内存,每一个程序运行结束了以后,都会释放其占有的内存。 这是大家首先需要了解的一个前提。 首先我们来给大家介绍下什么叫内存管理。所谓内存管理简单来说就是你要运行一个程序,就需要给这个程序分配相应的内存,那么该如何分配这些内存呢? 可能有些同学说,这不是很简单的事情吗?比如 我有 4G 的内存条

APP测试基本流程以及APP测试要点

痞子三分冷 提交于 2019-12-10 00:13:34
APP测试基本流程以及APP测试要点 https://www.cnblogs.com/dengqing9393/p/6497068.html 性能测试:https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318 APP测试设计测试用例的要点 http://blog.itpub.net/69915785/viewspace-2663955/ 1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。 1.3测试资源 测试任务开始前,检查各项测试资源。 --产品功能需求文档; --产品原型图; --产品效果图; --测试设备; --其他。 1.4日报及产品上线报告(内部报告机制) 1)测试人员每天需对所测项目发送测试日报。(也就是我这边有邮件通知测试项目的时候一般均属于输出测试日报) 2)测试日报所包含的内容为: \\Dell-server\网站软件app等开发\产品测试部\测试知识区域\测试文档类模板\项目测试报告邮件输出模板.doc 4)不同版本测试报告输出 2 App测试点 App测试点整理 一. 功能性测试 根据产品需求文档编写的测试用例进行测试 功能性包括客户端的单个功能模块,以及功能业务逻辑(功能交互) 1

查看内存条的两种方式

寵の児 提交于 2019-12-07 11:36:27
电脑内存的大小在很大程度上影响了我们的电脑运行速度,一些用户想升级下自己电脑的内存,让系统运行速度变得更快。升级第一步就是查看电脑内存型号来匹配合适的新内存,很多人并不知道要如何查看?为此,一起阅读下文教程设置吧。 具体方法如下: 1、首先,需要打开命令行模式,利用win+r键打开运行,输入cmd回车; 2、在命令行界面输入wmic进入命令行系统管理执行脚本界面; 3、可以通过命令memorychip进行查看内存型号,可以看出,有两条内存,分别为2G,PN号也可以看出; 4、通过cpu get *可以查看cpu的具体情况(注意空格),拖动滚动条找到numberofcores和numberoflogicalprocessors两列。 方法二:借助硬件检测软件查看笔记本内存条型号 1、在笔记本电脑中下载安装鲁大师软件,安装之后,打开运行; 2、然后进入到硬件检测界面; 3、这里就可以看到,笔记本的内存型号了。 上述两种方法就是查看电脑内存条型号的方法,如果你要查看电脑内存,不妨参考教程设置吧。 文章转发于 系统城 来源: https://www.cnblogs.com/houss/p/12001124.html

Java内存模型原理

妖精的绣舞 提交于 2019-12-06 00:51:39
这篇文章主要介绍模型产生的问题背景,解决的问题,处理思路,相关实现规则,环环相扣,希望读者看完这篇文章后能对 Java 内存模型体系产生一个相对清晰的理解,知其然知其所以然。 内存模型产生背景 在介绍 Java 内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。 物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机的解决方案对虚拟机的实现有相当的参考意义。 物理机的并发问题 硬件的效率问题 计算机处理器处理绝大多数运行任务都不可能只靠处理器“计算”就能完成,处理器至少需要与内存交互,如读取运算数据、存储运算结果,这个 I/O 操作很难消除(无法仅靠寄存器完成所有运算任务)。 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,为了避免处理器等待缓慢的内存完成读写操作,现代计算机系统通过加入一层读写速度尽可能接近处理器运算速度的高速缓存。 缓存作为内存和处理器之间的缓冲: 将运算需要使用到的数据复制到缓存中,让运算能快速运行,当运算结束后再从缓存同步回内存之中。 缓存一致性问题 基于高速缓存的存储系统交互很好的解决了处理器与内存速度的矛盾,但是也为计算机系统带来更高的复杂度,因为引入了一个新问题:缓存一致性。 在多处理器的系统中(或者单处理器多核的系统),每个处理器(每个核)都有自己的高速缓存,而它们有共享同一主内存(Main

【并发那些事】可见性问题的万恶之源

删除回忆录丶 提交于 2019-12-05 15:18:36
【并发那些事】可见性问题的万恶之源 硬件工程师为均衡 CPU 与 缓存之间的速度差异,特意加的 CPU 缓存,竟然在多核的场景下阴差阳错的成为了并发可见性问题的万恶之源!( 本文过长,如果不是特别无聊,看到这里就可以了 ) 前言 还记得那些年,你写的那些多线程 BUG 吗?明明只想得到个 1 + 1 = 2 的预期,结果他有时候得到 1,有时候得到 3,但偏偏有时候他也会返回正确的 2。明明在本地运行的好好的,一上线一堆诡异的 BUG。你一遍一遍的检查代码,一行一行 debug,结果无功而返。 变量为何突然变异?代码为何乱序运行?条件为何形同虚设?欢迎收看今天的《走进科学》之半夜。。。哦,不对,欢迎阅读今天的《并发那些事》之可见性问题的万恶之源。就像上面说的,我们在写并发程序时,经常会出现超出我们认识与直觉的问题,而按我们的以往的经验,很难去察觉到他的问题所在。而又因为我们不了解他发生的诱因,即使我们按照书上的方案解决了,但是下次还是会出现。所以本文的主旨并不是解决问题的术,而是解决问题的道。一起来探究多线程问题的根源。 首先揭开谜底,大多数并发问题的发生都是这三个问题导致的, 可见性问题、原子性问题、有序性问题 。那么又是什么导致这三个问题的出现呢?本文将一步步解析可见性问题出现的原因。 核心矛盾 众所周知,电脑由很多的部件组成。其中最最最重要的有三个,它们分别是 CPU 、内存

计算机基本运行原理

。_饼干妹妹 提交于 2019-12-05 04:14:41
CPU 运算很快,但存储容量很小,而且断电后数据就丢了 比内存快百倍,比硬盘快百万倍 要做的几件事 运行指令 不能保存指令,指令全在内存中 上电后执行的第一条指令放在地址0xFFFFFFF0处,通常是跳转指令,到BIOS 靠缓存和流水线技术,提高利用率 缓存 利用了局部性原理 流水线 避免可以并行的不同指令(工作)之间互相等待 比如CPU通常要做四件事 通知内存取指令 翻译指令 执行指令 把结果写会内存 内存 比硬盘速度快,但断电后数据就丢了 硬盘 慢,但是容量大,断电还能保存下来 机械式硬盘需要靠磁头在高速旋转的磁片上挪来挪去进行寻址和读写 啥都好的,就贵了。。。否则别的部件就消失了,比如历史上的软盘什么的。 计算机启动过程 来源: https://www.cnblogs.com/wyp1988/p/11905033.html