Development

记一笔,关于 syslogd

| Development | #syslogd | #logging | #UTF-8 | #sysadmin

syslogd 的 -8 参数可以让汉字通过。以下摘自 manual page:

1
2
3
4
5
6
     -8      Tells syslogd not to interfere with 8-bit data.  Normally syslogd
             will replace C1 control characters (ISO 8859 and Unicode
             characters) with their "M-x" equivalent.  Note, this option does
             not change the way syslogd alters control characters (see
             iscntrl(3)).  They will always be replaced with their "^x" equiv‐
             alent.

不过这事有点坑人,为啥默认不 -8 呢?出于安全方面的原因吗?差点就开始改代码了……

参与评论

一个奇怪的移位计算结果

今天 强迫症 朱小瘦同学提到一个非常有意思的问题,一个32bit的无符号整数算术右移32个bit应该得多少?

我们知道算术右移一个bit相当于除2,所以一个32bit无符号整数除以 2322^{32},理论上,应该得0。

然而事实不是这样。测试显示在 x86 系统上,一个32bit无符号整数算术右移32个bit之后得到的是原数。例如下面这个测试程序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>

int
main(void /* int argc, char **argv */)
{
	unsigned int a = 0x5a5a5a5a;

	a >>= 32;

	printf("%x\n", a);

	return 0;
}

不启用任何优化的话,编译出来的程序得到的结果是:

5a5a5a5a

更进一步,我们将上面的测试改写为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>

int
main(void /* int argc, char **argv */)
{
	unsigned int a = 0x5a5a5a5a;
	int i;

	for (i=0; i<33; i++)
		printf("%x\n", a >> i);

	return 0;
}
阅读全文…( 本文约 881 字,阅读大致需要 2 分钟 )

sizeof(void *)和sizeof(int(*)(void))

以前一直没注意过这个问题,今天在邮件列表看到 Matthew Flemming 发的邮件才知道实际上 C 标准并不保证 sizeof(void *) == sizeof(int(*)(void))。不过,几乎所有的现代系统上这个等式都是成立的。

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

基于 Supermicro X7SPA-H (Atom D510) 的路由器(2)

续前。

除了硬件上直接采用的降噪措施之外,一些软件方面的配置也可以提高其效果。

首先是BIOS中的配置。风扇转速最低可调整为"Energy Saving"(即使用30%的频率)。启用Active Power State之后,可节省大约2W左右的耗电(这个选项的默认值是Disabled)。

然后是FreeBSD本身的配置。我个人采用的配置包括:

上述设置,除了ahci部分之外,可将系统闲置时的功耗降低到17W左右。

以下是实现中采用的loader.conf相关的部分:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

hint.apic.0.clock=0
hint.atrtc.0.clock=0
hw.pci.do_power_nodriver=3
hint.ahcich.0.pm_level=5
hint.ahcich.1.pm_level=5
hint.ahcich.2.pm_level=5
hint.ahcich.3.pm_level=5
hint.ahcich.4.pm_level=5
hint.ahcich.5.pm_level=5
阅读全文…( 本文约 4499 字,阅读大致需要 9 分钟 )

FreeBSD的textdump

最近遇到一些奇怪的bug,因为是对恢复时间有比较高要求的系统,所以顺便研究了一下用FreeBSD的textdump来代替更早前出现的minidump的方法。

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

测试SSL

| Development | #nginx | #Movable Type | #FastCGI | #SSL | #sysadmin

周末抽时间对网站做了一些调整。主要是把网站迁移到nginx上,不过遇到一些问题。Movable Type以FCGI::Spawn运行的时候,有时会反复出现先前的页面(例如,在mt.cgi上登录时,在提交登录之后仍会出现登录界面,而不是正常完成登录)。用ktrace看了一下FastCGI进程,结果发现之前看到的资料里面有相当多的小问题,但这个问题最终没有解决,暂时起了一个Apache来以cgi方式处理来绕过问题了。

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

FAST 2010第二天

今天的话题都是我比较感兴趣的。

开场的Keynote是eBay的Oliver Ratzesberger的 Enterprise Analytics on Demand。eBay每天的数据增量是50TB,而每天的数据处理量是50PB。这个presentation讲了相当多的规划方面的细节。

第一篇 DFS: A File System for Virtualized Flash Storage 介绍的是一个把卷管理(并不完全是:包含了Flash的wear leveling)和文件系统集成在一起的设计。FusionIO公司提供了一种直接在PCIe接口上插的存储设备。类似这样的设计,感觉是未来Flash文件系统必须要走的一条路。

第二篇 Extending SSD Lifetimes with Disk-Based Write Caches 是一个很有意思的设计:现时磁盘的反复擦写寿命要远好于Flash,因此,在磁盘上做一个顺序写入的日志,然后再择机将数据擦写回Flash。不过这篇论文讨论的具体方案还有一定的改进余地。

第三篇 Write Endurance in Flash Drives: Measurements and Analysis 是关于 Flash 寿命的衡量方法。

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

FAST 2010第一天

今天去参加了在San Jose举行的 FAST ‘10 第一天的 Tech Session,FAST是 USENIX 主办的关于文件和存储技术的学术会议。记上几笔。

开场的Keynote其实讲的还算精彩,不过感觉跟会议本身关系不大(讲的主要是发展中国家的手机等设备的发展),就不介绍了。

Build a Better File System and the World Will Beat a Path to Your Door部分。第一个是本次的获奖论文 quFiles: The Right File at the Right Time,具体来说是实现了同一份data(文件)的不同view(例如,将其表现成不同分辨率、码流等)的一种通用的存取方法。个人对Semantic File System持保留态度,不过这个talk还是可以帮助拓宽一下思路。

第二篇是介绍在 WAFL 类型的文件系统(具体举例是 btrfs) 中实现倒排索引的 Tracking Back References in a Write-Anywhere File System。具体来说,是在 inode -> 块这样的单向关系基础上,增加了块->inode(包括inode版本、回收时间等)的倒排索引。paper值得看但是性能比较做的稍微有些瑕疵(用做B-Tree的时间去比较在FS中查询的时间,而没有比较建立倒排索引之后更新与在block中插入信息所引起的开销,以及两者对应的查询时间)。

第三篇指出了内存故障可能导致的问题,指出 ZFS 的 end-to-end 检查只能检测出磁盘介质或控制器偶然故障引起的问题,而系统主存中存在的问题则无法发现并可能导致数据损坏甚至系统崩溃,并提出了在 ext2 FS 中增加运行时checksum检查的方案。这篇的试验方法和结论受到了很多人的质疑。

午饭时间。

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

网址缩短服务

| Development

前一段时间帮一个朋友做了一个非常简单的网址缩短服务,已经上线运行了一段时间,这里把当时设计的一些想法分享出来,等有时间我会把代码也发布出来,程序很简单,用 web.py 做的。

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

关系型数据库是为储存关系以及查询优化的

| Development

什么乱七八糟的东西都往数据库里面硬塞,该做的索引不做,不该做的索引一大堆,这再不慢等什么呢,天理难容嘛……

参与评论