有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.
tc(Traffic Control) 是linux系统中常用的来控制传输速率、模拟网络延时丢包等场景的工具,tc命令有三个主要的概念,是qdisc、class和filter,qdisc又分为classless qdisc和classful qdisc,在控制传输速度的方面大致有两种用法
写入速度使用命令:time dd if=/dev/zero of=/tmp/test.dat bs=1G count=1
NVMe SSD具有高性能、低时延等优点,是目前存储行业的研究热点之一,但在光鲜的性能下也同样存在一些没有广为人知的问题,而这些问题其实对于一个生产系统而言至关重要,例如:
io_uring是Linux内核在v5.1引入的一套异步IO接口,随着其迅速发展,现在的io_uring已经远远超过了纯IO的范畴。从Linux v5.3版本开始,io_uring陆续添加了网络编程相关的API,对用户提供sendmsg、recvmsg、accept、connect等接口的异步支持,将io_uring的生态范围扩大到了网络领域。
1、登录Terminal,执行:cat /proc/cpuinfo,就会显示出主机的CPU详细参数,如内核、频率、型号等等,以下是我Linux 系统主机的CPU:
要了解ChaosBlade是什么,我们需要先介绍下什么是混沌工程。顾名思义,混沌工程是一门对系统进行实验的学科,旨在了解系统对应生产环境的各种混乱状况的能力。我们都希望系统具备可靠性,但影响可靠性的因素有很多,混沌工程能找到证据,指明哪些异常不可回避的状况下系统的应变情况。它的唯一目标就是证明系统存在缺陷。通过开展混沌工程方面的科学实验,可以测试系统是否存在缺陷,了解系统在混乱的类生产环境条件下如何表现。
Trait 工作组的目标是完善 Chalk ,以便将其最终用于 rustc 中解决 trait的各种问题。看上去,工作组的一个Sprint周期是6周左右。
某月黑风高之夜,某打车平台上线了一大波(G+)优惠活动,众人纷纷下单。于是乎,该打车平台使用的智能提示服务扛不住直接趴窝了(如下图)。事后,负责智能提示服务开发和运维的有关部门开会后决定:必须对智能提示服务进行一次全面深入的性能摸底,立刻!现在!马上! 那么一大坨问题就迎面而来:对于智能提示这样的后台服务,性能测试过程中应该关心那些指标?这些指标代表什么含义?这些指标的通过标准是什么?下面将为您一一解答。 概述 不同人群关注的性能指标各有侧重。后台服务接口的调用者一般只关心吞吐量、响应时间等外部指标。
导语 | 本文介绍了部分高性能网络方案,包括RDMA、HARP、io_uring等。从技术原理、落地可行性等方面,简要地做出分析,希望能对此方面感兴趣的开发者提供一些经验和帮助。 一、背景 业务中经常会有这样的场景: 随着网卡速率的提升(10G/25G/100G),以及部分业务对低延迟的极致追求(1ms/50us),目前的内核协议栈由于协议复杂、流程复杂、设计陈旧等因素,已经逐渐成为业务瓶颈。 业界已经有部分RDMA、DPDK的实践,但是对于大多数开发者而言,依然比较陌生。 那么这些方案各自的场景究竟怎样?
本文以 2 个新增 Redis 原子事件为例,帮助刚接触 ChaosBlade 的社区同学快速入门开源贡献。
Minio是一个在Apache Licence 2.0下发布的对象存储服务器。官网:https://minio.io。它与Amazon S3云存储服务兼容。Minio最适合存储非结构化数据,如照片、视
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。
合成测试程序根据统计的真实负载发生规律,如请求的读写比例,大小,频率和分布等信息。建立响应的io存取模型。在测试时产生符合存取模型的io请求序列。发送给存储系统。这类程序包括 IOMeter,IOZone 和 Bonnie++。
最近,烦心事有点多,博客也像是进入了便秘期。虽然还远远不到说放弃的地步,但总有一种挤不出牙膏的郁闷感。很怀念前几个月的冲劲和激情,一天都能存好几篇优质草稿。 看来,张戈博客是首次进入瓶颈阶段了!没办法
作为目前云计算领域活跃度最高的项目——Kubernetes在其GitHub上已经提供了如何编译Kubernetes的方法,README中的第一句话是:
SPAdes 是由俄罗斯科学院 St. Petersburg Academic University 与美国科学家合作开发的主要应用于小型基因组如细菌,真菌等基因组测序数据的拼接软件。目前的最新版本 v3.6.2 可以支持常见的 illumina miseq/hiseq 和 ion torrent 测序数据,对单分子测序平台的 pacbio 和 nanopore 的测序数据也能进行拼装,还能进行混合数据的拼装。在 GAGE-B 的测拼里,在 Miseq 平台上的结果获得了最好的评价。
在《研发工程师玩转Kubernetes——使用Node特性定向调度Pod》中,我们提到requiredDuringSchedulingIgnoredDuringExecution只有在规则被满足的时候才能执行调度。本节我们将测试几种边界情况,看看Kubernetes的行为。
新购买VPS云服务器后常用VPS测试脚本代码:跑分看看你的VPS综合性能。综合测试VPS硬件信息、CPU,核cores,CPU性能跑分,内存,硬盘大小,硬盘I/O speed、speedtest,国内国外下载速度Download Speed和网络延迟,Trace去程回程路由,一键开启BBR等等的测试脚本。测试完之后大家就会对自己的VPS小鸡有个底呢,知道是个什么样的货色。 测试脚本用到的软件:Xshell安装使用教程
Linux系统中的load average是SRE工程师经常关注的指标,也是SRE工程师在面试时候经常会被问到的问题,大家用它来判断CPU的工作负载,一般这个值如果是CPU核心数的多倍时,我们就认为CPU负载很高,需要处理,这样的认识对吗?
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。 本文档主要是结合Linux 大牛,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试的工具展开说明。 背景知识:具备背景知识是分析性能问题时需要了解的。比如硬件 cache;再比如操作系统
本文介绍了如何通过Linux内核和硬件平台驱动程序实现IO复用,并使用应用层程序对IO进行操作。首先介绍了Linux内核的IO模型和硬件平台,然后详细阐述了驱动程序如何实现IO复用,接着介绍了应用层程序如何调用驱动程序来实现IO操作。最后通过总结和展望对全文内容进行了梳理和概括。
George Zhao,目前任职华为在美国的研发公司 Futurewei Technologies,主要从事网络开源与生态发展。曾经担任过 OpenDaylight 董事,技术指导委员会成员,社区经理和版本经理,目前是DPDK 董事会董事 和FD.io 技术指导委员会成员。
二、汽车传感器测试套件提供30M/ch高速采集通道,以太网和串行接口,采用研华新世代强固型工业电脑MIC-3100。
本文由马哥教育面授班23期学员推荐,转载自恒生研究院,作者为董西孝,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Greg
有时候我们在看服务器的时候不单单看它的参数,什么几核几G啊,还要看网络,IO等等信息,那么linux服务器最简单的就是通过一些检测脚本来实现了 。下面就推荐几个测试教程,记得收藏!
获取到int类型的gpio口后,就可以使用linux/gpio.h里的gpio口操作函数:
Krew 是一个由 Kubernetes SIG CLI 社区维护的 kubectl 命令行工具的插件管理器。类似 红帽的YUM, 开发角度理解,类似 Nodejs 的 npm。
在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况,以便性能分析优化。而监控CPU的性能一般包括以下3点:运行队列、CPU使用率和上下文切换。
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 选项 -a:显示活动内页; -f:显示启动后创建的进程总数; -m:显示slab信息; -n:头信息仅显示一次; -s:以表格方式显示事件计数器和内存状态; -d:报告磁盘状态; -p:显示指定的硬盘分区状态; -S:输出信息的单位。 vmstat 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0 0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数 r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。 b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。 swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。 free 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。 buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。) si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。 so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。 bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒 bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。 in 每秒CPU的中断次数,包括时间中断 cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源
在 Rainbond 集群中,每个团队对应于底层 Kubernetes 的一个 Namespace ,由于之前使用的底层网络无法进行 Namespace 级别的网络管理,所以在 Rainbond 同一集群下的不同团队间,所以组件可以自由的进行互相访问,用户无法对此做出任何限制,这也导致了底层网络的安全隐患一直存在。现在由 cilium 提供网络服务的 Kubernetes 集群可以很好的解决这一问题,用户可以根据自己的需求,制定针对每个团队、每个组件的网络策略,加强底层网络管理,实现网络层的安全把控。
先讲一个作者大约5-6年前我在某当时很火的一个应用分发创业公司的面试小插曲,该公司安排了一个刚工作1年多的一个同学来面我,聊到我们项目中的配置文件里写的一个开关,这位同学就跳出来说,你这个读文件啦,每个用户请求来了还得多一次的磁盘IO,性能肯定差。借由这个故事其实我发现了一个问题,虽然我们中的大部分人都是计算机科班出身,代码也写的很遛。但是在一些看似司空见惯的问题上,我们中的绝大多数人并没有真正理解,或者理解的不够透彻。
通常在获得webshell之后,如果是linux的服务器,一般会返回一个shell来对linux服务器做进一步的渗透,如:溢出提权、信息收集等。下面就说说linux自带的程序来反弹shell的姿势。
#命令如下: 写:time dd if=/dev/zero of=test.dbf bs=8k count=100000 读:dd if=test.dbf bs=8k count=100000 of=/dev/null #表示 每次写入/读取8k的数据,执行100000次。
※这类脚本是综合测试VPS基础信息、硬盘IO、带宽和网络延迟等项目的一键式脚本,主要有以下几个
VPS综合性能测试!包含VPS硬件信息测试、VPS网络速度测试、VPS回程路由。整合脚本!
vmstat 命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写情况。
对于测试人员,经常使用 Jmeter 或 Postman 进行接口测试与调试,其实市面上还有很多接口测试工具,本篇将介绍一个简单但功能强大的命令行 HTTP 和 API 测试客户端-HTTPie,适用于 API 时代,方便对 API、HTTP服务器和 web 服务进行测试和调试。
找到问题跟原所在,默认的maxPods: 110,K8S默认一个节点上的pod调度数是110,当前有限制pod数的需求。 vim /var/lib/kubelet/config.yaml
目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。
今天介绍两个重要的工具:stress和stress-ng,用于Linux系统下进行压力测试:
java作为第一大编程语言,可谓源远流长,一代又一代的java程序员前仆后继走在java学习的路上。java程序员的学习之路在2020年又有什么变化呢?
Linux 有很多平台,有没有办法只构建一次就能构建出所有的平台镜像?答案是有的,下面介绍的工具刚好能解决这个问题。
是否使用 direct io,测试过程不使用OS 自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面在后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电,缓存里的数据就没有了。所以有一种模式叫做direct io,跳过缓存,直接读写SSD。
几年以前,我被派去厦门上门去分析一个用户的手机卡顿问题,该用户的手机经常莫名无响应,刷机,恢复出厂都没有用,经过一通分析,原来该用户从熟人店里买到了一张盗版的SD卡(这年头坑的就是朋友),该SD卡读写速度很慢,顺序读写只有20MB/s。那为什么SD卡的读写性能对手机性能影响那么大?当时我的知识水平,只能从对比测试中发现这个问题,然后更换SD卡解决了这个问题,但是无法从原理上解释这种现象。经过那么多年的学习积累,我现在终于可以解释这个问题。
领取专属 10元无门槛券
手把手带您无忧上云