Hello, World!

~ Enjoy Today ~

Solarflare X2522->X4522 报单路径的静默退化
一句话总结:当我们从 Solarflare X2522 网卡迁移到 X4522 网卡的时候,如果原样套用之前的代码,报单路径会出现静默退化,显式选择 Express datapath 来启用 CTPIO 能力 问题代码 背景是这样的,一开始我们是大量使用 X2522 网卡报单,走 EFVI 的 CTPIO,后面 Solarflare 发新卡了,就逐渐引入了 X4522,用 onload 自带的测试工具 eflatency 单独做端到端延迟测试,测下来比 X2522 快个 400ns,也没啥别的问题,就一点点灰度,引入生产环境了(详细的测试数据放在文末)。 复用了之前 X2522 的代码,报单、撤......
Exablaze Exanic X25 网卡介绍
Exablaze Exanic X25 Exanic X25 是目前金融交易领域常见的一款 FPGA 加速网卡,通常被用在行情接收侧用极致的速度接收来自交易所的行情组播(交易侧几乎已经被 Solarflare 一统天下了)。 X25 其实还有一个名字,K3PS (Cisco Nexus K3P-S FPGA SmartNIC),Exablaze 是澳洲一家专门做 HFT 网络设备的公司,后面被 Cisco 收购了,Cisco 收购之后就给 X25 改了个新名字叫 K3PS, 甚至现在卡上面没有任何一个地方印了 X25 的字样,不过大家仍然习惯叫它 X25~ 虽然 Exablaze 网卡线被收购......
不解剖,也能看懂大脑 —— 用外部视角解读你的思维世界
当我们谈起大脑时,很多人第一反应就是复杂的解剖图:沟回纵横、名字拗口,好像非得读过医学教科书才能懂。可事实上,大脑也可以用一种“外行能看懂”的方式去理解。就像看一座城市,不必钻进地下管道或电线分布图,只要站在高处,分清大街小巷,也能明白这座城市的大体功能。 这篇文章,我想带你从外部视角来看看我们的脑袋:不解剖,不掉进术语的陷阱,而是把大脑当作一个生活中真实存在的“司令部”,逐块认识它。你会发现,额头......
一些有意思的C++代码
三行情诗 谁说我们写 C++ 的就不懂浪漫了: // 我的心必须通过"爱你"的约束才能实例化 template<typename Heart> requires loves<Heart, You> // 激情、忠诚、永恒置入爱的元组,这份爱在编译时就已确定,不会因运行时的变化而改变 // 是写在源码里的承诺,是嵌入二进制的誓言 constexpr auto my_feelings = std::tuple{passion, devotion, eternity}; // 在 C++ 的类型系统中,我们的未来被特化为永远为真,这是编译器都认可的事实 template<> struct future<us> : std::true_type { static constexpr auto value = forever; }; 不愧是我们写 C++ 的,写出来的情诗都能是零运行时开销的。 AND 下面这段代......
如何极致地压榨一颗 CPU 核心
通常当服务端工程师谈论 CPU 核心的时候,更多地时候在乎的是数量而不是质量,比如我们开发了一个 Java 服务的容器需要申请一个 4 核 32 GB 内存的套餐(4C32G),还开发了一个 Golang 服务需要 4C8G 的 quota(我真的不是在黑 Java),但我们绝大多数时候并不会关心底层的 4 个核心来自于 AMD 还是 Intel 品牌的 CPU, 更别说具体什么 Xeon 还是 EPYC 型号了。 因为大部分服务端的问题都可以水平扩容来得到解决,四颗核心不够了,那我们申请六颗核心就好了,......
数据的蒲公英——组播
组播与单播 组播(Multicast,又称群播、多播) 与单播 (Unicast) 都是数据传输的一种方式,如果要映射现实世界中的信息传递方式,单播可以类比为打电话,有人呼出电话然后有人接听,然后他们互相畅谈最后互道再见;而组播则更加类似于广播,电台的主播会在收音机的那一头说话,所有打开收音机的人都可以收到,你也可以随时关闭收音机,只能单方面的听到来自对方的声音。 虽然今天到处都是打电话的人,而我们已经很少能在身边看到广播......
动态链接函数调用是如何实现的
函数链接 根据函数在编译期间的链接方式, 我们可以将函数分为三种: 直接调用(Direct Call):这是最直接的一种方式,函数地址在编译时就已经确定,调用时直接跳转到目标地址。 静态链接(Static Linking):在编译时将库与程序合并,尽管在单个编译单元内不确定函数的具体地址,但在链接阶段会解析所有符号,最终生成的可执行文件包含所有必要的代码,无需依赖外部库。 动态链接(Dynamic Linking......