*Nix and Win32 Kernel
MeetBSD CA 2012流水账
昨天是会前的开发人员峰会,参加的人基本都是 src/ committer。我参加的讨论是 安装、虚拟化和存储。关于安装程序,目前基本的共识是 bsdinstall 需要重做(基本上 bsdinstall 是个 drive-by commit,作者现在态度是管杀不管埋,bug很多),而先前 Devin Teske 所做的 bsdconfig (目前未接入 world 联编,试了一下太 XX 复杂和强大了)和 DruidBSD 有很多东西可以添到安装程序中,而一票 committer 也已经为他撑腰,所以应该问题不会太大。
阅读全文…FreeBSD 9.1-RC3
总算是 命名了……现在 re@ 已经开始拒绝所有的变动请求,包括前几天的 High Point Technologies 驱动更新。不出意外的话,两周之内应该会正式 release 了。
参与评论LSI SAS HBA固件
最近我厂对 LSI 6Gb/s SAS HBA 的驱动 (mps(4)) 进行了改进,令其可以在 FreeBSD 环境中进行固件刷写操作。目前最新的固件版本是 14,这个版本修正了目前已知的全部问题。
以前一直没有太注意,这类 HBA 卡上可以用两种固件。一种是 IT (initiator target) 固件,这类固件只提供HBA功能;另一种是 IR (integrated RAID) 固件,这类固件提供集成 RAID 功能。对于我们的应用来说,显然希望用 IT 固件,因为它的代码量要少得多,而由于减少了包含校验的冗余,卡本身的 RAID 功能在 ZFS 环境多数情况下都是有害的。
阅读全文…Asus笔记本安装 FreeBSD 笔记
祸不单行。继 老婆 笔记本坏掉之后,我的也在周一突然坏掉了。因为已经过保,找来 Dell 的维修手册做了初步诊断之后认为是主板问题,简单尝试了下没有修好,所以找老板商量,暂时买了一台 Asus G75VW 来用。
阅读全文…作弊条:shell可用,但没有 ls 时如何列出文件
常见的场景是由于某种原因 ls
无法使用(内存不足、动态连接库丢失等等)。
因为 shell 通常可以做 *
扩展,所以我们可以用:
echo *
来列出当前目录中的文件。
参与评论FreeBSD 的 strlen(3)
之前只有一篇关于较早版本的 strlen(3) 实现的笔记,这里补上我在 2010 年做的新增改进。
与 Pascal 等语言不同,C 的字符串并不保存串的长度,而是在字符串末尾以 nul 字符(’\0’)来表示字符串结束。这个设计决策是上世纪 60 年代作出的,有都市传说是为了省几个字节的空间,不过我个人认为也可能是因为汇编里面到处都是判断是否碰到了 0 的操作。不管怎么说,这个设计令 strlen 变成了一个 O(n) 的操作。
阅读全文…delphijfork 9.0更新
可以在 这里 下载。
和过去一样,风险自担 USE AT YOUR OWN RISK!
这个版本 (20120402) 和上一个版本 (20120114) 相比的改动:
- 集成了近期 ZFS 的全部可靠性和性能改进;
- 增加了允许 jail 中挂载 ZFS 的功能;
- mps(4)性能改进;
- 对 ULE 调度器的重要性能改进(支持超线程的处理器上许多测试可看到 10%-15% 的改善);
- 对 Intel TurboBoost 技术的支持(在需要时可将 CPU 频率临时提高到标称值的 110%);
- 对交换设备热拔时的可靠性改进;
- 对虚拟内存子系统的性能和可靠性改进;
- 优化了 rtld-elf 的内存占用【注意,必须配合 FreeBSD 9.x 内核使用,如果从 FreeBSD 8.x 或更早版本升级,请确认在 installkernel 之后重启过系统】;
- 新增了 posix_fadvise(2) 系统调用;
- 对于 SU+J 的若干可靠性改进;
- 对 tmpfs 的性能和可靠性改进,增加了 NFS export 支持;
- 为 msdosfs 和 smbfs 增加了 Unicode 支持;
- 为 PCIe 增加了 4GB 边界限制,这项变动消除了许多潜在的数据损坏问题;
- 其他若干小改进。
全部改动来自 -CURRENT 或 -STABLE,并已经做过至少两周的疲劳测试。
阅读全文…delphijfork 9.0
可以在 这里 下载。
和过去一样,风险自担 USE AT YOUR OWN RISK!
和 FreeBSD 9.0-RELEASE 相比的改动:
- 修正了一组 tmpfs 的 bug;
- 针对 nullfs、 devfs 的可靠性改进;
- “skeljail”;
- top(1) 默认显示每个CPU的占用比例;
- 针对 powerd 的多处理器支持;
- 对 IPv4 流量分 IP 进行统计【注意,由于上锁开销,此改动会略微降低IPv4性能】;
- 重启时设置 watchdog;
- 改善 csh 可用性配置;
- 预设将共享内存绑在主存内;
- Winbond watchdog 驱动;
- 对虚拟化环境默认不测试内存;
- 修正 NEW_PCIB 导致某些硬件问题的bug;
- 一系列 ZFS 相关改进;
- 减少 AHCI 上下文切换开销,高负载状态可达 3.8%;
- 一组 VM 性能改进,提高了异步操作以及 msync 情形的性能;
- 改善了 NFS 服务器预取的顺序读性能;
- 等等。
idprio和rtprio
记一笔,没啥特别。
Unix 系统的分时调度中,nice值(通过 nice(1) 来控制)是管理员告诉调度器的一个参数,这个参数令内核在考虑就绪进程优先级时,根据其值适当增大或减少执行绪的动态优先级。很明显,如果采用抢占式调度,如果执行绪等待时间较长,或者由于某种原因获得了优先级奖励(例如I/O导致的等待),即使有更重要的任务需要执行,内核还是会将这个执行绪调度进来并进行执行;反之,如果执行绪使用的 CPU 很多(计算密集型任务,如压缩等等),即使这个执行绪进行的就是最重要的任务,它仍然可能被置入休眠状态。
阅读全文…#lspe之Disks
比较感兴趣的项目是之前了解过但仔细看过的 FlashCache,这是 Facebook 搞的一个 SSD 加速模块,原理不复杂,是在文件系统下面做上一层集关联(set-associative)高速缓存,提供了LRU和FIFO两种淘汰方法。这次 Mohan Srinivasan 讲解的时候提到了以前公开发表的讲稿上没有的一个内容—-按线程id/线程组id去做的黑白名单,并对MySQL进行了修改,令其在扫描表时不做cache。从使用的角度,这个不失为一个不错的折衷方法。
阅读全文…