自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凯凯王的技术生涯

想做架构师的小菜鸟

  • 博客(626)
  • 资源 (1)
  • 收藏
  • 关注

原创 技术学习导航

文章目录每天一道面试题RPC框架原理每天一道面试题RPC框架原理

2021-01-01 14:14:36 204 1

原创 组合模式详解

定义将对象组合成树形结构以表示部分-整体的层次结构,使客户端对单个对象喝组合对象保持一致的方式处理类型结构型适用场景希望客户端可以忽略组合对象与单个对象的差异时处理一个树形结构时优点清楚的定义分层次的复杂对象,表示对象的全部或者部分层次让客户端忽略了层次的差异,方便对整个层次结构进行控制简化客户端代码,符合开闭原则缺点限制类型时会较为复杂使设计变得更加抽象示例代码示例1示例2UML应用场景...

2021-06-21 08:17:43 469

原创 建造者模式

文章目录定义类型适用场景优点缺点示例代码UML应用场景定义将一个复杂对象的构建于它的表示分离,使得同样的构建过程可以创建不同的表示,用户只需要指定建造的类型就可以得到它们,建造过程的细节不需要知道类型创建型适用场景如果一个对象有非常复杂的内部结构 很多属性想把复杂对象的创建和使用分离优点封装性好,创建和使用分离扩展性好,建造类之间独立,一定程度上解耦缺点产生多余的Builder对象产品内部发生变化,建造者都要修改,成本较大示例代码UML应用场景...

2021-04-16 09:31:35 500

原创 抽象工厂

文章目录定义类型使用场景优点缺点示例代码UML应用场景ConnectionSqlSessionFactory定义提供一个创建一系列相关或相互依赖对象的接口无须指定具体的类类型创建型使用场景客户端不依赖产品类实例如何被创建,实现等细节强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码提供了一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现优点具体产品在应用层代码隔离,无须关心创建细节将一个系列的产品族统一到一起创建缺点规定了

2021-04-16 07:38:45 515

原创 工厂方法

文章目录定义类型适用场景优点缺点示例代码UML应用场景Collection和ArrayListURLStream定义定义一个创建对象的接口,但让实现这个接口的类来决定实现化哪个类,工厂方法让类的实例化推迟到了子类中进行类型创建型适用场景创建对象需要大量重复的代码客户端(应用层)不依赖于产品类实例如何被创建,实现等细节一个类通过其子类来指定创建哪个对象优点用户只需要关心所需产品对应的工厂,无需关心创建细节加入新产品符合开闭原则,提高可扩展性缺点类的个数容易过多,增加了复杂度

2021-04-14 08:55:05 172

原创 简单工厂模式

文章目录定义类型使用场景优点缺点示例代码UML类图定义一个工厂对象决定创建出哪一种产品类的实例类型创建性使用场景工厂类负责创建的对象比较少客户端只知道传入工厂类的参数,对于创建对象不关心优点只需要传入一个正常的参数,就可以获取你所需要的对象而无需知道其创建细节缺点工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则示例代码public abstract class Video { public abstract void produce();}

2021-04-13 21:55:34 153

原创 如何优化 NAT 性能?

网络延迟是最核心的网络性能指标。由于网络传输、网络包处理等各种因素的影响,网络延迟不可避免。但过大的网络延迟,会直接影响用户的体验。NAT原理NAT 技术可以重写 IP 数据包的源 IP 或者目的 IP,被普遍地用来解决公网 IP 地址短缺的问题。它的主要原理就是,网络中的多台主机,通过共享同一个公网 IP 地址,来访问外网资源。同时,由于 NAT 屏蔽了内网网络,自然也就为局域网中的机器提供了安全隔离。你既可以在支持网络地址转换的路由器(称为 NAT 网关)中配置 NAT,也可以在 Linux 服务

2021-03-25 08:42:04 2397

原创 网络请求延迟变大,该怎么办

文章目录网络延迟案例准备案例分析总结除了 DDoS 会带来网络延迟增大外,也有不少其他原因导致的网络延迟,比如网络传输慢,导致延迟;Linux 内核协议栈报文处理慢,导致延迟;应用程序数据处理慢,导致延迟等等。网络延迟提到网络延迟时,你可能轻松想起它的含义——网络数据传输所用的时间。这个时间可能是单向的,指从源地址发送到目的地址的单程时间;也可能是双向的,即从源地址发送到目的地址,然后又从目的地址发回响应,这个往返全程所用的时间。通常,我们更常用的是双向的往返通信延迟,比如 pin

2021-03-12 10:01:01 1954

原创 怎么缓解 DDoS 攻击带来的性能下降问题?

文章目录DDoS 简介案例准备案例分析DDoS 到底该怎么防御总结DDoS 简介DDoS 的前身是 DoS(Denail of Service),即拒绝服务攻击,指利用大量的合理请求,来占用过多的目标资源,从而使目标服务无法响应正常请求。DDoS(Distributed Denial of Service) 则是在 DoS 的基础上,采用了分布式架构,利用多台主机同时攻击目标主机。这样,即使目标服务部署了网络防御设备,面对大量网络请求时,还是无力应对。比如,目前已知的最大流量攻击,正是去年 Gith

2021-03-12 09:16:00 351

原创 怎么使用 tcpdump 和 Wireshark 分析网络流量?

文章目录案例准备再探 pingtcpdumpWireshark总结ping是一个最常用的测试服务延迟的工具,很多情况下ping 可以帮我们定位出延迟问题,不过有时候, ping 本身也会出现意想不到的问题。这时,就需要我们抓取 ping 命令执行时收发的网络包,然后分析这些网络包,进而找出问题根源。tcpdump 和 Wireshark 就是最常用的网络抓包和分析工具,更是分析网络性能必不可少的利器。tcpdump 仅支持命令行格式使用,常用在服务器中抓取和分析网络包。Wireshark 除了可以

2021-03-12 08:55:45 795

原创 怎么使用 tcpdump 和 Wireshark 分析网络流量?

文章目录案例准备再探 pingtcpdumpWireshark小结上一节,我们学习了 DNS 性能问题的分析和优化方法。简单回顾一下,DNS 可以提供域名和 IP 地址的映射关系,也是一种常用的全局负载均衡(GSLB)实现方法。通常,需要暴露到公网的服务,都会绑定一个域名,既方便了人们记忆,也避免了后台服务 IP 地址的变更影响到用户。不过要注意,DNS 解析受到各种网络状况的影响,性能可能不稳定。比如公网延迟增大,缓存过期导致要重新去上游服务器请求,或者流量高峰时 DNS 服务器性能不足等,都会导致

2021-03-11 08:53:08 503

原创 DNS 解析时快时慢,我该怎么办?

文章目录域名与 DNS 解析案例准备案例分析案例 1:DNS 解析失败案例 2:DNS 解析不稳定总结上一节,我带你一起学习了网络性能的评估方法。简单回顾一下,Linux 网络基于 TCP/IP 协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同。在应用层,我们关注的是应用程序的并发连接数、每秒请求数、处理延迟、错误数等,可以使用 wrk、JMeter 等工具,模拟用户的负载,得到想要的测试结果。而在传输层,我们关注的是 TCP、UDP 等传输层协议的工作状况,比如 TCP 连接数、 TC

2021-03-11 08:41:59 8448

原创 怎么评估系统的网络性能?

文章目录性能指标回顾网络基准测试各协议层的性能测试转发性能TCP/UDP 性能HTTP性能应用负载性能总结I/O 模型的优化,是解决 C10K 问题的最佳良方。Linux 2.6 中引入的 epoll,完美解决了 C10K 的问题,并一直沿用至今。今天的很多高性能网络方案,仍都基于 epoll。从 C10K 到 C100K,我们只需要增加系统的物理资源,就可以满足要求;但从 C100K 到 C1000K ,光增加物理资源就不够了。要对系统的软硬件进行统一优化,从硬件的中断处理,到网络协议栈的文件描述符

2021-03-11 08:27:48 533

原创 C10K 和 C1000K

文章目录C10KI/O 模型优化工作模型优化C1000KC10M总结C10K 和 C1000K 的首字母 C 是 Client 的缩写。C10K 就是单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 也就是单机支持处理 100 万个请求(并发连接 100 万)的问题。C10KC10K 问题最早由 Dan Kegel 在 1999 年提出。那时的服务器还只是 32 位系统,运行着 Linux 2.2 版本(后来又升级到了 2.4 和 2.6,而 2.6 才支持 x86_64),只配

2021-03-10 10:31:42 1048

原创 Linux 网络性能指标

文章目录性能指标网络配置套接字信息协议栈统计信息网络吞吐和 PPS连通性和延时性能指标通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。吞吐量:表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。延时:表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可

2021-03-10 09:45:45 605

原创 Linux 网络详解

文章目录网络模型Linux 网络栈Linux 网络收发流程网络包的接收流程网络包的发送流程小结网络是一种把不同计算机或网络设备连接到一起的技术,它本质上是一种进程间通信方式,特别是跨系统的进程间通信,必须要通过网络才能进行。随着高并发、分布式、云计算、微服务等技术的普及,网络的性能也变得越来越重要。网络模型为了解决网络互联中异构设备的兼容性问题,并解耦复杂的网络包处理流程,OSI 模型把网络互联的框架分为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层等七层,每个层负责不同的功能。其中,

2021-03-10 08:36:46 2708

原创 阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系

文章目录问题 1:阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系问题 2:“文件系统”课后思考问题 3:“磁盘 I/O 延迟”课后思考问题 4:“MySQL 案例”课后思考问题 1:阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系在文件系统的工作原理篇中,我曾经介绍了阻塞、非阻塞 I/O 以及同步、异步 I/O 的含义,这里我们再简单回顾一下。首先我们来看阻塞和非阻塞 I/O。根据应用程序是否阻塞自身运行,可以把 I/O 分为阻塞 I/O 和非阻塞 I/O。所谓阻塞 I/O,是指

2021-03-09 09:03:40 395

原创 套路篇:磁盘 I/O 性能优化的几个思路

文章目录I/O 基准测试I/O 性能优化应用程序优化文件系统优化磁盘优化上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O 操作

2021-03-09 08:55:52 842

原创 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?

文章目录性能指标文件系统 I/O 性能指标磁盘 I/O 性能指标性能工具性能指标和工具的联系如何迅速分析 I/O 的性能瓶颈总结性能指标老规矩,我们先来回顾一下,描述 I/O 的性能指标有哪些?你可以先回想一下文件系统和磁盘 I/O 的原理,结合下面这张 Linux 系统的 I/O 栈图,凭着记忆和理解自己写一写。或者,你也可以打开前面的文章,挨个复习总结一下。学了这么久的 I/O 性能知识,一说起 I/O 指标,你应该首先会想到分类描述。我们要区分开文件系统和磁盘,分别用不同指标来描述它们的性能。

2021-03-09 08:44:19 314

原创 Redis响应严重延迟,如何解决

文章目录案例准备案例分析利用 Redis 作为缓存的案例。这同样是一个基于 Python Flask 的应用程序,它提供了一个 查询缓存的接口,但接口的响应时间比较长,并不能满足线上系统的要求。案例准备本次案例还是基于 Ubuntu 18.04,同样适用于其他的 Linux 系统。我使用的案例环境如下所示:机器配置:2 CPU,8GB 内存预先安装 docker、sysstat 、git、make 等工具,如 apt install docker.io sysstat今天的案例由 Pytho

2021-03-09 08:32:21 1679 1

原创 一个SQL查询要15s,这是怎么回事

文章目录案例准备案例分析案例思考总结数据库的案例:这是一个基于 Python Flask 的商品搜索应用,商品信息存在 MySQL 中。这个应用可以通过 MySQL 接口,根据客户端提供的商品名称,去数据库表中查询商品信息。案例准备本次案例还是基于 Ubuntu 18.04,同样适用于其他的 Linux 系统。我使用的案例环境如下所示:机器配置:2 CPU,8GB 内存预先安装 docker、sysstat 、git、make 等工具,如 apt install docker.io syssta

2021-03-08 09:02:10 920

原创 为什么磁盘的IO延迟很高

文章目录案例准备案例分析总结案例准备本次案例还是基于 Ubuntu 18.04,同样适用于其他的 Linux 系统。我使用的案例环境如下所示:机器配置:2 CPU,8GB 内存预先安装 docker、sysstat 等工具,如 apt install docker.io sysstat为了方便你运行今天的案例,我把它打包成了一个 Docker 镜像。这样,你就只需要运行 Docker 命令就可以启动它。今天的案例需要两台虚拟机,其中一台是案例分析的目标机器,运行 Flask 应用,它的 IP 地

2021-03-05 08:52:59 4470 1

原创 如何找出狂打日志的内鬼

文章目录基本概念解决思路基本概念文件系统、通用块层以及设备层,构成了 Linux 的存储 I/O 栈。文件系统:是对存储设备上的文件进行组织管理的一种机制。为了支持各类不同的文件系统,Linux 在各种文件系统上,抽象了一层虚拟文件系统 VFS它定义了一组所有文件系统都支持的数据结构和标准接口。这样,应用程序和内核中的其他子系统,就只需要跟 VFS 提供的统一接口进行交互。在文件系统的下层,为了支持各种不同类型的存储设备,Linux 又在各种存储设备的基础上,抽象了一个通用块层。

2021-03-04 09:51:43 182 1

原创 Linux 磁盘 I/O是怎么工作的

文章目录磁盘介质分类随机 I/O 都要比连续 I/O读写单位接口分类使用分类通用块层I/O 栈总结磁盘磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。介质分类机械磁盘也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。机械磁盘主要由盘片和读写磁头组成,数据就存储在盘片的环状磁道中。在读写数据前,需要移动读写磁头,定位到数据所在的磁道,然后才能访问数据。显然,如果 I/O 请求刚好连续,那就不需要磁道寻址,自然可以获得最佳性能。

2021-02-24 08:36:46 227

原创 Linux文件系统是怎么工作的

文章目录索引节点和目录项虚拟文件系统文件系统 I/O性能观测容量缓存文件系统和磁盘的 I/O 性能,磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。今天,我就带你先来看看,Linux 文件系统的工作原理索引节点和目录项文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。在 Linux 中一切皆文件,不仅普通的文件和目录,就连块设备、套接字、管道等,也都要通过统一的文件系统来管理。为了方便管理,Linux

2021-02-24 08:25:07 198

原创 文件系统:项目成果要归档,就需要使用档案库

文章目录文件系统的功能规划文件系统的相关命令行文件系统的相关系统调用总结文件系统的功能规划最常用的外部存储是硬盘,数据是以文件的形式保存在硬盘上的。为了管理这些文件,我们在规划文件系统的时候,需要考虑到以下几点。第一点,文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。这就像图书馆里,我们会给设置一排排书架,然后再把书架分成一个个小格子,有的项目存放的资料非常多,一个格子放不下,就需要多个格子来进行存放。我们把这个区域称为存放原始资料的仓库区。第二点,文件系统中也要有索引区,用来方便查

2021-02-23 09:38:03 340

原创 如何快速找到系统内存问题

文章目录内存性能指标系统内存指标进程内存指标SWAP指标内存性能工具性能指标和工具的联系如何迅速分析内存的性能瓶颈总结内存性能指标内存性能指标包含系统内存使用情况和进程内存使用情况系统内存指标已用内存和剩余内存:就是已经使用和还未使用的内存。共享内存:通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs 其实也是一种特殊的缓存。可用内存:新进程可以使用的最大内存,它包括剩余内存和可回收缓存。缓存包括两部分:一部分是磁盘读取文件的页缓存,用来缓存从磁盘读取的数据

2021-02-23 08:45:12 158

原创 系统Swap为什么变高了

文章目录Swap原理NUMA与Swapswappiness总结内存回收,也就是系统释放掉可以回收的内存,比如缓存和和缓冲区,在内容管理中,叫做文件页。大部分文件页可以直接回收,有需要再从磁盘读取就可以了被应用修改过,暂时还没有写回磁盘的数据(脏页),需要些写入磁盘,才能内存释放,脏页的写入有两种方式可以在应用程序中,通过系统调用fsync,把脏页同步到磁盘中可以交给系统,由内核线程pbflush负责这些脏页的刷新通过内存映射获取的文件映射页,也是一种常见的文件页。它也可以被释放掉,下次

2021-02-10 09:38:54 245

原创 内存泄漏了,该如何定位

文章目录基本概念内存的分配与回收案例小结基本概念普通进程能看到的是内核提供的虚拟内存,虚拟内存通过页表,将虚拟内存映射为物理内存进程通过malloc() 申请虚拟内存后,并不会立即为其分配物理内存,首次访问时,才通过缺页异常陷入中断中分配内存为了协调CPU与磁盘间的性能差异,Linux还会使用Cache和Buffer,分别把文件和磁盘读写的数据缓存到内存中对应用程序来说,动态内存的分配和回收,是既核心又复杂的一个逻辑功能模块,管理内存的过程中,也容易发生各种各样的事故没正确回收分配的内存,导

2021-02-09 08:51:00 1104

原创 系统中出现大量不可中断进程和僵尸进程怎么办?

文章目录进程状态案例分析总结进程状态案例分析总结通过ps或者top可以查看进程的状态,这些进程的状态包括运行®、空闲(I)、不可中断睡眠(D)、可中断睡眠状态(S)、僵尸(Z)、以及暂停(T)。不可中断状态:表示正在跟硬件交互,为了保持一致性,系统不允许其他进程或中断打断这个进程,进程长时间处于不可中断状态,通常表示系统有IO问题僵尸进程:表示进程已经退出,但它的父进程还没有回收子进程占用的资源,短暂的僵尸状态不必理会,如果长时间处于僵尸状态,有可能应用程序没有正常处理子进程的退出。..

2021-02-08 09:43:22 524

原创 如何利用系统缓存优化程序的运行效率

Buffer和Cache的设计目的是为了提升系统的IO性能,利用内存,充当起磁盘和快速CPU之间的桥梁,加快IO的访问速度。Buffer和Cache分别缓存的是对磁盘和文件系统的读写数据从写的角度来看,不仅可以优化磁盘和文件的写入,对应用程序也有好处,应用程序可以在数据真正落盘前,就返回去做其他工作从读的角度来看,不仅可以提高哪些频繁访问数据的读取速度,也降低了IO对磁盘的压力如何利用Buffer和Cache来优化IO性能,提高程序的运行效率呢?缓存命中率直接通过缓存获取数据的请求次数占所有

2021-02-08 09:14:17 378

原创 Linux内存管理基本介绍

内存映射内存容量8GB,指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访问内存时,该怎么办呢?Linux 内核给每个进程都提供了一个独立的且连续的虚拟地址空间,这样,进程就可以很方便地访问虚拟内存。虚拟地址空间的内部又被分为内核空间和用户空间,不同字长(也就是单个 CPU 指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。32 位和 64 位系统它们的虚拟地址空间,如下所示:32 位系统的内核空

2021-02-04 09:01:59 211

原创 穿越功耗墙,从哪些方面提升性能?

文章目录功耗:CPU的人体极限并行优化,阿姆达尔定律总结CPU性能中,程序的CPU执行时间公式如下程序的 CPU 执行时间 = 指令数 × CPI × Clock Cycle Time提升计算机的性能,从指令数、CPI以及CPU主频入手。功耗:CPU的人体极限奔腾 4 的 CPU 主频从来没有达到过 10GHz,最终它的主频上限定格在 3.8GHz,是因为它的功耗问题一个 3.8GHz 的奔腾 4 处理器,满载功率是 130 瓦,CPU 安在手机里面,不考虑屏幕内存之类的耗电,这个 CPU 满

2021-02-02 08:42:25 408

原创 理解CPU Cache

文章目录为什么需要高速缓存Cache的数据结构和读取过程直接映射Cache示例代码int[] arr = new int[64 * 1024 * 1024]; // 循环 1for (int i = 0; i < arr.length; i++) arr[i] *= 3; // 循环 2for (int i = 0; i < arr.length; i += 16) arr[i] *= 3循环1执行了50ms,循环2执行了46ms,两个循环差值在15%之内。这是因为C

2021-01-27 09:00:35 578

原创 局部性原理

平常在服务端软件开发中,通常会把数据存储在数据库里,服务端遇到的性能瓶颈往往发生在访问数据库的时候,在数据库前通过Redis加数据缓存是常见的性能优化方式。如何判定添加缓存的策略一定是有效的呢?理解局部性原理不同的存储器之间,访问速度、价格和容量都有几十乃至上千倍的差异。如何有效利用局部性原理总结计算机存储器层次结构中最重要的一个优化思路,就是局部性原理。对于数据的访问会存在两个局部性时间局限性:最近访问过的数据还会被反复访问空间局部性:最近访问过的数据附近的数据很快会被访问到局部

2021-01-25 09:08:39 531

原创 机械硬盘

文章目录拆解机械硬盘盘面磁头悬臂拆解机械硬盘硬盘的构造里有接口、对应的控制电路板、以及实际的IO设备(机械硬盘)。机械硬盘由盘面、磁头、和悬臂三个部分组成。盘面盘面是我们实际存储数据的盘片,盘面本身通常是铝、玻璃、陶瓷这样的材质做的光滑盘片,盘面上有一层磁性的涂层,我们的数据就存储在这个磁性的涂层上。盘面中间有一个受电机控制的转轴,这个转轴会控制我们的盘面去旋转。硬盘的转速:指的是盘面中间电机控制的转轴的旋转次数,英文单位交RPM(每分钟的转圈数Rotations Per Minute)。我们

2021-01-20 09:02:03 1730

原创 理解IO_WAIT:IO性能到底是怎么回事

文章目录IO性能、顺序访问和随机访问数据传输率响应时间随机读写如何定位IO_WAITIO瓶颈与指标模拟IO操作总结用内存当缓存,存储空间是不够用的,大部分时间,请求还是要打到硬盘上,所以来看看IO性能的事情。IO性能、顺序访问和随机访问硬盘的两个重要指标:响应时间和数据传输率。数据传输率硬盘分类HDD硬盘,即机械硬盘,用的是SATA 3.0的接口。SSD硬盘,即固态硬盘,有SATA3.0、PCI Express两种接口SATA 3.0 的接口,带宽是6Gb/s,b是比特,相当于768MB

2021-01-19 09:03:47 1563

原创 输入输出设备

接口和设备:经典的适配器模式CPU是如何控制IO设备的以打印机为例,分析CPU如何控制IO设备数据寄存器(Data Register):CPU向IO设备写入需要传输的数据,比如要打印”wangkai“,我们先要发送一个”w“给到对应的IO设备命令寄存器(Command Register ): CPU发送一个命令,告诉打印机,要进行打印工作,打印机里的控制电路会做两件事情设置我们状态寄存器里的状态,设置为not-ready。实际操作打印机进行打印。状态寄存器(Status Regist

2021-01-18 09:03:25 948

原创 内核态内存映射:如何找到正确的会议室

文章目录内核页表vmalloc和kmap_auomic原理内核态缺页异常总结内核态的内存映射机制,主要包含以下几个部分:内核态内存映射函数vmalloc、kmap_atomic是如何工作的内核态页面是放在哪里的,如何工作的?swapper_pg_dir是怎么回事出现了内核态缺页异常应该怎么办内核页表和用户态页表不同,在系统初始化的时候,就要创建内核页表了。从内核页表的根swapper_pg_dir开始找线索,在arch/x86/include/asm/pgtable_64.h 中就能找到它

2021-01-16 16:34:56 245

原创 DMA:为什么Kafka这么快

文章目录理解DMA,一个协处理器Kafka的实现原理总结计算机产业中一直在不断的提升IO设备的速度。HDD硬盘->SATA接口的SSD硬盘->PCI Express接口的SSD硬盘->傲腾IO速度的提升相比CPU总是太慢SSD的磁盘IOPS可以到2万、4万CPU的主频有2GHZ以上,意味着每秒会有20亿次的操作。如果对于IO的操作,都是由CPU发出指令,等待IO设备完成操作之后返回,那CPU有大量的时间其实都是在等待IO设备完成操作。这个CPU的等待很多时候是无意义的

2021-01-16 15:29:31 546

QConf 架构和实现原理

QConf 架构和实现原理

2019-03-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除