2014-07-13 16:21 GMT+08:00 Rainer Gerhards <[email protected]>:
> Did you read my reply?

Yep, thank you for your suggestion. It looked like liblogging doing
exactly what I want it to be.

According to man page SYSLOG(3), the fuction syslog() are specified in
SUSv2, POSIX.1-2001, and POSIX.1-2008. It's a little sad that POSIX
didn't designed it (syslog() function) as a local message tool. It
seems that syslog() must work with a socket, which is not an ideal way
to handle local log messages IMO ...
As I can see, nevertheless, there are currently plenty of applications
using syslog as just a local log message mechanism. But in it's heart,
syslog didn't seem to be designed for local log at all... Which made
me try to discover another logger.

>
> Sent from phone, thus brief.
> Am 13.07.2014 09:53 schrieb "Justin Lee" <[email protected]>:
>
>> 2014-07-13 3:31 GMT+08:00 David Lang <[email protected]>:
>> > On Sat, 12 Jul 2014, Justin Lee wrote:
>> >
>> >> Hello List,
>> >>
>> >> I noticed that local messages are passed by socket rather than
>> >> directly written to log files. The evidence is as follows:
>> >
>> >
>> > Yes, this is how syslog works.
>> >
>> >
>> >> Since log mechanism is an important infrastructure of many programs,
>> >> it is supposed to be as fast as possible. So do we have some
>> >> configurations or settings in rsyslog which make local messages
>> >> written directly into log files without passing through socket?
>> >
>> >
>> > actually, writing to disk can be slower than writing to a socket, so it's
>> > not clear that it's a performance win to write to disk directly.
>>
>> I think that writing to disk is supposed to be the final step of
>> rsyslogd in processing local messages. After all, we couldn't see the
>> messages in log files if rsyslogd didn't write to disk at all, right?
>> But in addition to disk writing, use of socket by syslog to transfer
>> local log messages introduces extra CPU time or memory to do the
>> following things:
>>
>> 1. To handle socket related stuff, such as copying log messages in and
>> out of socket buffer. Buffer copying introduces overhead.
>>
>> 2. We need a thread or daemon process (rsyslogd) to listen to and
>> receive log messages from the socket. It increases the memory
>> footprint of our log infrastructure because of the daemon process
>> itself.
>>
>> 3. At least one context switch is required to transfer a log message
>> from user program to rsyslog daemon, because user program and the
>> syslog are in two different processes. Most context switches flush the
>> CPU pipeline and hence affecting efficiency.
>>
>> 4. Including a daemon process in mediating log affairs makes message
>> logging dominated by kernel's scheduling policy and number of running
>> processes in the system. Because CPU resources and CPU time are shared
>> by all the processes running in the system, the more running processes
>> in the system the less CPU time a single process (rsyslogd in our
>> case) can get to accomplish its job.
>>
>> 5. Because all running processes in the system share the same CPU, the
>> kernel must execute each process in turn (let each process get a
>> chance to be executed) such that CPU time are divided and distributed
>> among all running processes. The order of process execution is
>> determined by kernel's scheduling policy. The execution order could be
>> like the steps below:
>>
>>     (1) a user program writes a log message to the syslog socket.
>>
>>     (2) the kernel decides to execute two other processes in the
>> system first before executing the rsyslog daemon since they have
>> higher priority or due to the scheduling policy.
>>
>>     (3) the kernel than finally execute rsyslog daemon so that the log
>> message sent by user program at step (1) is received by the daemon
>> from syslog socket.
>>
>> as more and more processes run in the system, the number of processes
>> get executed at step (2) could be increased. So the time of a log
>> message getting propagated from user program to rsyslog daemon becomes
>> longer and longer. And the latency to transfer a log message becomes
>> higher and higher. I think this kills the performance the most.
>>
>> 6. Log messages may need to stay in socket buffer for longer time due
>> the high latency which implies a bigger socket buffer is required
>> which implies a greater memory footprint. The case gets worse when
>> system loading is high and increase the risk of socket buffer overflow
>> and message loss.
>>
>> >
>> > then you have the problem of what happens to the log. If you just write
>> to
>> > disk, you throw away a tremendous amount of flexibility in determining
>> what
>> > happens to the log.
>> >
>> > If you send the log through the syslog infrastructure, there are a lot of
>> > things that you can end up doing with it.
>> >
>> > You can:
>> >
>> > combine the logs from differnet programs into one file
>> >
>> > split the logs from one program into multiple files
>> >
>> > filter the logs
>> >
>> > send the logs to a remote machine
>> >
>> > put the logs into a database
>> >
>> > etc.
>> >
>> >
>> >
>> > so having your program write directly to disk is less work overall for
>> the
>> > system to do, but it can be slower for your application, and it's far
>> less
>> > flexible.
>> >
>> > David Lang
>> >
>> > _______________________________________________
>> > rsyslog mailing list
>> > http://lists.adiscon.net/mailman/listinfo/rsyslog
>> > http://www.rsyslog.com/professional-services/
>> > What's up with rsyslog? Follow https://twitter.com/rgerhards
>> > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> of
>> > sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T
>> > LIKE THAT.
>>
>> Justin Lee
>> _______________________________________________
>> rsyslog mailing list
>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>> http://www.rsyslog.com/professional-services/
>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>> DON'T LIKE THAT.
>>
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T 
> LIKE THAT.
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to