用户工具

站点工具


projects:syslogd

syslogd: 性能改进

目前问题

目前的syslogd是单线程程序,并使用阻塞I/O。这会导致其接收消息必须等待写(到文件)做完并返回,从而影响其性能。

改进方向

两种可能的实现。其一是将syslogd改写为使用异步I/O,另一种是将syslogd改写为多线程结构。

多线程结构设计

写方:

  • 每个socket使用一个线程;
  • 不需要fsync()的日志文件使用一个线程;
  • 需要fsync()的日志文件每个文件系统使用一个线程;

读方(问题):

  • 读循环使用kqueue?收到后dispatch(或,用cv唤醒对应facility的写线程?)
  • 队列满时如何淘汰?(或使用多个队列?)
/data/vhosts/wiki-data/pages/projects/syslogd.txt · 最后更改: 2010/02/03 09:03 由 delphij