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' /p ...
左耳听风 -- 性能设计
缓存
异步处理
数据库扩展
秒杀
边缘计算
参考资料左耳听风
左耳听风 -- 管理设计
分布式锁
配置中心
边车模式
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里面读取数据
CPU ...
计算机组成 -- 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
当数据传输很慢 ...
计算机组成 -- SSD
对比
访问类型
机械硬盘(HDD)
固态硬盘(SSD)
随机读
慢
非常快
随机写
慢
快
顺序写
快
非常快
耐用性(重复擦写)
非常好
差
读写原理
CPU Cache用的SRAM是用一个电容来存放一个比特的数据
对于SSD硬盘,由一个电容加上一个电压计组合在一起,就可以记录一个或多个比特
分类
SLC:Single-Level Cell
MLC:Multi-Level Cell
TLC:Triple-Level Cell
QLC:Quad-Level Cell
QLC
想要表示15个不同的电压,充电和读取的时候,对精度的要求就会更高,这会导致充电和读取的时候更慢
QLC的SSD的读写速度要比SLC慢上好几倍
PE擦写问题
控制电路
常用的是SATA或者PCI Express接口,里面有一个很重要的模块:FTL(Flash-Translation Layer),即内存转换层
FTL是SSD的核心模块,SSD性能的好坏很大程度上取决于FTL的算法好不好
实际的IO设备
新的大容量SSD都是3D封装的,即由很多裸片(Die)叠在一起(跟HDD有点类似)
一个 ...