Linux性能 -- CPU -- 上下文切换
CPU 上下文 CPU 上下文 CPU 在运行任何任务前,必须的依赖环境 CPU 寄存器 CPU 内置的容量小、但速度极快的内存 程序计数器 存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置 CPU 上下文切换 切换过程 先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来 然后加载新任务的上下文到这些寄存器和程序计数器 最后再跳转到程序计数器所指的新位置,运行新任务 保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来 CPU特权等级 & 进程运行空间 & 系统调用 进程的运行空间分为内核空间和用户空间 内核空间(Ring 0) 具有最高权限,可以直接访问所有资源 用户空间(Ring 3) 只能访问受限资源,不能直接访问内存等硬件设备,必须通过系统调用陷入到内核中,才能访问这些特权资源 进程在用户空间运行时,被成为进程的用户态;而陷入内核空间的时候,被称为进程的内核态 从用户态到内核态的转变,需要通过系统调用来完成 系统调用的过程会发生 CPU 上下文的切换 一次系统调用,发生了两次 ...
Linux性能 -- CPU -- 平均负载
uptime1分钟、5分钟、15分钟 12$ uptime 07:40:47 up 24 min, 2 users, load average: 0.14, 0.14, 0.19 平均负载 单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系 所谓可运行状态的进程,是指正在使用CPU或者正在等待CPU的进程 也就是我们常用ps命令看到的,处于R状态(Running或Runnable)的进程 不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的 比如最常见的是等待硬件设备的I/O响应 当一个进程向磁盘读写数据时,为了保证数据的一致性 在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态 也就是我们在ps命令中看到的D状态(Uninterruptible Sleep,也称为Disk Sleep)的进程 不可中断状态实际上是系统对进程和硬件设备的一种保护机制 理想情况平均负载 = CPU个数 12$ grep 'model name'...
左耳听风 -- 性能设计
缓存 异步处理 数据库扩展 秒杀 边缘计算 参考资料左耳听风
左耳听风 -- 管理设计
分布式锁 配置中心 边车模式 Service Mash 网关模式 部署升级策略 参考资料左耳听风
左耳听风 -- 弹力设计
概述 隔离设计 异步通信设计 幂等性设计 服务状态 补偿事务 重试设计 熔断设计 限流设计 降级设计 总结 参考资料左耳听风
左耳听风 -- 分布式系统架构
冰与火 难点 技术栈 全栈监控 服务调度 流量和数据调度 PaaS平台的本质 经典资料 参考资料左耳听风
左耳听风 -- 技术基础
技术变现 技术领导力 Go + Docker 学习 + 职业 Leader 时间管理 故障处理 表象 + 本质 参考资料左耳听风
计算机组成 -- Disruptor
缓存行填充缓存行大小1234567$ sysctl -a | grep -E 'cacheline|cachesize'hw.cachesize: 17179869184 32768 262144 6291456 0 0 0 0 0 0hw.cachelinesize: 64hw.l1icachesize: 32768hw.l1dcachesize: 32768hw.l2cachesize: 262144hw.l3cachesize: 6291456 RingBufferPad1234abstract class RingBufferPad{ protected long p1, p2, p3, p4, p5, p6, p7;} 变量p1~p7本身没有实际意义,只能用于缓存行填充,为了尽可能地用上CPU Cache 访问CPU里的L1 Cache或者L2 Cache,访问延时是内存的1/15乃至1/100(内存的访问速度,是远远慢于CPU Cache的) 因此,为了追求极限性能,需要尽可能地从CPU Cache里面读取数据 C...
计算机组成 -- DMP
DMP系统 DMP(Data Management Platform,数据管理平台) DMP系统广泛应用在互联网的广告定向,个性化推荐 DMP系统会通过处理海量的互联网访问数据以及机器学习算法,给用户标注上各种各样的标签 然后在做个性化推荐和广告投放的时候,再利用这些标签,去做实际的广告排序、推荐等工作 对于外部使用DMP的系统或者用户来说,可以简单地把DMP看成一个Key-Value数据库 对Key-Value系统的预期,以广告系统为案例 低响应时间 一般的广告系统留给整个广告投放决策的时间大概是10ms 因此对于访问DMP系统获取用户数据,预期的响应时间都在1ms以内 高可用性 DMP系统常用于广告系统,如果DMP系统出问题,意味着在不可用的时间内,整个广告收入是没有的 因此,对于可用性的追求是没有上限的 高并发 如果每天要响应100亿次广告请求,QPS大概是12K 海量数据 如果有10亿个Key,每个用户有500个标签,标签有对应的分数 标签和分数都用4 Bytes的整数来表示,总共大概需要4TB的数据 低成本 广告系统的收入通常用CPM(Cost Per Mille,千次曝光...
计算机组成 -- DMA
背景 无论IO速度如何提升,比起CPU,还是太慢,SSD的IOPS可以达到2W,但CPU的主频有2GHz 对于IO操作,都是由CPU发出对应的指令,然后等待IO设备完成操作后返回,CPU有大量的时间都是在等待IO设备完成操作 在很多时候,CPU的等待是没有太多的实际意义的 对于IO设备的大量操作,其实都只是把内存里面的数据,传输到IO设备而已,此时CPU只是在傻等 当传输的数据量比较大的时候,如大文件复制,如果所有数据都要经过CPU,实在有点太浪费时间 因此发明了DMA技术,即直接内存访问(Direct Memory Access),来减少CPU等待的时间 协处理器 本质上,DMA技术就是在主板上一块独立的芯片 在进行内存和IO设备的数据传输的时候,不再通过CPU来传输数据 而直接通过DMA控制器(DMA Controller,DMAC),其实是一个协处理器(Co-Processor) DMAC最有价值的地方:当要传输的数据特别大,速度特别快,或者传输的数据特别小、速度特别慢的时候 用千兆网卡或者硬盘传输大量数据的时候,如果都用CPU来搬运的话,肯定忙不过来,可以选择DMAC 当数据传...













