Performance

FreeBSD 上的 nginx kTLS 支持

昨天,FreeBSD 13.2 正式发布了kTLS 是在 FreeBSD 13.0 中由 Netflix 赞助的新功能, 过去,TLS/SSL 应用程序对于通讯内容的加解密通常是在用户态进行的,这样一来, 系统在读取出数据和发出数据之前需要进行额外的上下文切换,并在内核和用户地址空间之间来回复制缓冲区来满足加解密的需要。 有了 kTLS 之后,内核可以在 sendfile(2) 时直接在内核上下文中完成加密和填充到网络协议栈的操作,从而减少了上下文切换和不必要的复制操作。

阅读全文…( 本文约 832 字,阅读大致需要 2 分钟 )

记录一下之前对 fsck_msdosfs(8) 的改进

疫情之前,娃在周末会去某个才艺班,上课的时间我觉得实在是比较无聊, 于是就带上笔记本坐在星巴克做一些较小规模的代码清理工作。 最终,我利用这些碎块化的时间完成了对 FreeBSDfsck_msdosfs(8) 的核心代码的算法进行了改进,使其需要的内存用量变成了原先的 11281 \over 128, 这里稍微记一下当时的一些思路。

阅读全文…( 本文约 3370 字,阅读大致需要 7 分钟 )

dd的一种用法

| *nix and Win32 Kernel | #dd | #shell | #performance | #ZFS | #CLI

这个方法我最早是在 佐藤 広生第13回 FreeBSD勉強会 上做的 《ZFSの活用とチューニング》 演示幻灯片上看到的,当时没想太明白,而后来想明白了也没记下来。今天想起来了就先记上一笔,备忘。

阅读全文…( 本文约 887 字,阅读大致需要 2 分钟 )

启用 SPDY

| Security | #SPDY | #nginx | #HTTPS | #performance

之前 Frank 同学提到了这个问题,所以今天花了些时间来配置。 nginx 对 SPDY 的支持是一项比较新的特性,只有在 1.3.x 版本以上才支持。FreeBSDnginx-devel 默认并不启用 SPDY,需要在 make config 的阶段启用。

阅读全文…( 本文约 131 字,阅读大致需要 1 分钟 )

nginx的https压缩

| Security | #nginx | #HTTPS | #compression | #SSL | #performance

官方版本的 nginx 在 https 的时候是不对流量做压缩的,具体原因在这里这里 有解释,它会增加半兆的连接内存开销。

启用 https 压缩除了需要 nginx 本身做少量修改(例如去掉 if[n]def SSL_OP_NO_COMPRESSION 部分的语句块)之外,还需要 OpenSSL 本身编译了加密支持。FreeBSD ports 的 security/openssl 预设启用了 ZLIB 扩展,但基本系统目前没有(由于 zlib 是很大的一片代码,也许需要做了 Capsicum 处理之后才可以放进来用)。

阅读全文…( 本文约 286 字,阅读大致需要 1 分钟 )

FreeBSD 的 strlen(3)

之前只有一篇关于较早版本的 strlen(3) 实现的笔记,这里补上我在 2010 年做的新增改进。

与 Pascal 等语言不同,C 的字符串并不保存串的长度,而是在字符串末尾以 nul 字符(’\0’)来表示字符串结束。这个设计决策是上世纪 60 年代作出的,有都市传说是为了省几个字节的空间,不过我个人认为也可能是因为汇编里面到处都是判断是否碰到了 0 的操作。不管怎么说,这个设计令 strlen 变成了一个 O(n) 的操作。

阅读全文…( 本文约 1364 字,阅读大致需要 3 分钟 )

delphijfork 9.0

| Kernel | #FreeBSD | #kernel | #customization | #performance | #ZFS

可以在 这里 下载。

和过去一样,风险自担 USE AT YOUR OWN RISK!

和 FreeBSD 9.0-RELEASE 相比的改动:

参与评论

idprio和rtprio

记一笔,没啥特别。

Unix 系统的分时调度中,nice值(通过 nice(1) 来控制)是管理员告诉调度器的一个参数,这个参数令内核在考虑就绪进程优先级时,根据其值适当增大或减少执行绪的动态优先级。很明显,如果采用抢占式调度,如果执行绪等待时间较长,或者由于某种原因获得了优先级奖励(例如I/O导致的等待),即使有更重要的任务需要执行,内核还是会将这个执行绪调度进来并进行执行;反之,如果执行绪使用的 CPU 很多(计算密集型任务,如压缩等等),即使这个执行绪进行的就是最重要的任务,它仍然可能被置入休眠状态。

阅读全文…( 本文约 676 字,阅读大致需要 2 分钟 )

netmap进 -CURRENT

| Kernel | #netmap | #FreeBSD | #kernel | #networking | #performance

近日, netmap 已经正式进入 -CURRENT (r227614)。目前联编带 netmap 的内核需要做下面的操作:

% cd /usr/src/sys
% patch -p0 < dev/netmap/head.diff

然后在内核联编配置中加入:

阅读全文…( 本文约 259 字,阅读大致需要 1 分钟 )

#lspe之Disks

今天去 Y! 参加了 #lspe 的一个交流会。

比较感兴趣的项目是之前了解过但仔细看过的 FlashCache,这是 Facebook 搞的一个 SSD 加速模块,原理不复杂,是在文件系统下面做上一层集关联(set-associative)高速缓存,提供了LRU和FIFO两种淘汰方法。这次 Mohan Srinivasan 讲解的时候提到了以前公开发表的讲稿上没有的一个内容—-按线程id/线程组id去做的黑白名单,并对MySQL进行了修改,令其在扫描表时不做cache。从使用的角度,这个不失为一个不错的折衷方法。

阅读全文…( 本文约 621 字,阅读大致需要 2 分钟 )