从计算机的生物学现象“个体重复系统发育”谈起

ADMIN 2019-07-05
564

个体重复系统发育

(ontogeny recapitulates phylogeny)

生物界的个体重复系统发育的含义是:个体重复着物种的演化过程,在一个卵子受精之后成为人体之前,这个卵子要经过是鱼、是龟、是猪等阶段。

 

在胚胎发育的初期,胚胎形成长条形,因此称为鱼期。胎儿长出四肢,并分出头部,形状似龟,因此称为龟期。胎儿从龟期进一步发育成除了有四肢、头部外,还逐渐凸现所有器官,并能从母体中吸取杂食,因此称为猪期。

 

胚胎要经历鱼期(相当于鱼纲动物),龟期(相当于爬行纲动物)及猪期(相当于哺乳纲动物)等,这与动物进化过程中的几个重要阶段相吻合,顺序亦完全一致。

 

在计算机的历史中,每个新物种(大型机、小型机、PC机、手机、嵌入式计算机等)似乎都要经过计算机整体的进化过程。而这种重复发育的过程,往往是受到性能的制约


举例


第一代大型机内存有限,在1959年 ~1964年,IBM 7090只有128KB内存,该机器用汇编语言编程

 

随着时间的推移,在汇编语言宣告过时时,FORTRAN和COBOL语言的编译器已经足够好用,但第一个商用小型机(PDP-1)发布时,由于只有4096个18bit的内存,汇编语言又回来了。后来小型机有了更多内存后,高级语言也在小型机上流行起来。

 

80年代早期微型计算机出现时,第一批机器只有4KB内存,汇编语言又复活了,而现在PC机拥有大量的内存,使用C、C++、Java、OC等高级语言编程。

 

这个例子,可以看出,每个新物种(设备)似乎经历了计算机系统的进化路径,从低级语言到高级语言。而这种个体重复系统发育的原因,是性能的制约(计算能力、存储能力)


轮回现象(钟摆现象)

计算机世界也有轮回(常说的钟摆现象),这种轮回是由技术进步、性能提升导致的



在技术的变化影响了某个系统不同部分之间的相对性能时,情况就是这样。例如当CPU远快于存储器时,为了加速“慢速”的存储器,高速缓存是很重要的,某一天,如果新的存储器技术使得存储器远快于CPU,高速缓存就会消失,而如果新的CPU技术又使CPU远快于存储器,高速缓存就会再次出现。


计算中心的钟摆(计算资源从集中到分散到集中)

计算中心经历了

1)大机-集中

2)分布式-分散

3)云-集中

所谓合久必分分久必合



存储:微观看存储资源,在一起,分离,在一起

从1)直接插硬盘DAS 到2)存储服务器,再到3)超融合(vSAN)存储分布在各个PC机上。


存储服务器最大的作用是相对于一个大内存,起到缓存的作用,其目的是应对CPU发展太快,而磁盘的速度跟不上。


之所以超融合现在非常流行,是因为闪存的发展,闪存单位容量的价格已经和磁盘持平,而读的速度明显快于磁盘。所以用多个闪存虚拟出一个SAN成为了现实中的可能(注意:不是技术问题,而是现实问题、市场问题)。


语言

代码 从动态语言到静态语言 到动态语言

在1972 年之前,还没有静态语言,所有语言都是带有动态特性的函数语言。所有的语言都是为了某种专业用途而开发的,FORTRAN为了工程计算,LISP用于人工智能,COBOL用于处理商业逻辑。这些语言的用户往往不是程序员,而是各领域的工程师或科学家。

 

在70年代,诞生了C语言,主要目的是为了编写UNIX操作系统,C是高级语言、能够实现更多的功能,并且运行性能高、内存由程序员自己管理。在70年代,内存要以K计,主频仅有几MHz,硬件非常昂贵,操作系统和软件对于性能的需求很高,C语言就成为了程序员的最爱。

 

动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。随着硬件性能的发展,CPU可以让动态语言运行的足够快,内存容量也提高了上千倍,节约几M内存对于整个系统不会有太大影响,而软件的需求却越来越大,而且发展出了分布式架构,比起软件的开发难度和开发维护成本,硬件的性能问题就没那么重要了。完成同样的功能,用python或是ruby之类的动态语言,所需的代码量往往只有java的1/10,相比C/C++差距更大。

虽然开发系统软件仍然需要运行效率,要使用静态语言,而应用软件和服务的开发越来越适合采用动态语言。缩短程序员的培训时间、缩短开发周期更加重要。

 

一个C++程序员至少要学好几年,也不一定能把指针搞清楚,而python语言可能不用特意学,看一看别人的代码就学会了。


复活现象

技术的变化会导致某些思想过时并迅速消失,这种情形经常发生,但是技术的另一种变化还可能使某些思想再次复活


人工智能

人工智能曾经在20年前火过一段时间,但没有进行深度学习,所以应用场景比较少,现在深度学习又流行起来、其实人工神经网络是[CY1] 1943年就提出来了,但一直没什么应用,直到2016年才引起公众的重视,因为显卡能力提升了,显卡是用来做并行计算的,而深度学习用的就是并行计算。

 

虚拟机

上世纪60年代IBM就开发了虚拟机管理程序SIMMON和CP-40,一直在大机系列上支持虚拟机,但似乎并不流行。[CY2] 直到VMware在1999年发布了第一款x86虚拟机管理程序,虚拟机才进入大众的视野,并且那时候x86平台的硬件厂商并没有从硬件上支持虚拟化。之所以无人问津的虚拟化技术重回公众视野,是因为CPU能力提升了,一台机器能支持2个以上操作系统运行了。



计算机性能的中医现象

1

中医把脉是综合研判的过程

计算机性能是系统性工程,

 

2

中医,一病一诊,中成药大多数没什么药效,这个在中国70年代全国试药运动当中已经证实

计算机性能:没有通用的性能调优工具,只有通用的性能调优思路。


几年前有一个网友跟我说,想开发一款性能调优工具,跑一遍这个工具,性能问题在哪就知道了。我当时说,这是不可能的,对于某个产品,可以有这种工具来辅助分析,但对于整个是不可能有这种工具的,如果可行,那么多大牌厂商早就干了,等不到你来干。但那个网友还是比较执着的去干,好几年过去了,大家有在市面上看到过这种工具吗?


看中医需要老中医,所谓不治是中医

做性能调优也不是一招鲜就能学好的

 

中医里面有一句话“不治是中医“,意思是一个人如果得了病不去找大夫,最后的结果就相当于一个中等水平的中医给他治疗的结果。这说明什么呢?中医博大精深,不是随便什么人就能给人看病的,一定要找经验丰富的。

 

计算机也类似,计算机系统在硬件、网络、操作系统、系统软件(数据库、应用中间件、消息中间件、交易中间件)、应用等各个层面都可能有性能瓶颈

做性能测试或者性能调优的人,需要有各个方面的知识,这些知识不是一朝一夕能够掌握的。分析问题在哪个层面、大概哪个位置,如果这个方面不熟,还得找这个方面专家来解决。经常遇到性能调优把系统搞崩了的情况。

 

性能调优不能过度调优,某一个方面的性能优化了,但其他方面的性能降低了,过度调优反而适得其反。和是药三分毒有点类似。

 


文章转载自微信:性能测试与调优

最后修改时间:2020-05-08 00:07:17
文章转载自ADMIN,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论