软件技术人员需要对数字的敏感性

长假过完了,脑袋空转时间过长,严重不利于智商发育,所以写了这篇文章烧烧脑。本文通篇充斥了各种数字,图表,图画,坚持不住的允许半途而废,想脑洞开窍的还是要坚持,多培养对相关领域数字的敏感性。

为什么要看数字?

程序员每天要写代码,得益于摩尔定律,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

如何订阅:

  • 扫描下面的二维码,选识别二维码,选关注。

时间: 2024-12-12 12:22:33

软件技术人员需要对数字的敏感性的相关文章

(转)成为优秀技术人员的两点建议

原文链接:http://www.cnblogs.com/baiyanhuang/archive/2010/06/08/1754310.html 呃, 不要误会,这不是我给出的建议,我暂时还算不上“优秀”的软件技术人员. 是这样,这几天,从美国那边过来几个比较有经验的同事,因为相对来讲,中国这边的团队比较年轻,因此安排了一个“Open Forum” 的讨论会,让他们与中国的同事分享一下成长经验.他们一个是中国人,清华硕士毕业后去了美国,有10年的工作经验了:一个是美国人,有20年的工作经验. 其间

技术人员应对「考核」的一些思考

来这个公司实习已经半年多了,在年前经历了一次年终考核,最终对我的工作的评级是 C(及格-符合当前职位的工作),让我不禁思考自己在项目中的一些工作的问题,为什么我是C?是我做的不够好吗?或者说在哪里做的不够好? 从考核流程来看,基本上是 CTO 与 Team Leader 对团队成员的「年终总结与次年工作计划」进行Rank,个人狭义的认为「考核」的主要支持材料就是这个总结了. 他山之石 其他公司是怎么考核的呢?说实话我也不太清楚,刚入行,只能通过搜索了解,在网上了解到有以下几种:发精品博客.发论文

丹东市国土资源信息中心派专业技术人员外出学习培训心得

丹东市国土资源信息中心派专业技术人员外出学习 来源:丹东市国土资源局 作者: 时间:2015-12-08 10:25:00 丹东市国土资源信息中心根据工作需要,近日派出2名技术人员到中科地信(北京)遥感信息技术研究院学习.信息中心承担国土资源专项工作较多,专项工作技术性强.软件系统复杂多样,在日常工作中经常遇到难解问题,多项工作都是在干中学.学中干,遇到难题经常需要邀请其他技术单位做指导.根据这一实际情况,信息中心派2人到中科地信(北京)遥感信息技术研究院学习.该院是地理信息系统技术在地籍管理.

作为一个技术人员的折腾精神

看图说话: 一个看似简单的问题,下面一堆答复,没一个说到正经路上的,最后一个,完全"无视"提问者的问题,介绍起自己的高端的"技术探索"来.很多时候真的是万能的百度,甚至万能的谷歌都帮不了你,只能自己来. 我今天也碰上less在sublime下的高亮无效这个问题,搜半天没人答复,都是一句"装个less"就好了,可是装了我没好啊!没人说后面的情况. 最后提问者者终于解决了问题,各站尝试重装软件,重启电脑,发现原来是"装完后要把所有打开的窗口

技术人员的未来:做技术还是做管理?

一.如何确定自己做技术还是管理 从标题来看是个很简单很朴实的问题,大部分技术人员在工作3年.5年以后都会面临这个问题,如果没有面临,说明你平常思考的太少,或者你危机要降临了.本文讨论的是通常意义的计算机相关技术人员的个人职业发展规划,如果是个人创业或者其他目标追求不在此列,我只是描述大部分普普通通的计算机工程师的问题. 中国是个官本位思想很重的国家,所有主流意识认为能够当官或者做管理的人才是有出头的,才是有出息的,才是王道,才会被亲朋好友同事同学瞧得起,其实,不尽然. 我说点大块的,比如说,如果

技术人员,要学会关心别人

引语一:  Search for and together with our favorite and our love.  构筑美好的生活蓝图,是一场隐形的战斗.不像找工作那样, 有看得见的人将你挤下去,让你感受到压力和不安: 在这里,只有时间与你共同赛跑,要么与时间优雅共舞,要么被时间一点点挤向舞台的边缘. 引语二: 万事开头难, 只要静下心来,坚持去做了,总会渐入佳境的! 从埋头搞技术,到懂得人际交往交流的重要性, 对于技术人员来说, 是可喜的进步: 但做到这一步还不够, 要根本性地革除思

【转】测试工程师作为软件从业人员为什么一定要懂业务?

从事软件行业已经快五年了,最近换了份工作,入职新公司已经快一个星期了,这几天一直在培训公司业务,周围同事也经常告诫我一定要懂业务.业务,似乎一下子从来没有这么重要过?程序员其实最不喜欢的就是熟悉业务,文档很多,业务名词枯燥无味,甚至不能为程序员的职业生涯积累多少有用的东西,因为换个行业这些知识几乎都没有用了,远不如学习些新技术.框架等等有用.那我们程序员为什么要学习业务呢?业务知道是不是不重要呢?其实不是不重要,是非常重要.业务的重要性从以下几个方面来体现: 1.理解业务有助于程序开发人员更新准

技术人员应真正学会的第二课程

原文地址: http://club.alibabatech.org/article_detail.htm?articleId=20 作者:舒琴(阿里云开发工程师) 如果说掌握一门赖以生计的技术是技术人员要学会的第一课的话, 那么, 我觉得, 技术人员要真正学会的第二课,不是技术,而是业务.交流与协作,学会关心其他工作伙伴的工作情况和进展. 为什么这么说呢? 因为技术人员太容易陷入"孤岛"状态,更注重自己的工作任务的完成,忽视其他工作伙伴的工作,甚至一无所知. 我就一直犯这样的错误.我敢

技术人员职业规划(一)

几乎每个企业都需要技术人员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才:IT等高科技行业需要大量软件研发和设备维护的硬件工程师:房地产.建筑工程领域需要建筑设计师.土木工程师和施工技术人员.此外,不论是国企.民营企业还是外资公司,都需要大量的基础技术工人.甚至很多在豪华写字楼office内工作的白领,从事的工作都是和技术相关的. 不过,一个严峻的现实是,大量的技术类人员对自己的职业定位和职业生涯规划显得非常迷茫和困惑.中国有句古话:劳心者治人,劳力者治于人.与管理类岗位相比,技