岁寒

岁寒,然后知松柏之后凋也!

Latest articles

性能之殇(七)-- 分布式计算、超级计算机与神经网络共同的瓶颈

分布式计算是这些年的热门话题,各种大数据框架层出不穷,容器技术也奋起直追,各类数据库(Redis、ELasticsearch、MongoDB)也大搞分布式,可以说是好不热闹。分布式计算在大热的同时,也存在着两台机器也要硬上 Hadoop 的“面向简历编程”,接下来我就剖析一下分布式计算的本质,以及我的理解和体会。分布式计算的本质分布式计算来源于人们日益增长的性能需求与落后的 x86 基础架构之间的矛盾。恰似设计模式是面向对象对现实问题的一种妥协。x86 服务器x86 服务器,俗称 PC 服务器、微机服务器,近二十年以迅雷不及掩耳盗铃之势全面抢占了绝大部分的服务器市场,它和小型机比只有一个优势,其他的全是缺点,性能、可靠性、可扩展性、占地面积都不如小型机,但是一个优势就决定了每年 2000 多亿美元的...

性能之殇(六)-- 现代计算机最亲密的伙伴:局部性与乐观

冯·诺依曼架构中,指令和数据均存储在内存中,彻底打开了计算机“通用”的大门。这个结构中,“线性数组”内存天生携带了一个涡轮:局部性。局部性分类空间局部性空间局部性是最容易理解的局部性:如果一段内存被使用,那么之后,离他最近的内存也最容易被使用,无论是数据还是指令都是这样。举一个浅显易懂的例子:循环处理一个 Array,当处理完了 [2] 之后,下一个访问的就是 [3],他们在内存里是相邻的。时间局部性如果一个变量所在的内存被访问过,那么接下来这一段内存很可能被再次访问,例子也非常简单:$a = [];if ( !$b ) { $a[] = $b;}在一个 function 内,一个内存地址很可能被访问、修改多次。乐观“乐观”作为一种思考问题的方式广泛存在于计算机中,从硬件设计、内存管理、应用软件到数据库均广泛运用了这种思考方式,并给我们带来了十分可观的性能收益。乐观的...

性能之殇(五)-- DPDK、SDN 与大页内存

上文我们说到,当今的 x86 通用微处理器已经拥有了十分强大的性能,得益于其庞大的销量,让它的价格和专用 CPU 比也有着巨大的优势,于是,软件定义一切诞生了!软路由说到软路由,很多人都露出了会心的微笑,因为其拥有低廉的价格、超多的功能、够用的性能和科学上网能力。现在网上能买到的软路由,其本质就是一个 x86 PC 加上多个网口,大多是基于 Linux 或 BSD 内核,使用 Intel 低端被动散热 CPU 打造出的千兆路由器,几百块就能实现千兆的性能,最重要的是拥有 QOS、多路拨号、负载均衡、防火墙、VPN 组网、科学上网等强大功能,传统路由器抛开科学上网不谈,其他功能也不是几百块就搞得定的。软路由的弱点软路由便宜,功能强大,但是也有弱点。它最大的弱点其实是性能:传统 *UNIX 网络栈的性能实在是不高。软路由的...

性能之殇(四)-- Unix 进程模型的局限

Unix 系统 1969 年诞生于 AT&T 旗下的贝尔实验室。1971 年,Ken Thompson(Unix之父) 和 Dennis Ritchie(C语言之父)共同发明了 C 语言,并在 1973 年用 C 语言重写了 Unix。Unix 自诞生起就是多用户、多任务的分时操作系统,其引入的“进程”概念是计算机科学中最成功的概念之一,几乎所有现代操作系统都是这一概念的受益者。但是进程也有局限,由于 AT&T 是做电话交换起家,所以 Unix 进程在设计之初就是延续的电话交换这个业务需求:保证电话交换的效率,就够了。1984年,Richard Stallman 发起了 GNU 项目,目标是创建一个完全自由且向下兼容 Unix 的操作系统。之后 Linus Torvalds 与...

性能之殇(三)-- 通用电子计算机的胎记:事件驱动

Event-Driven(事件驱动)这个词这几年随着 Node.js® 的大热也成了一个热词,似乎已经成了“高性能”的代名词,殊不知事件驱动其实是通用计算机的胎记,是一种与生俱来的能力。本文我们就要一起了解一下事件驱动的价值和本质。通用电子计算机中的事件驱动首先我们定义当下最火的 x86 PC 机为典型的通用电子计算机:可以写文章,可以打游戏,可以上网聊天,可以读U盘,可以打印,可以设计三维模型,可以编辑渲染视频,可以作路由器,还可以控制巨大的工业机器。那么,这种计算机的事件驱动能力就很容易理解了:假设 Chrome 正在播放 Youtube 视频,你按下了键盘上的空格键,视频暂停了。这个操作就是事件驱动:计算机获得了你单击空格的事件,于是把视频暂停了。假设你正在跟人聊 QQ,别人发了一段话给你,计算机获得了网络传输的事件,于是将信息提取出来显示到了屏幕上,这也是事件驱动。事件驱动的实现方式事件驱动本质是由...

性能之殇(二)-- 分支预测、流水线与多核 CPU

CPU 硬件为了提高性能,逐步发展出了指令流水线(分支预测)和多核 CPU,本文我们就将简单地探讨一下它们的原理和效果。指令流水线在一台纯粹的图灵机中,指令是一个一个顺序执行的。而现实世界的通用计算机所用的很多基础算法都是可以并行的,例如加法器和乘法器,它们可以很容易地被切分成可以同时运行的多个指令,这样就可以大幅提升性能。指令流水线,说白了就是 CPU 电路层面的并发。Intel Core i7 自 Sandy Bridge(2010)架构以来一直都是 14 级流水线设计。基于 Cedar Mill 架构的最后一代奔腾4,在 2006 年就拥有 3.8GHz 的超高频率,却因为其长达 31 级的流水线而成了为样子货,被 AMD 1GHz 的芯片按在地上摩擦。RISC机器的五层流水线示意图下图形象的展示了流水线式如何提高性能的。缺点指令流水线通过硬件层面的并发来提高性能,却也带来了一些无法避免的缺点。设计难度高,一不小心就成为了高频低能的奔四并发导致每一条指令的执行时间变长优化难度大,有时候两行代码的顺序变动就可能导致数倍的性能差异,这对编译器提出了更高的要求如果多次分支预测失败,会导致严重的性能损失分支预测指令形成流水线以后,就需要...

性能之殇(一)-- 天才冯·诺依曼与冯·诺依曼瓶颈

电子计算机与信息技术是最近几十年人类科技发展最快的领域,无可争议地改变了每个人的生活:从生活方式到战争方式,从烹饪方式到国家治理方式,都被计算机和信息技术彻底地改变了。如果说核武器彻底改变了国与国之间相处的模式,那么计算机与信息技术则彻底改变了人类这个物种本身,人类的进化也进入了一个新的阶段。简单地说,生物进化之前还有化学进化。 然而细胞一经诞生,中心法则的分子进化就趋于停滞了:38亿年来,中心法则再没有新的变动,所有的蛋白质都由 20 种标准氨基酸连成,连碱基与氨基酸对应关系也沿袭至今,所有现代生物共用一套标准遗传密码。 正如中心法则是化学进化的产物,却因为开创了生物进化而停止了化学进化,人类是生物进化的产物,也因为开创了文化进化和技术进化而停止了生物进化——进化已经走上了更高的维度。--...

软件工程师需要了解的网络知识:从铜线到HTTP(五)—— HTTP 和 HTTPS

HTTP 在以前的文章中,我大力推荐过《图解 HTTP》这本书。这是一本好书,但是 HTTP 协议本身是一个静态协议:跟 HTML 一样是一堆标记的集合,十分简单。 我们首先明确一个简单的事实:TCP 首部后面的部分,依然是一堆二进制数据,但是此时,采用 HTTP 协议解析这堆数据之后,其内容终于可读了。 HTTP 是什么 HTTP 是 WWW(万维网)拥有的标准协议,用于在客户端和服务器之间传递信息:服务器给客户端传递网页,客户端给服务端传递需要的页面的 URL,上传文件等。 前提 在讨论 HTTP 协议之前,我们必须首先认识到 HTTP 协议是站在巨人的肩膀上的: HTTP...

软件工程师需要了解的网络知识:从铜线到HTTP(四)—— TCP 和路由器

基础梳理 截至到目前,我们已经得到了三个首部:以外网首部、IP 首部、TCP 首部。 这三者看起来类似,实际却完全不同: 以太网首部是以太网技术提供的基础数据 package 功能:其数据包的长度是以太网独有的,和其他技术如光纤环网 FDDI 是完全不同的。实际上其他技术都不一定用的是 帧 这种基础逻辑单元,也不一定用的是这种简单的交换方式。 IP 是网络层协议,其存在的意义是规定一种跨物理实现的“虚拟网络”,让这个网络在上层看来是一致的。从这个意义上来讲,IP 层是 Internet 的本体。IP 协议是真正的全球统一的网络。每一台接入网络的计算机都有一个 ip 地址。 ...

软件工程师需要了解的网络知识:从铜线到HTTP(三)—— TCP/IP

那些首部 一个 HTTP 请求发送到服务器上,需要在头部按顺序加上 TCP首部、IP首部、以太网首部,这样才能保证这个 HTTP 请求的二进制数据能够在复杂的网络环境中得到可靠的传输:这三个首部在经过各种网络设备时会被大量修改以实现正确传输:以太网首部在经过交换机时并不会被修改,但是 IP首部 和 TCP首部 在经过路由器时会被修改。 TCP/IP 概述 当我们通过书本、博文等了解 TCP/IP 技术时,均将这两者作为两层来讲,似乎他们就是网络标准中的两个不同的虚拟化层级,但事实并没有这么简单。 我的虚拟化观 当初我学习《计算机组成原理》这本书的时候,我印象最深刻的就是里面对于计算机“虚拟化”的描述:只看计算机的硬件部分,其本质就是多层虚拟化:用逻辑电路、加法电路、积分电路、微分电路等模拟出算数逻辑单元、再和寄存器一起虚拟出运算器和控制器,配合由六个三极管组成一位的...

Discover, share and read the best on the web

Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!