技术解析

Clear Linux 是不是用了自家的 Server 版本当生产环境?
0
1975-02-24 01:28:39
idczone
官网挂掉了,怎么那么想不开用个性能虽然激进,但是没怎么经过检验的当生产环境,而且所谓的优化貌似就是软件加点编译参数,懂得人都知道编译优化是有局限性的,比如 AVX 之类的,想要发挥复杂指令集全部优势,还得源代码上就对相应指令集做优化
502 的确出问题了
不过我看这系统跑分比其他第二名 Ubuntu (好像是的)多了快一倍

那点性能优势,别的发行版内核启动参数里把熔断和幽灵缓解补丁禁用,立马就追回来了

源代码上对相应指令集做优化是指?

打个比方,一个游戏服务器,需要通过虚拟地图控制 AI 的碰撞和路径,防止出现钻地,飞天,穿墙的情况,这就需要大量的浮点运算,在代码中把响应组件中对应计算添加 AVX512 的支持,性能就会指数级提升,类似指令集还有很多

我原来打算给个人服务器直接装 Clear Linux,然后通过 LXC 部署软件,试试水,结果官网都打不开,希望只是他们 web 服务代码有问题吧

那让编译器自己矢量化不行吗?

都说有局限性了,没有手动优化的性能好,要是编译器就能完全优化,那倒是好事,可惜效果有限

关于 SIMD 优化的技术我倒是一直想找人探讨一下,可惜很少看到讨论的帖子。
我之前在做一个视频滤镜的 SIMD 优化工作。有一块代码是数组里存的下标,然后用下标从另一个数组里找值,再存进寄存器里做后续的操作。当时我手动写完的汇编代码跑出来的速度远远比交给编译器优化的慢。我是百思不得其解,前后大概花了十几个小时进去研究为什么编译器跑出来的结果会比我的快。后来我发现之前写的代码,把数据存进数组然后做 _mm_load_si128,如果让编译器来优化的话,会直接重写成 _mm_insert_pi16,整段代码都被编译器完全打乱了,然后自动做了矢量化,最后每一帧的运行速度翻了一倍。后来写 AVX2 的时候,我发现要把几十行代码的循环整个 Unroll 成 16 遍,然后全部按照之前编译器优化的代码( _mm_insert_pi16 然后 _mm256_inserti128_si256 )来写才能勉强赶上编译器自动优化的 SSE,如果按照自己原先的优化(用 _mm256_load_si256 载入)来写的话慢出翔。
折腾了整整 3 天以后我把整个代码优化分支删了。去™的手动优化……

一般很少有人手动优化,甚至软件都是随便扒来的代码改改,不然就不会有渣优化软件了,但是有的项目确实有性能需求,就得手动优化了,付出和回报自己取舍吧,回报远不及付出就没必要费脑子,不如加硬件实在,Clear Linux 就使用了大量编译器优化,所以我想试试在同样禁用幽灵和熔断缓解补丁的情况下,各方面性能究竟比其他发行版好多少,然后个人服务器用一段时间试试稳定性,个人比较追求性能,在保证稳定的前提下

阿里云的 AliyunLinux,借鉴(参考?融合? 我也不知道该怎么形容这个词)了 ClearLinux 后,确实同实例下比其他操作系统跑分能高 15~20 个点

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服