我们先来看一幅图:
这是一个食物链顶端进化及其成功的猫科动物汇总图。
写下本文源自于一个问题,即 :
- “宠物猫按照等比例缩放到老虎般大小,能战胜老虎吗?”
循着这个问题,我思考着和猫科动物类似的另一样东西,即Linux内核。我们知道Linux内核可以运行在小到瓶盖大小(甚至更小)的SoC上,也可以跑在几间屋子大小的超级计算机上,这种适应性使得Linux内核简直就是操作系统界的猫科动物!
问题是, 瓶盖上的Linux内核和超算上的Linux内核是同一个Linux内核吗? 举一个简单的例子,我们在瓶盖Linux内核有运行NUMA吗?它支持4096个SMP吗?
本文下面的内容旨在详细回答猫咪放大的问题,你会发现其不可逾越的限制背后的魔咒是重力,但是对于Linux内核我不会多谈,其思路和猫咪放大相一致,只不过是相反的方向,即Linux内核缩小限制背后的魔咒,是 单指令能耗 。
动物的等比缩放问题
虽然都是猫科动物,都长着一副相似的面容,但从图上我们可以看到,左上角的猫咪和右下角的狮子老虎,其身体构造远不是等比例的。猫咪的四肢显得细长,而狮子老虎的四肢显得更为粗壮,换句话说, 老虎并不是猫咪的等比例放大版!
那么, 如果强行假设猫咪等比例放大到老虎般的大小,会怎样? 答案是:
- 大猫咪将会被自己的体重压得动弹不得!
这是为什么?
答案很简单,一切根因在于 重力是单向朝下的,且对单位质量的作用力是固定的 g g g。 我们可以简单分析一下。
假设动物身体的密度均匀形状均匀,其尺寸用 S S S表示,比如 S S S衡量其身高,体长等,那么其体重 m m m取决于动物的体积,所以说,第一个结论是:
- 动物的体重和其尺寸的三次方成正比。
m ∝ S 3 m\propto S^3 m∝S3
考虑到重力向下的作用,支撑动物不至于坍塌的力即平行于水平面的动物截面支持力,这里暂时不考虑骨骼,我们假设动物密度均匀,那么截面面积越大,支持的体重就越大。那么第二个结论是:
- 支持动物不坍塌的力与尺寸的平方成正比。
m ∝ S 2 m\propto S^2 m∝S2
现在,很明显, S S S增长率一定的情况下,动物的体重的增加将远快于其本身提供的支持力的增加。无论再坚固的材料构成其躯干,总会达到一个极限平衡点,即动物的支持力不足以支撑自己的体重而从坍塌成一坨肉泥。
那么,为了保持很大的体型,怎么办?很简单,增加支撑结构的截面积即可,换句话说,就是腿粗点就行。比较一下老虎和小猫咪的腿所占的身体比例就知道了,如果还是看不出来,那就比较一下大象和蚂蚁的腿所占的比例。
以上分析有两个直接推论,它们是:
- 地球上陆地生物存在一个尺寸的上限。
- 尺寸越小的动物,其‘力量/体重’的比值越大。
简单解释一下。
第一个推论很明显,只要动物用腿跑的,它就一定会有一个尺寸上限,即底盘截面全部是腿!
那么水里为什么可以存在巨大的生物呢?因为鱼鳔啊!水生物都有类似鱼鳔的器官,它们可以调节自身的密度 ρ \rho ρ,从而用浮力 ρ g V 鱼 \rho gV_鱼 ρgV鱼来抵抗重力。如果陆生动物身体也有个类似氢气球一样的东西并且可以自由充气放气,那么陆生动物也可以无视重力而自由伸展进化了。
第二个推论我们深有体会,比如我们是不是总是觉得很小的昆虫捏在手里力道很大,或者说惊讶于蚂蚁可以驼起自身重量几十上百倍的东西,而人连背起另一个人都费劲。
所以,别yy长成人这么大的蚂蚁的力量了,普适的物理定律决定了这是不可能的。蚂蚁长到人这么大,需要用比例上多得多的力量来支撑其自身,这个数学书很容易计算。
等比缩放问题我们已经搞清楚了,但有一个遗留问题,我们在分析的过程中,假设动物的密度是均匀的,但现实显然不是,动物不可能靠肉体来支撑其余同质的肉体,为了支撑肉体,必然需要密度更高的物质,我们知道,这是骨骼。
好了,进入下一个话题。
外骨骼和内骨骼
本节分两个主题,首先看看动物,然后我们再看看建筑。
动物
我们知道,动物基本上有两种支撑自身的方式(也许有别的方式,但不讨论),即:
- 甲壳类的外骨骼。比如昆虫,蟹类等。
- 骨头类的内骨骼。比如哺乳动物等。
我们发现, 甲壳类的动物均不会长的太大,内骨骼的脊椎动物反而会大得多。 也许有人会说史前存在的那些巨大的甲壳类昆虫明明就很大,但别忘了,同时期的脊椎动物体型更大!
这又是为什么?
我们把事情想得简单点,暂且先假设动物们只是活着,没有任何其它动作,那么不管是内骨骼还是外骨骼,其作用仅仅在于支撑自身而没有别的用处!那么很容易推导出以下结论:
- 外骨骼的重量正比于动物的表面积(假设外骨骼只是超薄的一层,厚度越大,曲线越趋于下凸)。
然而,我们知道,动物的表面积正比于其尺寸的平方,对于外骨骼动物而言,其比例系数非常大,接近甚至大于1.
但是真的必要吗?
外骨骼除了支撑体重之外,还有另一个作用,即防御,这种防御是被动防御,比如甲壳虫的背甲,螃蟹的外壳。按照我们的假设,如果动物仅仅是活着,没有任何其它动作,那么这部分功能显然是不必要的。
换句话说, 动物的尺寸越大,其外骨骼的额外负重比例就越大。
于是,放弃外骨骼,用更细但是密度更大的物质深藏在需要支撑的肉体内部来支撑体重,显然是一种更加划算的方案!这就是内骨骼。
内骨骼的意义在于,只需要在垂直方向做支撑即可,水平方向的力便可以解放出来留作他用。
为了讨论更加严谨,我们不得不为最初的假设增加一些约束,动物并不仅仅只是活着,即动物在多大程度上会遇到危险从而实施防御呢?如果没了外骨骼,那么被动防御便失效了,幸运的是, 内骨骼在水平方向解放出来的力可以带来另一种更加高效的防御,从而抵消了外骨骼被动防御失效带来的负面影响。 内骨骼动物活动更加灵活,可以实施主动防御。
灵活的内骨骼可以让动物采用尖牙利嘴实施主动防御,必要的时候还可以抄家伙抡起。
话分两头,都不能太绝对,这就是自然界进化的美妙。即便是内骨骼动物,也并非完全放弃了外骨骼被动防御的策略,对于比较重要的器官,还会实施类似外骨骼般的被动防御,比如保护大脑的骷髅,比如保护心脏和肺的排骨等等:
- 骷髅封闭状,既防冲撞,又防刺。
- 排骨散列状,防冲撞,但不防刺。
- 类似的还有盆腔,肩胛骨。
总之,效用第一,能省则省,都是为了抗衡重力!
采用内骨骼来支撑体重,其支撑力取决于截面积,以我们直立行走的人类举例,虽然我们的体重并不是很大,但是人类的腿骨相比其它动物在比例上是显得非常粗壮有力的。这是因为人类全靠下肢骨截面来支撑整个人的身体,而上肢基本上和支撑已经关系不大了,它更多承载的是一些人类特有的东西,比如各种手艺。这意味着,人解放了上肢。
我们用一个例子来体会上面的这段话。同身高体重的男女上肢力量差异巨大(男人臂力是女人的5倍),但是下肢力量却差异甚微(男人腿力一般超不过女人的20%),这说明了体重和下肢力量拥有明确的受制于重力的关系,但是解放的人类上肢却可以完全无视这条铁律。
建筑
我们谈谈建筑。
其实建筑和动物一样,也是一个需要借助某种材质支撑自身重量的东西,那么不外乎也是内骨骼和外骨骼的形式咯。
说起来确实是这样。在现代框架结构这种内骨骼建筑开始铺满整个世界之前,外骨骼建筑已经存在了几千年。像古希腊罗马的穹顶建筑,像希腊柱,罗马柱,以及中国特有的各种钩心斗角木建筑,甚至我们很常见的砖混小瓦房,小别墅,甚至金字塔(也许是均匀密度的,我没有去过),均属于外骨骼建筑。
我们发现,这类外骨骼建筑均受限于重量/尺寸的极限,和现代框架结构建筑相比,无法让人看起来非常宏伟。
论宏伟性,唯一的例外是,金字塔。为什么?
为了支撑自身的巨大的重量,唯一需要的就是增加水平截面的面积,但根据重力的单向性,支撑整体重量的支持力是向下逐层积累的,所以按照尺寸和重量的三次方关系以及尺寸和截面积二次方关系,金字塔注定就是那个样子,下面宽,上面越来越窄,而不能是一个类似纽约帝国大厦或者上海环球金融中心那样截面积近乎相等的直筒建筑。
在大自然中,我们可以看到,山峰就是一个绝好的例子。
现代建筑采用坚固的钢筋混凝土框架或者钢结构,彻底摆脱了柱子,穹顶,堆垒这种传统的外骨骼所受到的束缚,摩天大楼便平地而起!
然而,采用新材料和新结构克服了重力之后,另一个重力效应带来的问题却来了,这便是 人如何送上去 的问题,通过数学计算,当摩天大楼达到一定高度时,大楼的整个水平截面将完全被电梯井所占据,最终的结论是,为了突破这个极限高度,摩天大楼的外形依然要是类似金字塔的模样,只不过稍微瘦一点。
我们依然无法逃避重力的魔咒,用直筒的形式造其无限高的摩天大楼!
当然了,从太空往下建,而不是从地面往上建,用飞行器运送人员似乎是一个方案,但这是在解决反重力问题后的另一个话题。
关于摩天大楼的问题,详细的描述请参见下面的文章:
https://blog.csdn.net/dog250/article/details/88856847
现在收一收主题,让我们接着联想。
帝国和公司
地球上的陆生动物拥有不可逾越的极限体型,摩天大楼拥有一个不可逾越的极限高度,这背后的定律甚至决定了山峰的高度和形状,决定了金字塔必须是那个样子,现在我们知道,这一切的背后是重力的魔咒。
重力不偏不倚地作用于地球上一切有质量的物体,非常公平。
这里不禁延伸思考一下,决定一个公司的最大规模的又是什么呢?
公司先不说,我不是经理,我说的可能不对,但我喜欢历史,这方面我可以评说一二。
我们先看看古代同一时期同样技术水平下的几个欧亚大陆的帝国,大约公元元年前后,罗马帝国,帕提亚帝国,西汉,你会发现它们的版图大小几乎一致!到底是什么决定了这些大帝国没有进一步扩张成更大的帝国呢?
我想应该是信息和物资传递的速度和效率吧。
一个帝国维持边境所需要的最基本给养随着边境距离帝国中心的增加而增加,而运输给养的效率又随着距离的增加而降低,毕竟运送者也要消费,劳工要吃饭,这就会消耗本应该送到前线的军粮,车马会损耗,这也是显然的消耗。这就跟摩天大楼的极限高度问题是一样的。
把这一切总结起来,那就是 管理开销 。
克服重力是一种必须要付出的管理开销,克服物质运送过程的消耗率也是一种必须要付出的管理开销。
信息技术的发展速度远快于物质运输技术的发展速度,因此现代社会一般采用信息以光速传达。
远达不到光速,这个我懂,中美中间的RTT可以达到200ms+,这远远超过了两地之间的光速传播时间,这是因为处理延迟和网络拥塞导致的,我这里没有明确指出。和人类可感知的速度相比,200ms的RTT和光速无异。
加上就地取材的本地策略,很多国家建立了海外殖民地,很多公司在世界各地建立了分公司并从本地获取必须的人力和物力。
信息技术带来的改变似乎永久的摆脱了管理地域距离造成的管理开销,但似乎背后又多了一个魔咒般的 人月神话 。
是的,这就是 沟通成本。
以互联网公司为例,我们发现,无论是国内还是海外,大型互联网公司的工人总量几乎是同样数量级的,以国内BAT来讲,三家公司的工人数量几乎都维持在5万到8万之间,为什么不是50万到80万?如果真的一家互联网公司拥有100万员工会怎样?
…
正如支撑体重的骨骼本身也有重量,运输人员上楼的电梯本身也要占地方,输送给养的车辆本身也要消耗给养一样,100万工人挤在一家公司相互沟通的话,所有的时间将完全被沟通占据。
即便是10万到20万人的规模,冗长繁乱的会议,冗余经理的开销将会严重挤压有效产出。
也许,人月神话将会是最后一个难缠的魔咒了吧,但它和重力魔咒,光速魔咒不同,人们普遍认为人月神话的魔咒是可以克服的,它不像重力,光速一样是个看起来 客观 的限制,人们天真地认为沟通成本是可以 主观 控制的。但其实这是经理的想法,而且是错误的。这背后的原理揭示了 复杂网络 的动力学原理,这些本质特征,足以解开一切谜题。
1990年代,亚细亚公司的倒闭,可以很好诠释 在不改变 “支撑材料” 的情况下,自身体重是如何压垮自身 的,同时,如果不从根本上进行变革,降维打击将会让很多公司…举个例子,说说算力,如果某公司I-从硬件芯片级别取得了突破,某公司B-自诩的浩荡算力岂不就成了笑话?
换到动物体上,如果某种动物装配了密度100倍的内骨骼,会怎样?
留着这个话题,过一阵子,咱们再好好聊聊。当然了,经理并不知道我在说什么,经理可能觉得我在牵扯项目管理,但并不是,所以这不是经理感兴趣的话题。
浙江温州皮鞋湿,下雨进水不会胖。