谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了
作者 | 局长
本文经授权转自开源中国(oschina2013)
近日,Arm 宣布了其即将到来的新产品 Neoverse N1 平台和 E1 CPU。
https://www.anandtech.com/show/13959/arm-announces-neoverse-n1-platform
据官方介绍,这两款产品实现了对基础架构性能的巨大提升。Arm 表示他们已在移动设备领域取得了不错的成绩,但因为整体性能的一些不足,所以未能在服务器市场占有一席之地。不过他们一直在努力提升性能,以将其市场从移动设备扩大到服务器。为实现这一目标,Arm 在2018年做了很多的工作 —— 推出了堪称性能巅峰的全新 Cortex A76 微架构,而这两款即将发布的产品,毫无疑问正是承载了 Arm 进军服务器市场的宏愿。
没成想 Arm 宣布的这则消息引起了 Linux 之父 Linus Torvalds 的兴趣。他在 realworldtech 网站报道 Arm 即将推出面向服务器的产品的帖子中进行了回复:
https://www.realworldtech.com/forum/?threadid=183440&curpostid=183486
大意是 Linus 对 Arm 的说法持保留态度,不过他也坦陈 ARM 确实比以前有了很大的进步。
看到 Linus 的回复,一位名为 Michael S 的用户回复了这么一句话:“Linus is the ultimate unixoid. I paid attention that even less devoted unixoids are high on native development. For me, as one that drinks and breaths cross-development all his professional life, it sounds strange, but this mindset is not rare at all.”大意是认为 Linus 不甚了解交叉开发对大多数开发者的意义,而这恰好是 ARM 优于 x86 的地方。
正是这条回复,使得 Linus 开启了“战(pen)斗(zi)”模式,直言兼容 ARM 架构的处理器永远不会主宰服务器市场,并用“如果每个人都采用交叉开发的模式,那么必将影响产品的稳定性”这个论据以支撑自己的观点。
Linus 说到,某些人认为了有了“云”之后,指令集架构变得不再那么重要了。Linus 表示这根本就是在扯淡,因为如果你在 x86 上开发程序,那肯定希望部署在 x86 上。这就意味着你会愿意为 x86 架构的云主机支付更多的费用,因为这能保证在本地环境开发的程序在云中执行也会有同样结果。反过来,这就意味着云厂商最终将从他们 x86 架构的云主机赚到更多的钱,也就是说,他们将优先考虑 x86,而选择将 ARM 的产品调到更低的位置。x86 海量的用户以及用户对其的依赖性,使得 x86 成为了无可争议的服务器之王。
“所以,你还不能理解为什么 x86 能统治服务器市场吗?” Linus 说道,
Linus 还表示,ARM 的价格虽然便宜,但它的这个价格优势永远不会出现在 ARM 服务器上 —— 除非其使用者的数量足够大。而就目前看来,Arm 所提供的每个 ARM 服务器不仅速度慢,而且价格比 x86 更贵。
最后,Linus 依然坚持自己对交叉开发的观点,他认为交叉开发主要是针对那些性能比较差的平台,意义不大。只要目标主机强大到足以支持原生开发,没人会选择交叉开发。
对于 Linus 的这番言论,Redis 创始人 Salvatore Sanfilippo(网名:antirez)似乎有不同的声音,他在 Hacker News 的一篇帖子中发表了自己的看法:
https://news.ycombinator.com/item?id=19225678
antirez 表示自己正努力将 ARM 作为 Redis 的主要架构,恰好 Redis 中的一段底层代码仅可在 ARM 上运行,并且所有测试都可以通过,没有任何稳定性的问题。为此,他并不同意 Linus 的观点。
结合大多数开发者对于此事的回复,他们基本都赞成 antirez 的观点,普遍都认为 Linus 的看法在过去可能是正确的,但他未能预见到未来变革的可能性。根据最新的消息,苹果可能最快明年推出使用 ARM 芯片的 Mac,微软也已为 Windows 10 的应用开发提供对 ARM 的支持。总而言之,他们认为 ARM 的前景未来可期。
对于这次关于 x86 和 ARM 的争论,你又有怎样的看法?欢迎留言交流。
热 文 推 荐
☞ 被V神点赞, 我是如何用五子棋打败以太坊排名最高的应用的? |人物志
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"