作者in2 (圣诞玉兔 *^^*)
看板PttCurrent
标题Re: 改了奇怪的东西
时间Fri May 9 09:21:13 2003
※ 引述《in2 (圣诞玉兔 *^^*)》之铭言:
: 理论上尖锋时段每秒可以少掉上万个 system call ,
: 不过不知道有没有帮助就是了 ;p
: 晚上看看 ;p
原本程式的作法是, 使用者每按一个键,
就会透过 time(3)去拿一次当前的时间,
而 time(3)的作法是 (from /usr/lib/lib/libc/gen/time.c in FreeBSD 5.0-release)
#include <sys/types.h>
#include <sys/time.h>
time_t
time(t)
time_t *t;
{
struct timeval tt;
if (gettimeofday(&tt, (struct timezone *)0) < 0)
return(-1);
if (t)
*t = tt.tv_sec;
return(tt.tv_sec);
}
其中使用了 gettimeofday(2)
目前的作法是, 在 pttbbs.conf 中定义 OUTTA_TIMER 的话,
会由一只 daemon (目前暂时写在 shmctl utmpsortd 内)
定期取得当前时间, 写到 SHM->GV2.e.now 中,
而每个 mbbsd只去取 SHM->GV2.e.now , 不直接跑 time(0)
以上万个人, 每个人一秒钟按一个键的话 (而通常每个人一秒钟不只按一个键)
如此的作法可以每秒省下数万个 gettimeofday(2)
不过就目前看起来似乎对整个系统没有太大的帮助 ;x
--
※ 发信站: 批踢踢实业坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.30.143