前言 最近,在编译 CS144/minnow 的时候,遇到了一个报错。 cs144/util/debug.hh:3:10: fatal error: format: No such file or directory 3 | #include <format> 在 AI 的帮助下,这个问题非常好解决。切换下 gcc 版本即可。 # 当前…
前言 在高性能的网络转发中,比如 vpp/dpdk,通常对数据包采用批处理。批处理有很多好处:上下文的切换成本,会分摊给每一个数据包;CPU能一次性,将多个数据包所需的数据,加载到高速缓存中处理,减少了等待数据从主内存读取的次数,从而极大提升效率。 本文介绍,预取函数 __builtin_prefetch 。介绍它的使用和作用机理。 然后,做一个预…
前言 网络场景的代码,对性能,比较敏感。 在编写性能敏感的代码,还是要有所留意。 下面的内容参考自:1. Performance Optimization Guidelines — Data Plane Development Kit 25.11 Writing Efficient Code 内存 尽量不要在数据面,进行字符串的拷贝拼接。 字符串的…
前言 多生产者多消费者(multiple-producer,multiple-consumer) 的无锁(lock-free)环形缓冲区(ring-buffer),有其特定的使用场景。 在一些高性能场景下,锁是绝对不能使用的。不仅锁不能使用,为了避免 cache miss,每个工作线程会选择使用 per-thread data方式,进行数据读取与写…
前言 有时,在写测试代码的时候,需要生成随机数。 但是软件层面,无法实现正在的随机数。计算机密码学中,随机数是一个基础,可见: Dan Boneh的密码学。 本文简单归总下,日常如何在C/C++中生成伪随机数。 在C中生成伪随机数 相关链接:Generating Random Numbers in a Range in C - Geeks…
前言 UUID(Universally Unique Identifier) 是一个128位标识符。 前段时间,隔壁组要求我这边上传的数据包含uuid,并且是 uuidv7 版本。在 C 语言中,生成 uuid 比较常见的库是 libuuid(3) ,这个库支持uuidv1 和 uuidv4,不支持生成 uuidv7。网上找了下,也没看见比较知名的…