软件技术人员需要对数字的敏感性
长假过完了,脑袋空转时间过长,严重不利于智商发育,所以写了这篇文章烧烧脑。本文通篇充斥了各种数字,图表,图画,坚持不住的允许半途而废,想脑洞开窍的还是要坚持,多培养对相关领域数字的敏感性。
为什么要看数字?
程序员每天要写代码,得益于摩尔定律,80%的场景是不需要关注自己写的程序的性能的,但现在互联网行业的IT开发人员越来越多,经常会有人遇到高并发情况下的性能问题,这些问题的根源有相当一部分是软件开发人员太“软”,把计算机系的基础课《计算机组成原理》知识还给老师了,对硬件知识掌握不够导致的。有些代码段需要有一些硬件知识的背景才能写好,所以这些数字就是为了磨练磨练这个敏感度。
中国单机时代(1981-1994)的程序员是幸福的,那时的程序员只要关注机器硬件的性能指标就行了,来优化自己的程序;但其实那代程序员也是不幸福的,那时的286内存少的可怜,我已经不记得我的那台286电脑的内存是多少了,但这个CPU的理论最大支持内存就是16MB。以当时的条件,家里那台机器配的内存肯定达不到最大值,保守估计有4MB就不错了,这个道理就跟现在的消费级的i5理论最大能配32GB,一般普通人4G就够了,普通游戏玩家或码农一般来个8G,有追求的骨灰级玩家或码农会来个16G,没人能达到主板支持的上限。
CPU缓存类:
本文假定读者已经了解现代计算机系统硬件方面的相关知识,对于一些计算机组成原理的常识不再做累述(可能稍微介绍下)。现代CPU缓存简单示意图:
上图为4核CPU,多核CPU的缓存设计大概是这样,L1与L2为每个核的内部cache,L3为几个核的共享cache。越靠近CPU的速度越快,成本越高,所以厂商的用料(容量)越小。
这是用CPU-Z看到的民用级CPU的缓存参数: L1 cache 4*128K=512KB, L2 cache 1M,L3 cache 6MB。
操作 |大约时间 |时钟周期
CPU访问寄存器 |秒杀 |1 cycle
CPU访问L1 Cache |0.5 ns |~3-4 cycles
CPU分支预测失败 |5 ns |
CPU访问L2 Cache |7 ns |~10-20 cycles
CPU访问L3 Cache |~15 ns |~40-45 cycles
Mutex加锁/解锁 |100 ns |
CPU内存访问 |~60-120ns |~120-240 cycles
千兆网络发送1MB数据 |10 ms |
从内存顺序读取1MB数据 |0.25 ms |
机房内网络来回 |0.5 ms |
异地机房之间网络来回 |30~100 ms |
SATA磁盘寻道 |10 ms |
从SATA磁盘顺序读取1MB数据|20 ms |
固态盘SSD访问延迟 |0.1~0.2 ms|
数据中心数字常识:
大家知道互联网对服务器的需求特别大,美国很多大公司已经不满足于传统IDC提供的空间和运营成本,直接自建,facebook更是发起了open compute计划,为互联网行业的节能服务器和数据中心制定标准,国内厂商浪潮看到这个市场并参与进来开发了smart rack产品,也就是百度,阿里采购的天蝎机柜。其设计特点为机柜标准为44U标准机柜,分为上中下三个空间,1-20U和25-44U是计算节点的安装位,所以能装40台左右服务器。
U为机柜尺寸单位,为unit的缩写
服务器宽 19英寸
服务器厚度 1U = 4.445cm
机柜高尺寸以服务器厚度的倍数增加:
服务器机柜最大常规尺寸 42U
每个机架接入40台服务器
每台服务器的内存为24GB,磁盘为10×1TB=10T的SATA机械硬盘(15000转)或者10×160GB=1.6T的SSD固态硬盘
国内顶尖的数据中心最多可为一个机柜提供12KW的功率,而一个1U双路服务器的电源功率为500W左右。
常见网站PV(page views)数据:
PV是PC网站时代衡量一个网站规模的指标,直接翻译过来就是页面观看,常译为页面浏览量或点击量,因为一个web网站上每次用户点击都会导致页面变化,也即一个PV。
另外两个衡量指标也捎带介绍下:
UV, Unique Visitor,独立访客。访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。
IP,指独立IP数。00:00-24:00内相同IP地址之被计算一次。
一个网站规模怎么样,看这些统计的访问量就能看出来:
网站|日平均PV|时间
12306.cn |1900万 |2015年2月25
12306.cn |297亿 |2015年春运
weibo.com |PV值8000万 |2015年2月25
tmall.com |3亿5000万 |2015年2月25
taobao.com |12亿 |2015年2月25
京东 |2亿7000万 |2015年2月25
亚马逊中国 |2亿8000万 |2015年2月25
蘑菇街 |230万 |2015年2月25
知乎 |5200万 |2015年2月25
数据来源于http://www.alexa.cn/
部分引用资料:
大规模分布式存储系统:原理解析与架构实战
http://wenku.baidu.com/view/029214fe910ef12d2af9e714.html 服务器尺寸表
http://coderplay.iteye.com/blog/1485760 CPU cache
http://ifeve.com/cpu-cache-flushing-fallacy-cn/ CPU缓存刷新的误解
http://tech.hexun.com/2014-09-30/168994467.html 传统服务器噩梦 最新Smart Rack机柜解析
见微知著:腾讯数据中心开放活动随想 http://solution.zdnet.com.cn/2014/0925/3034961.shtml
关于麦芽面包 darkjune_think:
麦芽面包分享的是一个从小就以找一份用电脑干活的工作为目标的人的见闻,思考。那时还是89年,那时能见到的一份这样的职业是用王码打字。当然,现在这个目标实现了,而且是一份还算可以的编程工作。现在代码写的不多了,更多的是对工程实践的思考,对系统架构的思考。故事还在继续,分享仍然不断
微信订阅号: darkjune_think
如何订阅:
-
扫描下面的二维码,选识别二维码,选关注。