从2001年DDR内存面世以来发展到2019年的今天,已经走过了DDR、DDR2、DDR3、DDR4四个大的规格时代了(DDR5现在也出来了)。内存的工作频率也从DDR时代的266MHz进化到了今天的3200MHz。这个频率在操作系统里叫Speed、在内存术语里叫等效频率、或干脆直接简称频率。这个频率越高,每秒钟内存IO的吞吐量越大。但其实内存有一个最最基本的频率叫核心频率,是实际内存电路的工作时的一个振荡频率。它是内存工作的基础,很大程度上会影响内存的IO延迟。我今天想给大家揭开另外一面,这个叫核心频率的东东其实在最近的18年里,基本上就没有什么太大的进步。
很多初学者在安装 Linux 系统时,都对自己的电脑配置存在质疑,担心其是否能够满足安装 Linux 的要求。本节就从 CPU、内存、硬盘、显卡等这些方面,详细介绍一下安装 Linux 系统的最低配置。
接受用户输入指令或数据,经由中央处理器的数学和逻辑单元运算处理后,以产生或存储成有用的信息。
云豆贴心提醒,本文阅读时间7分钟 现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简单的策略。这些方法都有助于改进MySQL的性能。 闲话少说,进入正题。 一、CPU 首先从CPU说起。 你仔细检查的话,有些服务器上会有的一个有趣的现象: 你cat /proc/cpuinfo时,会发现CPU的频率竟然跟它标称的频率不一样: 这个是Intel E5-2620的CPU,他是2.00G * 24的CPU,但是,我们发现第5颗C
Management PCI-Express Runtime D3 (RTD3) Power Management是一种用于管理PCI-Express设备的低功耗模式的技术RTD3是一种睡眠状态,当PCI-Express设备处于空闲状态时,可以将其置于低功耗模式,以减少能源消耗和热量产生。英伟达™(NVIDIA®)图形处理器有许多省电机制。其中一些机制会降低芯片不同部分的时钟和电压,在某些情况下还会完全关闭芯片部分的时钟或电源,但不会影响功能或继续运行,只是速度较慢。然而,英伟达™(NVIDIA®)GPU 的最低能耗状态需要关闭整个芯片的电源,通常是通过调用 ACPI 来实现。这显然会影响功能。在关机状态下,GPU 无法运行任何功能。必须注意的是,只有在 GPU 上没有运行任何工作负载的情况下才能进入这种状态,而且在试图开始工作或进行任何内存映射 I/O (MMIO) 访问之前,必须先重新开启 GPU 并恢复任何必要的状态。
可以看出buff/cache占用的内存份额很大,有时候程序运行结束后,大量内存仍位于buff/cache中,有时运行程序会导致内存不足,因此需要将这部分内存释放出来。
Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计文件。
项目需要使用的主板有很多性能需要经过测试之后才能用于开发使用,因此将Linux上一些常用的tools移植进板子进行测试。
在我们日常工作中,可能会发现free的值(空闲)越来越低,我们会直观的认为内存耗尽,到达瓶颈了,其实,这只是Linux的为了提高文件读取的性能的内存使用机制罢了。不同于Windows,windows程序执行完后,会马上释放掉内存,把Memory降下来。而对于Linux,如果你的服务器内存还有足够多的空间的话,Linux会把程序运行的数据缓存起来,加入到Cache中,所以内存会不断增加,直到一定的限度为止.当超过这限度后,内核必须将脏页写回磁盘,以便释放内存。也就是说,当空闲内存低于一个特定的阈值时,内核的守护进程就会进行内存块回收,那我们如何判断内存达到瓶颈呢?
相比机械磁盘固态磁盘有更好的随机读写性能,相比机械磁盘固态磁盘有更好的并发支持,相比机械磁盘固态磁盘更容易损坏
本次测试板卡是创龙科技旗下,一款基于全志科技A40i开发板,其接口资源丰富,可引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出MIPI LCD、LVDS LCD、TFT LCD、HDMI OUT、CVBS OUT、CAMERA、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、1080P@45fps H.264视频硬件编码、1080P@60fps H.264视频硬件解码,并支持SATA大容量存储接口。
Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。
psutil (python system and process utilities) 是一个跨平台的第三方库,能够轻松实现获取系统运行的进程和系统利用率(包扩CPU、内存、磁盘、网络等)信息。它主要用于系统监控、分析、限制系统资源和进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持的操作系统包括:Linux,Windows,macOS,,AIX等等。同时支持python2与python3版本,当前最新版本为5.4.8。
周末的时候,有个读者跟我说,面试字节的时候被问到:「什么是伪共享?又该怎么避免伪共享的问题?」
nginx的IO模型,大家应该都有所了解。简单而言,就是一个master进程和多个worker进程(进程数由配置决定);master进程负责accept请求并队列化,最后转发给worker进程并由其进行请求处理和响应的整个过程。
参考手册 : S3C2440.pdf , 章节 : 7 CLOCK & POWER MANAGEMENT , Page 235;
其实学习的过程中,很容易陷入一个问题,貌似都懂,一问就含糊,今天就自己捋一捋的那团乱麻。
读取文件节点/proc/loadavg,分别是1min/5min/15min内CPU的负载情况。 读取方式的代码示例:
随着嵌入式技术的不断发展,嵌入式芯片的内存也越来越大。从最开始的51单片机,然后是STM32,现在逐渐的跑操作系统,例如Linux等等。这就需要嵌入式工程师掌握RAM相关的知识,如何利用好RAM是一个很大的难题,同时也是嵌入式必备的知识储备。下面就总结一下ram相关的概念。
或者 用户手动执行命令,如下 save命令: 同步快照方式,此方式会阻塞redis服务主进程对客户端命令的执行,不推荐; bgsave命令: 异步快照方式,此方法会 fork一个子进程 在后台执行,不影响主进程的效率;
Zabbix默认使用Zabbix agent监控操作系统,其内置的监控项可以满足系统大部分的指标监控,因此,在完成Zabbix agent的安装后,只需在前端页面配置并关联相应的系统监控模板就可以了。如果内置监控项不能满足监控需求,则可以通过system. run[command, <mode>]监控项让Zabbix agent运行想要的命令来获取监控数据。
大家好,我是 Peter,昨天群里有小伙伴咨询page cache的问题,看到网上有篇不错的文章,分享给大家。如果大家有想看的内容,欢迎给我留言。
先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下:
目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件)、 glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对 Linux 服务器的监控。 本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络的监控脚本的编写。 Python 版本说明 Python 是由 Guido van Rossum 开发的、可免费获得的、非常高级的
linux使用page cache来缓存最近读取的文件,也有目录结构(dcache: Directory Entry Cache)缓存及inode缓存,它们都使用了LRU算法来管理这些page及dentries cache
“骑士”漏洞是我国研究团队发现的首个处理器硬件漏洞,该漏洞是因为现代主流处理器微体系架构设计时采用的动态电源管理模块DVFS存在安全隐患造成的。 DVFS模块的设计初衷是降低处理器的功耗,允许多核处理器根据负载信息采用相应的频率和电压运行。一般说来,高运行频率配备高电压,反之采用低电压。但是,当某一个核出现电压和频率不太匹配的情形,如电压偏低无法满足较高频率运行需求时,系统就会出现短暂“故障”,就像是电压不稳灯泡闪烁一样,有时虽然不会影响系统整体运行,但如果该故障发生在安全等级较高的操作过程中,如加解密程序,会因为故障对系统行为结果的干扰会泄露出重要的系统行为信息,影响系统安全。“骑士”攻击正是利用这一漏洞,采用电压故障精准注入的方式,迫使处理器可信执行区(TEE,如ARM TrustZone、Intel SGX等)内的高安全等级程序运行出现故障,从而逐渐暴露其隐含的秘钥信息或者绕过正常的签名验证功能。 针对“骑士”漏洞的攻击完全是在DVFS允许的电压范围内进行,且攻击过程可以完全使用软件在线、远程实现,不需要额外的硬件单元或者线下辅助。“骑士”漏洞广泛存在于目前主流处理器芯片中,可能严重波及当前大量使用的手机支付、人脸/指纹识别、安全云计算等高价值密度应用的安全,影响面广。 攻击者的进程运行在一个低频率的处理器核心,受害者的进程运行在一个高频率的处理器核心上,攻击者进程提供一个短时间的故障电压,控制好电压的大小,使得这个电压对攻击者进程所在处理器核心没有影响,但是能使受害者进程所在处理器核心产生硬件错误,从而影响受害者进程。 具体的利用细节是,准备一个适当的能够发生电压故障的环境,做三件事,一是将受害者程序运行的处理器核心配置成高频率,其它处理器核心配置成低频率;二是攻击者程序用一个固定、安全的电压初始化处理器;三是清楚目标设备的剩余状态,包括Cache布局、分支预测表、中断向量表和状态寄存器等。 通常情况下,能够被VoltJockey注入错误的函数在受害者程序中只占很小的一部分,我们并不能确定其具体的执行时间,因此,攻击者程序需要在受害者程序产生错误之前对其中间执行过程进行监控,等待能够用来注入错误的函数被执行。 硬件注入攻击的目标是改目标函数的一小部分指令和数据,而且,这部分被影响的代码应该尽可能小。因此,错误注入点应该能被精确控制。到能够产生错误注入之前需要的时间,称为“预延迟”。 故障电压的大小和持续时间,是使产生的硬件错误能够被控制的两个因素。找到恰当的电压和持续时间,使得数据按照预期被改变,从而影响原有的程序流程,是非常重要的。 攻击的最终目的是获取受害者程序的敏感数据,或者篡改受害者进程的函数,而不是使受害者程序所在内核崩溃,因此,需要错误注入完成后,尽快恢复处理器核心电压为修改之前的正常值,确保受害者程序继续执行。
大概就是,进程写文件(使用缓冲 IO)过程中,写一半的时候,进程发生了崩溃,会丢失数据吗?
Zabbix默认使用Zabbix agent监控操作系统,其内置的监控项可以满足系统大部分的指标监控,因此,在完成Zabbix agent的安装后,只需在前端页面配置并关联相应的系统监控模板就可以了。如果内置监控项不能满足监控需求,则可以通过system. run[command, <mode>]监控项让Zabbix agent运行想要的命令来获取监控数据。 下面介绍Zabbix对于Linux和Windows的监控。 安装Zabbix agent的过程就不赘述了,主要介绍一些关键的配置和功能。 1 操作系统
大多数 Linux 发行版在默认配置下已经足够快了。但是,我们仍然可以借助一些额外的应用程序和方法让它们启动更快一点。其中一个可用的这种应用程序就是 Preload。它监视用户使用频率比较高的应用程序,并将它们添加到内存中,这样就比一般的方式加载更快一点。因为,正如你所知道的,内存的读取速度远远快于硬盘。Preload 以守护进程的方式在后台中运行,并记录用户使用较为频繁的程序的文件使用相关的统计数据。然后,它将这些二进制文件及它们的依赖项加载进内存,以改善应用程序的加载时间。简而言之,一旦安装了 Preload,你使用较为频繁的应用程序将可能加载的更快。
Windows开发环境:Windows 7 64bit、Windows 10 64bit
buffers 和 cache 都是内存中存放的数据,不同的是,buffers 存放的是准备写入磁盘的数据,而 cache 存放的是从磁盘中读取的数据
free命令用于显示系统内存使用情况,包括物理内存(Physical Memory)、虚拟内存(Swap Memory)、共享内存(Shared Memory)以及内核使用的缓冲(Buffers)与缓存(Cached)大小。在Linux系统监控的工具中,free命令是最经常使用的命令之一。
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
电脑组成:1电源 2主板 3CPU 4内存 5硬盘 6声卡 7显卡 8网卡 9光驱 电脑的系统的硬体单元: 输入单元,输出单元,算数逻辑单元,控制单元,记忆单元。 算数单元和控制单元合称《中央处理单元》 中央处理单元 (Center processing Unit CPU) 三大系统:windows ,Linux ,Unix 固态硬盘:非常贵,速度快。 连续读取速度:500MB/s(秒),连续写入速度:300MB/s(秒) 内存特点: 1断电数据丢失 2读写速度非常快 bit=(位) Byte=(字节) 8bit=1Byte 一字节(Byte)=255=2的八次方-1 255以下的都是以个字节(Byte) 字节(Byte)是计算机中最小的存储单位 bit是计算中能识别的最小的单位 1024Byte(字节)=1kByte(字节)=1kb 2的十次方=1024 (2**10=1024) 1024K Byte=1M Byte=1MB 100万字节=1MB 1024MB=1GB=10亿字节(Byte) 1024GB=1TB=1万亿字节(Byte) 硬盘的特点: 1数据断电不丢失 2可重复读写 3速度慢(相对于内存来讲) 300GB机械硬盘转速:7200,10000,15000 5400转写的话:(30---50MB/s(秒) CPU 14纳米(代表一个晶体管最小的) GHz(时钟频率代表一秒钟有多少次震荡) 每一次时钟周期理论上可以CPU执行一条指令 1Hz=1频率 1000Hz=1k Hz 1000kHz=1MHz=1000万Hz 1000MHz=1GBHz=10亿Hz 每秒运算十亿次 指令集分种:复杂指令集和简单指令集 extru(特殊功能) vimonly(漫游后对选中的区域执行操作) SUM(求数组元素和的函数) Mutiply(乘号)
要想理解单片机是如何运行程序的,首先需要了解单片机的组成。本文以80C51单片机为例,给大家讲一讲程序在单片机中是如何运行的。
Bootloader的启动过程可以分为单阶段、多阶段两种。通常多阶段的 Bootloader能提供更为复杂的功能以及更好的可移植性。从固态存储设备上启动的 Bootloader大多都是两阶段的启动过程。第一阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和可移植性。 一般而言,这两个阶段完成的功能可以如下分类:
原文链接:https://rumenz.com/rumenbiji/linux-buff-cache.html
原文 | https://segmentfault.com/a/1190000009713245
某月黑风高之夜,某打车平台上线了一大波(G+)优惠活动,众人纷纷下单。于是乎,该打车平台使用的智能提示服务扛不住直接趴窝了(如下图)。事后,负责智能提示服务开发和运维的有关部门开会后决定:必须对智能提示服务进行一次全面深入的性能摸底,立刻!现在!马上! 那么一大坨问题就迎面而来:对于智能提示这样的后台服务,性能测试过程中应该关心那些指标?这些指标代表什么含义?这些指标的通过标准是什么?下面将为您一一解答。 概述 不同人群关注的性能指标各有侧重。后台服务接口的调用者一般只关心吞吐量、响应时间等外部指标。
在实际的性能测试中,会遇到各种各样的问题,比如 TPS 压不上去等,导致这种现象的原因有很多,测试人员应配合开发人员进行分析,尽快找出瓶颈所在。
垃圾回收♻️(GC)是Go语言关键特性,帮助开发人员大大减轻心智负担。我们知道内存有栈和堆区之分,栈内存无需手动释放,但是堆内存需要我们手动释放。在Go语言中,GC会跟踪和释放不再使用的堆内存,每个Gopher都应该了解其工作原理,这非常有助于我们对程序进行优化。
数据库的操作越来越成为整个应用的性能瓶颈,这对于Web应用尤其明显。关于数据库的性能,这并不只是DBA需要关心的,而更是后端开发需要去关注的事情。
该文介绍了如何通过修改配置、开启ICAHE等方法来加快内核启动速度,并给出了具体的代码示例。
编译测试: 1.将写好的uboot复制到linux下面 2.make编译,然后将错误的地方修改,生成boot.bin (编译出错的解决方案:http://www.cnblogs.com/lifexy/
领取专属 10元无门槛券
手把手带您无忧上云